首页IT科技图像语义分割技术(【语义分割】数据增强方法(原图与标签同时扩增))

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

时间2025-09-09 11:27:50分类IT科技浏览4473
导读:1、数据增强作用 避免过拟合...

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结果,效果如下:

 然后自己手动分开即可。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
hg8546m路由器怎么设置拨号(HG813 路由器怎么社会设置PPPOE拨号?)