当前位置: 首页 > news >正文

滨州网站建设sdshiya岑溪网站建设

滨州网站建设sdshiya,岑溪网站建设,搜索引擎优化是什么,江西通威公路建设集团有限公司网站数据转换与加载项目列表前言标签转换RGB标签到类别标签映射RGB标签转换成类别标签数据数据加载随机裁剪数据加载项目列表 语义分割项目#xff08;一#xff09;——数据概况及预处理 语义分割项目#xff08;二#xff09;——标签转换与数据加载 语义分割项目#x… 数据转换与加载项目列表前言标签转换RGB标签到类别标签映射RGB标签转换成类别标签数据数据加载随机裁剪数据加载项目列表 语义分割项目一——数据概况及预处理 语义分割项目二——标签转换与数据加载 语义分割项目三——语义分割模型U-net和deeplavb3 前言 在前面的文章中我们介绍了数据集的概况以及预处理在训练之前除了数据预处理之外我们还需要对于标签进行处理因为标签是以RGB格式存放的我们需要把他们变换成常见的类别标签并且因为语义分割问题是针对像素的分类在数据量较大的情况下容易内存溢出OOM所以我们往往需要重写数据加载类针对大量数据进行加载。 标签转换 RGB标签到类别标签映射 我们知道RGB图像的数据点有三个通道每个通道取值范围为0−2550-2550−255 即0−2550−255,0−2550-255 0-255, 0-2550−2550−255,0−255那么我们可以考虑这样一个思路我们设置一个长度为2553255^32553的向量这样就可以容纳所有像素的取值范围。在之前的文章中我们定义了VOC_COLORMAP和VOC_CLASSES对应着像素形式的类别和文字形式的类别 VOC_COLORMAP [[226, 169, 41], [132, 41, 246], [110, 193, 228], [60, 16, 152], [254, 221, 58], [155, 155, 155]] VOC_CLASSES [Water, Land (unpaved area), Road, Building, Vegetation, Unlabeled]那么我们构造一个voc_colormap2label函数通过enumerate遍历VOC_COLORMAP获取索引与像素类别并赋值colormap2label def voc_colormap2label():colormap2label torch.zeros(256 ** 3, dtypetorch.long)for i, colormap in enumerate(VOC_COLORMAP):colormap2label[(colormap[0] * 256 colormap[1]) * 256 colormap[2]] ireturn colormap2labelRGB标签转换成类别标签数据 通过上面的函数我们可以获得RGB标签到类别标签的映射关系那么我们在构造一个函数传入RGB标签数据colormap和RGB标签向类别标签的映射colormap2label返回值是类别标签。 def voc_label_indices(colormap, colormap2label):colormap colormap.permute(1, 2, 0).numpy().astype(int32)idx ((colormap[:, :, 0] * 256 colormap[:, :, 1]) * 256 colormap[:, :, 2])return colormap2label[idx]数据加载 随机裁剪 由于输入图像的形状不能确定并且有时图像太大会影响训练速度或者影响内存所以我们需要对于图像和标签进行裁剪我们调用torchvision.transforms.RandomCrop.get_params可以获取随机裁剪的区域这一步的操作是为了使得数据和标签的区域匹配然后我们使用torchvision.transforms.functional.crop可以进行数据和标签同步裁剪。 def voc_rand_crop(feature, label, height, width):rect torchvision.transforms.RandomCrop.get_params(feature, (height, width))feature torchvision.transforms.functional.crop(feature, *rect)label torchvision.transforms.functional.crop(label, *rect)return feature, label数据加载 我们简单介绍一下数据加载类SemanticDataset 函数名用途__init__用于初始参数设置normalize_image将图像设置成0-1范围内并进行normalizepad_params获取图像padding参数pad_image根据pad参数padding图像__getitem__通过索引获取数据__len__获取数据长度 数据加载类的主要的思路是加载图像和标签对于图像进行规范化除以255以及normalize如果图像过大进行裁剪如果图像过小进行padding对于标签我们调用之前的函数从RGB标签转换成类别标签 class SemanticDataset(torch.utils.data.Dataset):def __init__(self, is_train, crop_size, data_dir):self.transform torchvision.transforms.Normalize(mean[0.4813, 0.4844, 0.4919], std[0.2467, 0.2478, 0.2542])self.crop_size crop_sizeself.data_dir data_dirself.is_train is_trainself.colormap2label voc_colormap2label()txt_fname os.path.join(data_dir, train.txt if self.is_train else test.txt)with open(txt_fname, r) as f:self.images f.read().split()def normalize_image(self, img):return self.transform(img.float() / 255)def pad_params(self, crop_h, crop_w, img_h, img_w):hight max(crop_h, img_h)width max(crop_w, img_w)y_s (hight - img_h) // 2x_s (width - img_w) // 2return hight, width, y_s, x_sdef pad_image(self, hight, width, y_s, x_s, feature):zeros torch.zeros((feature.shape[0], hight, width))zeros[:, y_s:y_s feature.shape[1], x_s:x_s feature.shape[2]] featurereturn zerosdef __getitem__(self, idx):mode torchvision.io.image.ImageReadMode.RGBfeature torchvision.io.read_image(os.path.join(self.data_dir, images, {:03d}.jpg.format(int(self.images[idx]))))label torchvision.io.read_image(os.path.join(self.data_dir, labels, {:03d}.png.format(int(self.images[idx]))), mode)c_h, c_w, f_h, f_w self.crop_size[0], self.crop_size[1], feature.shape[1], feature.shape[2]if f_h c_h or f_w c_w:higth, width, y_s, x_s self.pad_params(c_h, c_w, f_h, f_w)feature self.pad_image(higth, width, y_s, x_s, feature)label self.pad_image(higth, width, y_s, x_s, label)feature self.normalize_image(feature) feature, label voc_rand_crop(feature, label,*self.crop_size)label voc_label_indices(label, self.colormap2label)return (feature, label)def __len__(self):return len(self.images)使用torch.utils.data.DataLoader批量加载数据 def load_data_voc(batch_size, crop_size, data_dir ./dataset):train_iter torch.utils.data.DataLoader(SemanticDataset(True, crop_size, data_dir), batch_size, shuffleTrue, drop_lastTrue)test_iter torch.utils.data.DataLoader(SemanticDataset(False, crop_size, data_dir), batch_size, shuffleFalse, drop_lastTrue)return train_iter, test_iter
http://www.sczhlp.com/news/192351/

相关文章:

  • 个人网站与企业网站广告公司简介怎么写
  • 淘宝客网站开源云服务器免费永久
  • 网站产品页模板wordpress主页删除
  • 做网站公司排行刷东西网站建设
  • 怎么给网站做背景汉服设计制作培训
  • 域名购买后网站搭建国家企业信用公示信息系统(江苏)
  • 网站正能量晚上免费网址不用下载专业做室内设计的网站有哪些方面
  • 昆明网站建设搜王道下拉什么网站招聘外国人做兼职
  • 官方网站页面尺寸网站上传
  • 江西南昌电子商务网站建设公司安卓商城
  • 最好用的企业网站cms高端定制网站建设
  • 图片网站的优化中文wordpress实例
  • PDF转图片工具:基于PyQt5的完整实现与深度解析 - 详解
  • MongoDB安装及使用
  • 银川市住房和城乡建设网站appstore下载免费软件
  • 二级目录怎么做网站网站运营需要哪些技术
  • 两个网站做反向代理免费海报制作模板
  • 免费一键生成logo网站天猫网站设计
  • 珠海建设公司网站国内全屋定制十大名牌
  • wordpress制作图片站门源网站建设公司
  • 大型网站建站公司手机网站建设 cms
  • 企业建站技术做加油机公司网站
  • 静态网站跟动态群晖 删除 wordpress
  • 网站开发一般要多少钱织梦网站访问量统计代码
  • t么做文献索引ot网站在线考试网站模板
  • 网站优化快速排名软件网页设计主要学什么内容
  • 魏县审批建设的网站深圳市住房和建设局李秀钗
  • 河北省建设信息中心网站上海互联网公司有哪些
  • 开发软件下载网站做网站对电脑要求高吗
  • 网站建设公司转型做什WordPress单页生成插件