今天就单图像(分类所需)的图像数据增强进行简要的介绍。用到工具是
ImageDataGenerator和Augmentor,引出两种方法,内容好理解,代码少,能操作运行。让你体会到前所未有的“暴力增强”带来的快感。现在开始吧!!!图像的数据增强-方法一
方法一采用ImageDataGenerator增强方法,待增强的图像放在同一个文件夹内,如下图这样,就是我们即将要增强的图像(温馨提示:请关注知识,不要多看图,哈哈哈···)
深度学习中数据的重要性是不言而喻的,而数据的缺乏与大数据之间的矛盾就显得尤为突出。此时,数据增强就显得尤为必要,优势在各个论文中也得到了较好的体现,这里就不做太多的描述了,直接看ImageDataGenerator对单图像的增强
<code>from keras.preprocessing.image import ImageDataGeneratorpath = D:/image # 类别子文件夹的上一级dst_path =D:/image_gen# 图片生成器datagen = ImageDataGenerator( rotation_range=5, width_shift_range=0.02, height_shift_range=0.02, shear_range=0.02, horizontal_flip=True, vertical_flip=True)gen = datagen.flow_from_directory( path, target_size=(512, 512), batch_size=30, save_to_dir=dst_path, # 生成后的图像保存路径 save_prefix=xx, save_format=jpg)for i in range(15): gen.next()/<code>
注意:待增强的图像放在image文件夹下的子文件夹下,例如,待增强图片在文件夹flower内,则此事flower的文件夹是image的子文件夹,这里多进行尝试就好。
增强后的图像,如下所示,增强的方式在ImageDataGenerator内进行定义,此处剖砖引玉的简述几个,更多的方法还需要根据你的应用来确定,建议查询官网介绍的增强方式。
最后,还是上面那句话,自己需要哪些变换,可以自行对ImageDataGenerator内容就行查询修改,这里不赘述,我们看下一个方法,更高效。
图像的数据增强-方法二
有了方法一的铺垫,方法二就简单了很多了。方法二采用的Augmentor的方法,简单粗暴,原图是这样的:
简单的几句代码,就能够实现许许多多的增强结果
<code>import Augmentor# 待增强图像放在test文件夹下即可# 会自动的创建output文件,用于保存增强后的图像p=Augmentor.Pipeline("./test")# 增强的方式,逆时针随机旋转90度(随机概率可自行设定)p.rotate90(probability=0.5)p.skew_corner(probability=0.7,magnitude=1)# 增强的个数p.sample(20)/<code>
来看下增强后的结果,代码中的注释部分很详细,主要是做了这几件事情:
- 导入库,确定待增强图像所在的位置
- 确定增强的方式
- 增强的个数
更加多样的增强方式和数量可以自行增加,包含许多用于标准图像处理功能的类,例如Rotate 旋转类、Crop 裁剪类等等。包含的操作有:旋转rotate、裁剪crop、透视perspective skewing、shearing、弹性形变Elastic Distortions、亮度、对比度、颜色等等。
更多方式及参数设定,可以点击这里:https://augmentor.readthedocs.io/en/master/code.html(美女都被拉变形了,罪恶啊罪恶)
Github地址:https://github.com/mdbloice/Augmentor
之后也会持续的关注一些图像增强的第三方好库,也会都更新到这里,持续关注,收藏哦!!!
閱讀更多 錢多多先森 的文章