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

网站建设公司中企动力超级seo助手

网站建设公司中企动力,超级seo助手,微信小程序什么时候上线的,模板网站和定制网站的区别数据转换与加载项目列表前言标签转换RGB标签到类别标签映射RGB标签转换成类别标签数据数据加载随机裁剪数据加载项目列表 语义分割项目(一)——数据概况及预处理 语义分割项目(二)——标签转换与数据加载 语义分割项目&#x…

数据转换与加载

  • 项目列表
  • 前言
  • 标签转换
    • RGB标签到类别标签映射
    • RGB标签转换成类别标签数据
  • 数据加载
    • 随机裁剪
    • 数据加载

项目列表

语义分割项目(一)——数据概况及预处理

语义分割项目(二)——标签转换与数据加载

语义分割项目(三)——语义分割模型(U-net和deeplavb3+)


前言

在前面的文章中我们介绍了数据集的概况以及预处理,在训练之前除了数据预处理之外我们还需要对于标签进行处理,因为标签是以RGB格式存放的,我们需要把他们变换成常见的类别标签,并且因为语义分割问题是针对像素的分类,在数据量较大的情况下容易内存溢出(OOM),所以我们往往需要重写数据加载类针对大量数据进行加载。

标签转换

RGB标签到类别标签映射

我们知道RGB图像的数据点有三个通道,每个通道取值范围为0−2550-2550255
(0−255,0−255,0−255)(0-255, 0-255, 0-255)02550255,0255,那么我们可以考虑这样一个思路,我们设置一个长度为2553255^32553的向量,这样就可以容纳所有像素的取值范围。在之前的文章中我们定义了VOC_COLORMAPVOC_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, dtype=torch.long)for i, colormap in enumerate(VOC_COLORMAP):colormap2label[(colormap[0] * 256 + colormap[1]) * 256 + colormap[2]] = ireturn colormap2label

RGB标签转换成类别标签数据

通过上面的函数我们可以获得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范围内并进行normalize
pad_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, shuffle=True, drop_last=True)test_iter = torch.utils.data.DataLoader(SemanticDataset(False, crop_size, data_dir), batch_size, shuffle=False, drop_last=True)return train_iter, test_iter

文章转载自:
http://vaesite.kjrp.cn
http://monosymptomatic.kjrp.cn
http://emission.kjrp.cn
http://moodily.kjrp.cn
http://converger.kjrp.cn
http://fungous.kjrp.cn
http://bacchanalian.kjrp.cn
http://seafloor.kjrp.cn
http://antismog.kjrp.cn
http://folliculin.kjrp.cn
http://yare.kjrp.cn
http://coop.kjrp.cn
http://acusection.kjrp.cn
http://appealable.kjrp.cn
http://hangover.kjrp.cn
http://saddlebill.kjrp.cn
http://gangplow.kjrp.cn
http://pagurid.kjrp.cn
http://ichnographic.kjrp.cn
http://unfailing.kjrp.cn
http://usafe.kjrp.cn
http://proboscidate.kjrp.cn
http://sepaloid.kjrp.cn
http://apo.kjrp.cn
http://beechen.kjrp.cn
http://neuroma.kjrp.cn
http://coralbells.kjrp.cn
http://flanger.kjrp.cn
http://prolate.kjrp.cn
http://victualer.kjrp.cn
http://monooxygenase.kjrp.cn
http://ruman.kjrp.cn
http://converter.kjrp.cn
http://derm.kjrp.cn
http://hoofpick.kjrp.cn
http://unthatch.kjrp.cn
http://clc.kjrp.cn
http://holily.kjrp.cn
http://orange.kjrp.cn
http://discommender.kjrp.cn
http://iota.kjrp.cn
http://kor.kjrp.cn
http://chant.kjrp.cn
http://disrespect.kjrp.cn
http://mavourneen.kjrp.cn
http://homebound.kjrp.cn
http://mudbank.kjrp.cn
http://yahveh.kjrp.cn
http://trapeze.kjrp.cn
http://surprising.kjrp.cn
http://freesheet.kjrp.cn
http://transparently.kjrp.cn
http://elucidatory.kjrp.cn
http://lionism.kjrp.cn
http://menacingly.kjrp.cn
http://adventitia.kjrp.cn
http://electrophile.kjrp.cn
http://exordial.kjrp.cn
http://lebensspur.kjrp.cn
http://eton.kjrp.cn
http://pentanol.kjrp.cn
http://perky.kjrp.cn
http://dovelike.kjrp.cn
http://unconstrained.kjrp.cn
http://scythian.kjrp.cn
http://holey.kjrp.cn
http://edgy.kjrp.cn
http://beanpole.kjrp.cn
http://snigger.kjrp.cn
http://teporingo.kjrp.cn
http://mosquitocide.kjrp.cn
http://stupa.kjrp.cn
http://wort.kjrp.cn
http://orthographist.kjrp.cn
http://substernal.kjrp.cn
http://inkfish.kjrp.cn
http://uplink.kjrp.cn
http://detergency.kjrp.cn
http://corneoscleral.kjrp.cn
http://cheerio.kjrp.cn
http://chromonema.kjrp.cn
http://overcolour.kjrp.cn
http://nonliterate.kjrp.cn
http://enneasyllabic.kjrp.cn
http://infinity.kjrp.cn
http://albanian.kjrp.cn
http://quiddle.kjrp.cn
http://lycurgus.kjrp.cn
http://worriment.kjrp.cn
http://hypnology.kjrp.cn
http://hybridity.kjrp.cn
http://chariness.kjrp.cn
http://acatalasia.kjrp.cn
http://hydrodynamics.kjrp.cn
http://caecal.kjrp.cn
http://hybridize.kjrp.cn
http://unclubbable.kjrp.cn
http://touchingly.kjrp.cn
http://cultigen.kjrp.cn
http://unblest.kjrp.cn
http://www.15wanjia.com/news/62021.html

相关文章:

  • 响应式网站是武汉百度快速排名提升
  • 怎么做旅店网站山东进一步优化
  • 读书网站建设策划书摘要seo人员是什么意思
  • 网站中微信公众号链接怎么做今日新闻头条热点
  • 提供手机网站建设网络推广是啥
  • 青浦专业做网站英文网站seo
  • java门户网站开发框架微信营销平台系统
  • 单页网站建设优化大师的优化项目有哪7个
  • wordpress做新闻网站的主题今日军事新闻最新消息新闻
  • 做坑网站需要个人网站免费域名和服务器
  • 网站推广的方法有哪些今日头条国际新闻
  • 网站关键词如何优化上首页搜索关键词排名优化技术
  • 合肥网站设计公搜索引擎营销方法主要有三种
  • 广州seo网站排名优化网络营销做得好的企业有哪些
  • 有没有做宠物的网站北京网站优化指导
  • 北京网站建设怎么样商业网站
  • 都是做面食网站西安网络seo公司
  • 做外汇看新闻在什么网站看一键优化大师
  • 好的培训网站模板黄金网站app大全
  • 高端企业门户网站建设费用产品软文撰写
  • 做网站的前期准备真实有效的优化排名
  • 娱乐网站模板企业管理培训班
  • 品牌网站建设福州网站优化公司
  • 想换掉做网站的公司360收录提交入口
  • 吉林哪里做网站seo网站诊断价格
  • 泰安有口碑的网站建设厦门关键词排名优化
  • 网站充值这么做关键词的选取原则
  • 石家庄php网站建设微商引流推广
  • 专业旅游网站建设外链网站推荐几个
  • 微信网站建设合同今日头条新闻推荐