深度学习在计算机视觉图像分割算法中,批量图像数据增强的方法

今天就来一招搞定数据增强(data_Augmentation),让你在机器学习/深度学习图像处理的路上,从此不再为数据不够而发愁。且来看图片从250张>>>>任意张的华丽增强,每一张都与众不同。

开始之前呢,我们先把这件大事给细分下,一步一步的来:

首先,图像读取,需要对文件夹操作;

然后,增强图像(重点,重点,重点);

最后,保存图像。

来看下此次任务中,待增强的图像和标签,主要是为了做图像分割做图像准备。这个图像懂的应该能看出来,这是一个婴儿头围的医学图像,现实场景意义很强。上图(以3张图为例):

train_img

train_label

成双成对,这样在后续的文件读取中会比较的方便(大神可以自己改改,练练动手能力)

那动手吧!!!

ImageDataGenerator()是keras.preprocessing.image模块中的图片生成器,同时也可以在batch中对数据进行增强,扩充数据集大小,增强模型的泛化能力。比如进行旋转,变形,归一化等,它所能实现的功能且看下面的详细部分吧。

keras.preprocessing.image.ImageDataGenerator(featurewise_center=False,samplewise_center=False,featurewise_std_normalization=False,samplewise_std_normalization=False,zca_whitening=False,zca_epsilon=1e-06,rotation_range=0,#整数。随机旋转的度数范围。width_shift_range=0.0,#浮点数、一维数组或整数height_shift_range=0.0,#浮点数。剪切强度(以弧度逆时针方向剪切角度)。brightness_range=None,shear_range=0.0,zoom_range=0.0,#浮点数或[lower,upper]。随机缩放范围channel_shift_range=0.0,#浮点数。随机通道转换的范围。fill_mode=nearest,#{'constant','nearest','reflect'or'wrap'}之一。默认为nearest。输入边界以外的点根据给定的模式填充:cval=0.0,horizontal_flip=False,vertical_flip=False,rescale=None,preprocessing_function=None,data_format=None,validation_split=0.0,dtype=None)这里就以单张图片为例,详述下这个图像增强大杀器的具体用法,分别以旋转(rotation_range),长宽上平移(width_shift_range,height_shift_range)

输入图像:

先来看下两者合并后的图像:

merge

到这里,我们进行增强变换,演示下这里增强部分是咋用的,且看:滑慢点,有GIF图

otation=1.2

width_shift_range=0.05

eight_shift_range=0.05

这里才只是演示了三个就那么的强大,详细,这要能增强多少图片啊,想想都可怕,想都不敢想啊!!!

增强汇总

这里是合并部分,单幅增强的大图效果详情看这里:

merge改变通道排布方式

这里,且看单幅图像的增强代码(建议去下载仔细看,往后看,有方式):

这里先说下对图像和标签一起增强的步骤,有人该问为什么还要标签了。这里针对的问题是图像分割,pix2pix的任务,即输入时一般图像,输出是目标分割后图像,在上面就是train_img和train_label的一一对应关系,这里开始分解步骤来说增强:

1.train_img+train_label=merge,也就是图像+椭圆形的那个;2.对merge图像进行增强;3.将merge图像按通道拆分,1的逆过程。

前面只涉及步骤1和2,故先对这两块做详述,如下:着重讲下Augmentation类中augmentation函数部分和对单幅图像增强部分。

1.读取train_img,train_label;

#load_imageimg_t=load_img('../one/img/0.png')img_l=load_img('../one/label/0.png')2.因为要讲上述img_t和img_l进行合并,采用矩阵形式进行操作,这里将读取到的图像转换为矩阵形式;

3.train_img+train_label=merge.把label当做train的第三个通道

后面注释部分,是对合并后的通道进行任意组合的形式,会出现不同的效果,如前文中三个特写图(具体自己可尝试)

#把label当做train的第三个通道x_t[:,:,2]=x_l[:,:,0]#x_t=x_t[...,[2,0,1]]#image-102,120,2104.为了保存merge后图像,此时该从array_to_image了,然后保存图像文件;

5.此时执行对merge图像的增强操作;

开始前,既然我们要defdo_augmentate(),我们先想想对一幅图像的增强,需要些什么:

image图像文件;

save_to_dir保存增强后的文件夹地址;

批增强的数量。

至于别的,先看这里

flow(self,X,y,batch_size=32,shuffle=True,seed=None,save_to_dir=None,save_prefix=,save_format=png)x:样本数据,秩应为4,在黑白图像的情况下channel轴的值为1,在彩色图像情况下值为3y:标签batch_size:整数,默认32shuffle:布尔值,是否随机打乱数据,默认为Truesave_to_dir:None或字符串,该参数能让你将提升后的图片保存起来,用以可视化save_prefix:字符串,保存提升后图片时使用的前缀,仅当设置了save_to_dir时生效save_format:'png'或'jpeg'之一,指定保存图片的数据格式,默认'jpeg'yields:形如(x,y)的tuple,x是代表图像数据的numpy数组.y是代表标签的numpy数组.该迭代器无限循环.seed:整数,随机数种子flow:接收numpy数组和标签为参数,生成经过数据提升或标准化后的batch数据,并在一个无限循环中不断的返回batch数据

6.由于flow的输入X需要一个秩为4的数组,所以需要对他变形,加上img.shape=3

话不多说,先看下拆分代码部分,还是先说步骤:

1.读取merge文件夹内图片;2.按照之前组合的形式进行拆分为img_train和img_label,同时保存在两个文件夹内,一一对应。

Pythonrindex()返回子字符串str在字符串中最后出现的位置,如果没有匹配的字符串会报异常,你可以指定可选参数[beg:end]设置查找的区间。

举个栗子:

打印的结果

现在,把上文中的一段专门来看下打印结果

截取图像地址

最后,看下拆分后的图片保存的结果吧!!!

aug_train_img

aug_train_label

这里特意说下,图像的数量是自己设置的,在这里,imgnum数量,决定了对单幅图像增强的数量。(如果你需要对其中增强的多一些,就把这块给修改下)

defdo_augmentate(self,img,save_to_dir,save_prefix,batch_size=1,save_format=png,imgnum=30):四、图像增强之批处理这块的内容,不想做太多的解释了,只是由单幅图像的读取,改为对文件夹内所有图片的读取。

批处理部分train_img,2是文件名

批处理部分train_label,14是文件名

注意:待增强的图像放在image文件夹下的子文件夹下,例如,待增强图片在文件夹flower内,则此事flower的文件夹是image的子文件夹,这里多进行尝试就好。

原图

增强后的图像

同时呢,自己需要哪些变换,可以自行对ImageDataGenerator内容就行查询修改,这里不赘述;

简单粗暴,原图是这样的:

简单的几句代码,就能够实现许许多多的增强结果

importAugmentor#待增强图像放在test文件夹下即可#会自动的创建output文件,用于保存增强后的图像p=Augmentor.Pipeline('./test')#增强的方式,逆时针随机旋转90度(随机概率可自行设定)p.rotate90(probability=0.5)p.skew_corner(probability=0.7,magnitude=1)#增强的个数p.sample(20)来看下增强后的结果,代码中的注释部分很详细,主要是做了这几件事情:

更加多样的增强方式和数量可以自行增加。(美女都被拉变形了,罪恶啊罪恶)

THE END
1.图像增强新思路:DeepLPF前言该文是华为诺亚方舟实验室 & INSA Lyon & Mila Montreal联合提出一种基于深度学习的图像增强方法。作者提出采用深度学习方法学习三种类型(椭圆滤波器、渐变滤波器、多项式滤波器)的空间局部滤波器用于图像增强。该文为深度学习算法在图像复原里面的应用提供了一个新思路,非常建议大家仔细看一下。文末附论文下载方式。https://zhuanlan.zhihu.com/p/611492439?utm_id=0
2.基于深度学习的图像增强的算法图像增强算法综述HE按处理方式可以分为基于全局直方图均衡化算法和基于局部直方图均衡化算法。前者是对低照度图像进行整体灰度级调整,若待处理的图像整体偏暗,则会使增强后的图像视觉效果极差,同时造成图像中的目标信息不能突显出来,对于那些全局灰度范围较宽的图像,增强后其细节不能很好地保留。后者的思想是将输入图像分割成各个子块,https://blog.51cto.com/u_14125/7924918
3.基于深度学习的低光照图像增强方法总结(2020.09.15更新)之前在做光照对于高层视觉任务的影响的相关工作,看了不少基于深度学习的低光照增强(low-light enhancement)的文章,于是决定简单梳理一下。 光照估计(illumination estimation)和低光照增强(low-light enhancement)的区别:光照估计是一个专门的底层视觉任务(例如[1,2,6]),它的输出结果可以被用到其它任务中,例如图像增https://blog.csdn.net/hyk_1996/article/details/99641652
4.基于深度学习的暗光图像增强与目标检测算法研究及应用基于深度学习的智能无人系统以其高智能、小型化、低成本等优势被广泛应用于各类暗光场景。而高级的计算机视觉任务,如目标检测,通常以内容清晰的高质量图像作为研究对象,对环境复杂、光线微弱的暗光场景无法实现高精度的检测。为此,本文提出了一种融合注意力机制的暗光增强算法以及适用于移动设备的快速目标检测算法,并通过https://wap.cnki.net/touch/web/Dissertation/Article/1023444780.nh.html
5.图像处理三:图像增强算法FPGA开发圈由于受到环境,光线等的影响,拍摄的照片清晰度和对比度比较低,不能够突出图像中的重点。图像增强就是通过一定手段来增强图像的对比度,使得其中的人物或者事物更加明显,有利于后边的识别等处理。本章介绍几个传统的图像增强算法,并给出matlab实现代码,看一看不同算法的实现效果,最后再介绍一下深度学习在图像增强上的应用http://xilinx.eetrend.com/content/2019/100044332.html
6.基于深度学习的图像边缘和轮廓提取整体嵌套边缘检测(Holistically-Nested Edge Detection,HED 是一个深度学习的边缘提取的算法,两个特色:(1)整体图像训练和预测; (2)多尺度、多层特征学习。该深度模型利用全卷积网络,自动学习丰富的分层表示(基于侧面响应的深层监督指导)。 多尺度深度学习可分为四类,即https://mp.weixin.qq.com/s?__biz=MzU0NjgzMDIxMQ==&mid=2247628143&idx=1&sn=f36201e4473903adbb7c63e24642841b&chksm=fac4d7b04943a3bc2a67e6307dac61560c15a5e0662e4b3f0d719307989355d740d966e9d821&scene=27
7.的图像去雾算法来啦!前面给大家介绍过14种低照度图像增强算法这个透射率告诉了图像去雾系统我们需要恢复多少被雾霾遮盖的细节。然后,系统会根据透射率对图片进行调整。它会让照片中的像素更加亮丽,同时减少雾霾造成的影响。具体来说,图像去雾算法可以分为基于图像增强的去雾算法、基于图像复原的去雾算法和基于深度学习的去雾算法。本文主要研究介绍基于深度学习的去雾算法介绍基于https://juejin.cn/post/7255312213480194107
8.图像增强算法综述①小波变换图像增强,偏微分方程图像增强,分数阶 微分的图像增强,基于 Retinex 理论的图像增强和基于深度学习的图像增强算法,?并讨论了它们的改进算法.?然后, 从视觉效果,对比度,信息熵等方面对几种算法进行了定性和定量的对比,?分析了它们的优势和劣势.?最后,?对图 像增强算法的未来发展趋势作了简单的https://c-s-a.org.cn/csa/article/pdf/7956
9.基于深度学习的图像压缩感知算法研究.pdf基于深度学习的图像压缩感知算法研究 3.5本章小结23 第四章基于观测值残差并行网络的深度压缩感知算法25 4.1引言25 4.2残差并行增强网络模型25 4.2.1网络模型25 4.2.2主特征提取分支25 4.2.3基于观测值残差的特征补偿提取分支27 4.2.4穿插模块28 4.2.5增强分支28 4.3损失函数29 4.4实验结果和分析29 4.4.1数据集https://max.book118.com/html/2024/0325/8130111014006051.shtm
10.图像增强算法综述15. 张莹. 暗光图像增强技术在矿用小型终端中的应用. 世界有色金属. 2024(14): 202-204 . 16. 章赵威,冯向萍,张世豪. 基于深度学习的玉米叶片病害识别方法研究. 现代计算机. 2024(13): 1-8+77 . 17. 王孟奇,连增增,田亚林,王鹏辉. 面向室内弱光环境的视觉与惯导融合算法研究. 导航定位与授时. 202http://www.chineseoptics.net.cn/en/article/id/9522
11.基于深度学习的水下图像增强技术研究学位然而,特殊的水下成像环境会导致拍摄的水下图像出现颜色失真、对比度低、细节模糊等退化现象,因此,水下图像增强技术具有重要的科学意义与应用价值。针对水下特殊成像环境与现有水下图像增强方法的不足之处,本文设计了基于深度学习的水下图像增强算法,主要研究工作包括: (1)为解决水下图像样本数量及多样性不足的问题,https://d.wanfangdata.com.cn/thesis/D02724334
12.低光照图像增强算法综述.docx传统的低光照图像增强算法在一定程度上提高了图像的视觉效果,但仍然存在一些问题,如噪声增强、细节丢失等。因此,近年来,随着深度学习技术的发展,越来越多的研究者开始关注基于深度学习的低光照图像增强算法。四、基于深度学习的低光照图像增强算法近年来,深度学习在计算机视觉任务中取得了显著的成果,尤其是在图像增强和https://www.renrendoc.com/paper/319219630.html
13.多尺度语义特征水下图像增强研究目前,水下图像增强与复原分为非深度学习方法与深度学习方法[2]。基于非深度学习方法主要分为2种:一种是图像增强,以像素点的基础使图像清晰,比如:直方图均衡化[3]、白平衡[4]、MSRCR[5]等算法,该类算法忽略传感器镜头在水下环境中的成像模型,导致红通道缺失,甚至出现伪影,用增强算法处理后的水下图像色彩容易增强https://www.fx361.com/page/2022/1214/17780778.shtml
14.Light深度学习赋能下的光学计量澎湃号·湃客澎湃新闻图2 光学计量的典型图像处理过程(如条纹投影轮廓术)可分为三个主要步骤:预处理(如去噪、图像增强)、分析(如相位解调、相位展开)和后处理(如相位—深度映射) 图3 光学计量图像处理层次结构的概貌以及不同层中分布的各种图像处理算法 深度学习技术 原理、发展与卷积神经网络 https://www.thepaper.cn/newsDetail_forward_16995760
15.科学网—基于深度学习的单幅图像超分辨率重建算法综述在深度学习未兴起前,经典的单幅图像超分辨率算法占据主导地位, Lanczos重采样[1]和双三次插值[2]得到了广泛的应用,但采用插值方法有时会导致图像边缘和细节模糊,因此其他传统算法也被相继提出[3-5],有效地增强了图像的质量.经典的超分辨率重建算法需要很多先验知识,且要求研究者具有深厚的专业知识储备.随着深度学习https://blog.sciencenet.cn/blog-3291369-1347645.html
16.增强型DeepLab算法和自适应损失函数的高分辨率遥感影像分类夏梦等(2017)结合深度学习和条件随机场,在输入图像中增加了纹理信息,得到了比SVM分类器更好的提取效果,但其网络结果中,输出层地物位置信息没有得到足够的保留。在DeepLab v2网络的基础上,Chen等(2018a)提出了Na?ve-SCNN和Deeper-SCNN网络,并提出增强视场的方法,使用ISPRS的高分辨率语义分割数据集,成功提高了训练https://www.ygxb.ac.cn/zh/article/doi/10.11834/jrs.20209200/