【语义分割】数据增强方法(原图与标签同时扩增)

这篇具有很好参考价值的文章主要介绍了【语义分割】数据增强方法(原图与标签同时扩增)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、数据增强作用

   避免过拟合

   提升模型的鲁棒性

  提高模型的泛化能力

  避免样本不均衡的问题

2.、数据增强分类

可分为两类:在线增强和离线增强。这两者的区别在于离线增强是在训练前对数据集进行处理,往往能得到多倍的数据集,在线增强是在训练时对加载数据进行预处理,不改变训练数据的数量。

离线增强一般用于小型数据集,在训练数据不足时使用,在线增强一般用于大型数据集。

3、方法

比较常用的几何变换方法主要有:翻转,旋转,裁剪,缩放,平移转换,色彩抖动,尺度变换,对比度变换,噪声扰动,旋转变换;

比较常用的像素变换方法有:加椒盐噪声,高斯噪声,进行高斯模糊,调整HSV对比度,调节亮度,饱和度,直方图均衡化,调整白平衡等。

使用Augmentor模块增强

注意:
原图与标签图的后缀名必须保持一致,否则只标签图不会增强的

因为我的图像是由labelme标注的,且将其转化为voc的格式,转化后原图为jpg,原图为png,因为需要统一。统一方式如下:批量修改图像后缀名。

1、安装:
创建一个环境,然后输入安装命令,命令如下

pip install Augmentor

conda install Augmentor

显示安装成功,既可以继续了。

 2、使用:

语义分割任务需要同时对原始图和掩码图(mask)进行增强,因此,很多现有的深度学习框架中自带的图像增强工具都不能直接使用。但是通过Augmentor可以很方便的实现该功能。下面举例说明。将图像原图以及它们对应的掩码图,分别放在test1文件夹以及test2文件夹中。使用以下代码进行增强

原始图

语义分割数据增强,数据集,人工智能,算法

标签图

语义分割数据增强,数据集,人工智能,算法

#导入数据增强工具
import Augmentor

#确定原始图像存储路径以及标签图的文件存储路径,创建Pipeline实例p
p = Augmentor.Pipeline("originalImages")
p.ground_truth("Segmentationimages")

(1)旋转(rotate)

probability指定进行操作的概率大小,max_left_rotation, max_right_rotation指定向左向右最大旋转角度,最大值为25。sample表示从给定图像中生成指定数量的增强图像,可指定多个。

rotate操作默认在对原图像进行旋转之后进行裁剪,输出与原图像同样大小的增强图像。

p.rotate(probability=1, max_left_rotation=25, max_right_rotation=25)
p.sample(1)

(2)缩放(scale),但貌似只能等比放大

scale_factor表示缩放比例,只能大于1,且为等比放大。

p.scale(probability=1, scale_factor=1.3)

(3)翻转(flip)

左右翻转、上下翻转、随机翻转

p.flip_random(probability=1)   %随机翻转
p.flip_left_right(probability=0.5)   %左右翻转
p.flip_top_bottom(probability=0.5)    %上下翻转

(4)随机亮度增强/减弱(random_brightness)

min_factor, max_factor为变化因子,决定亮度变化的程度,可根据效果指定。

p.random_brightness(probability=1, min_factor=0.7, max_factor=1.2)   %随机亮度
p.random_color(probability=1, min_factor=0.0, max_factor=1)   %随机颜色
p.random_contrast(probability=1, min_factor=0.7, max_factor=1.2)   %随机对比度

(5)随机透视变形(skew)

magnitude表示变形程度。隐藏参数skew_type,值为``TILT``, ``TILT_TOP_BOTTOM``, ``TILT_LEFT_RIGHT``,  ``CORNER``,展开源码才可以看到。源码中采用randomly的方式从四种参数中选择,不需指定。

其中,``TILT_TOP_BOTTOM``表示只在顶部底部方向进行透视变形。

``TILT_LEFT_RIGHT``表示只在左右方向进行透视变形。

``CORNER``表示只在四角方向进行透视变形。

``TILT``包含上述方向的集合,即上下左右和四角的八个方向。
 

p.skew(probability=1, magnitude=0.8)

(6)随机剪切(shear)

剪切变换,max_shear_left,max_shear_right为剪切变换角度

p.shear(probability=1, max_shear_left=15, max_shear_right=15)

(7)随机裁剪(random_crop)

percentage_area表示裁剪面积占原图像面积的比例,centre指定是否从图片中间裁剪,randomise_percentage_area指定是否随机生成裁剪面积比。

p.crop_random(probability=1, percentage_area=0.8, centre=False, randomise_percentage_area=True)

(8)随机擦除/遮挡(random_erasing)

rectangle_area指定随机擦除面积的百分比。当然这个指定的是擦除面积的上限。

p.random_erasing(probability=1, rectangle_area=0.5)

(9)小块变形distortion

p.random_distortion(probability=0.8,grid_width=10,grid_height=10, magnitude=20)

完整代码:

import Augmentor


# 确定原始图像存储路径以及掩码文件存储路径,需要把“\”改成“/”
p = Augmentor.Pipeline("originalImages")
p.ground_truth("Segmentationimages")

# 图像旋转: 按照概率0.8执行,范围在0-25之间
p.rotate(probability=0.8, max_left_rotation=25, max_right_rotation=25)

# 图像左右互换: 按照概率0.5执行
p.flip_left_right(probability=0.5)
p.flip_top_bottom(probability=0.5)

# 图像放大缩小: 按照概率0.8执行,面积为原始图0.85倍
p.zoom_random(probability=0.3, percentage_area=0.85)

#scale_factor表示缩放比例,只能大于1,且为等比放大。
p.scale(probability=1, scale_factor=1.3)

#小块变形
p.random_distortion(probability=0.8,grid_width=10,grid_height=10, magnitude=20)

#随机亮度增强/减弱,min_factor, max_factor为变化因子,决定亮度变化的程度,可根据效果指定
p.random_brightness(probability=1, min_factor=0.7, max_factor=1.2)

#随机颜色/对比度增强/减弱
#p.random_color(probability=1, min_factor=0.0, max_factor=1)
p.random_contrast(probability=1, min_factor=0.7, max_factor=1.2)

#随机剪切(shear)  max_shear_left,max_shear_right为剪切变换角度  范围0-25
p.shear(probability=1, max_shear_left=10, max_shear_right=10)

#随机裁剪(random_crop)
p.crop_random(probability=1, percentage_area=0.8, randomise_percentage_area=True)

#随机翻转(flip_random)
p.flip_random(probability=1)

# 最终扩充的数据样本数可以更换为100。1000等
p.sample(10)  

会自动生成一个out结果,效果如下:

语义分割数据增强,数据集,人工智能,算法

 然后自己手动分开即可。

 文章来源地址https://www.toymoban.com/news/detail-778982.html

到了这里,关于【语义分割】数据增强方法(原图与标签同时扩增)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ICLR2022/扩散模型/语义分割:基于扩散模型的标签高效语义分割Label-efficient semantic segmentation with diffusion models

    论文下载 开源代码 去噪扩散概率模型最近受到了大量关注,因为它们优于其他方法,如GAN,并且目前提供了最先进的生成性能。扩散模型的卓越性能使其在多个应用中成为一个有吸引力的工具,包括绘画、超分辨率和语义编辑。在本文中,我们证明了扩散模型也可以作为语

    2023年04月08日
    浏览(37)
  • 视频目标语义分割自动标注——从图像轮廓提取到转成json标签文件

    语义分割数据标注是为训练语义分割模型准备数据的过程。语义分割是计算机视觉领域的任务,其中需要为图像中的每个像素分配一个类别标签,以区分不同的对象或区域。标注数据时,通常需要为每个对象或区域分配一个唯一的标签,并创建与图像像素相对应的分割掩码。

    2024年02月04日
    浏览(43)
  • BiSeNetv2:语义分割经典方法BiSeNet的升级版本

    分享IJCV2021上发表的一篇文章BiSeNetv2,这是BiSeNet的升级版本。开源代码地址:https://github.com/open-mmlab/mmsegmentation/tree/master/configs/bisenetv2 语义分割是指为每个像素分配一个标签,它广泛用于场景理解、自动驾驶、人机交互、视频监控等领域中。近年来,随着卷积神经网络的发展

    2024年02月07日
    浏览(48)
  • MMSegmentation训练自己的语义分割数据集

    然后 ctrl +N 开启多边形标注即可,命名类为person 之后会保存到同目录下json文件: 下载labelme代码里的转换代码: labels里存储的如下形式 运行指令 生成如下 mmseg/datasets里生成一个my_data.py文件,这个文件存储的是类别信息和seg颜色 需要多加一个backbone mmseg/utils/class_names.py文件

    2024年02月10日
    浏览(44)
  • 图像语义分割——python滑窗法裁剪数据

    B站:xxx CSDN:python图像分割——滑窗法裁剪数据_百年后封笔-CSDN博客 Github:封笔 公众号:百年后封笔 对图像分割而言,往往给的原图是非常大的,无法直接用于网络训练,因此有必要使用滑窗法进行图像的裁剪,把大图裁剪成一个个小的patch图,如下所示,当然如果有分类

    2024年02月17日
    浏览(67)
  • Python语义分割与街景识别(3):数据集准备

    本文主要用于记录我在使用python做图像识别语义分割训练集的过程,由于在这一过程中踩坑排除BUG过多,因此也希望想做这部分内容的同学们可以少走些弯路。 本文是python语义分割与街景识别第三篇,关于数据集准备的内容。 自己做数据集的方法其实非常简单,可以使用l

    2024年02月09日
    浏览(32)
  • 用于语义图像分割的弱监督和半监督学习:弱监督期望最大化方法

    这时一篇2015年的论文,但是他却是最早提出在语义分割中使用弱监督和半监督的方法,SAM的火爆证明了弱监督和半监督的学习方法也可以用在分割上。 这篇论文只有图像级标签或边界框标签作为弱/半监督学习的输入。使用期望最大化(EM)方法,用于弱/半监督下的语义分割模

    2024年02月11日
    浏览(68)
  • 第十章:重新审视扩张卷积:一种用于弱监督和半监督语义分割的简单方法

            尽管取得了显著的进展,弱监督分割方法仍然不如完全监督方法。我们观察到性能差距主要来自于它们在从图像级别监督中学习生成高质量的密集目标定位图的能力有限。为了缓解这样的差距,我们重新审视了扩张卷积[1]并揭示了它如何以一种新颖的方式被用于有

    2024年02月15日
    浏览(50)
  • 学习Segformer语义分割模型并训练测试cityscapes数据集

    官方的segformer源码是基于MMCV框架,整体包装较多,自己不便于阅读和学习,我这里使用的是Bubbliiiing大佬github复现的segformer版本。 Bubbliiiing大佬代码下载链接: https://github.com/bubbliiiing/segformer-pytorch 大佬的代码很优秀简练,注释也很详细,代码里采用的是VOC数据集的格式,因

    2024年02月15日
    浏览(42)
  • 从零开始复现seaformer(语义分割)训练自己的数据集——linux

    出于模型轻量化需求,需对原有的皮肤分割模型进行重新研发。seaformer是作为今年复旦大学和腾讯联合提出的轻量级语义分割算法,具有很好的参考价值。因此,作者基于seaformer算法对自研数据集进行训练,完成轻量级皮肤分割模型的开发。 1.下载地址:https://github.com/fudan

    2024年04月12日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包