Image augmentation library in Python-Augmentor使用心得

转载自https://blog.csdn.net/timcanby/article/details/79247603

Augmentor是个增强图像训练数据的库,减少了使用图像库自己编写代码的繁杂工序,能够批量完成图像的旋转,放大,缩小,添加噪音以扩充数据量。接下来结合官方文档介绍下这个库和使用心得。

首先github:https://github.com/mdbloice/Augmentor

DOCs:https://augmentor.readthedocs.io/en/master/userguide/mainfeatures.html#perspective-skewing

安装:

pip install Augmentor

升级:  pip install Augmentor --upgrade  

导入:(导入需要增强数据的目录,这里以该路径下的100张图像初始化)

 

import Augmentor
p = Augmentor.Pipeline("/path/to/images")

然后你就可以使用这个pipeline对象p进行图像变换了:

 

在执行完所需的处理操作后通过:

 

p.sample(10000)

来进行样本的输出(在路径目录上新生成的output文件夹中)

首先是基本的旋转:

 

p.rotate(probability=0.7, max_left=10, max_right=10)
input and output
输入图像 输出图像例
Image augmentation library in Python-Augmentor使用心得_第1张图片

其中左右旋转的数值不能超过25,probability参数为生成图像中执行操作图像的比例,当数值为1时全部的生成图像都会进行旋转操作。

 

在0.1.10版本中的旋转区间表示稍微有所变更:

 

p.rotate(probability=1,max_left_rotation=20,max_right_rotation=20)

如图所示为-20,20区间内的随机旋转。

 

透视,形变:

 

p.skew_tilt(probability=1,magnitude=1)

skew_tilt为上下左右方向的垂直型变,参数magnitude为型变的程度(0,1),当设置为1时的随机型变效果如下:

 

 

输入图像 输出图像
Image augmentation library in Python-Augmentor使用心得_第2张图片 Image augmentation library in Python-Augmentor使用心得_第3张图片

同理,向四个角形变:

 

p.skew_corner(probability=1,magnitude=1)

如果只想执行其中的某一类型变skew_left_right()#(只左右方向)

 

如果想进行所有方向的随机变化请使用skew()

弹性扭曲:

 

p.random_distortion(probability=1,grid_height=5,grid_width=16,magnitude=8)

参数的不同扭曲程度不同,这里可以通过自己调整达到想要的效果:

 

 

输入图像 输出图像
Image augmentation library in Python-Augmentor使用心得_第4张图片 Image augmentation library in Python-Augmentor使用心得_第5张图片

错切变换(shearing):

也就是使图像向某一侧倾斜啦,参数与旋转类似,范围是0-25

 

p.shear(probability=1,max_shear_left=0,max_shear_right=20)

截取(cropping):

当需要截取某一堆数据的某一个区域时不妨试试这个函数:

 

p.crop_by_size(probability=1,width=100,height=100,centre=True)

 

输入图像 输出图像
Image augmentation library in Python-Augmentor使用心得_第6张图片 Image augmentation library in Python-Augmentor使用心得_第7张图片

当然还有以下几种截取方式:

 

p.crop_centre()
p.crop_random()

镜像变换:

 

 

p.flip_left_right()
p.flip_random()
p.flip_top_bottom()

这个函数就不放例子了,结合透视型变的话会有很好的变形结果。

 

随机去除:

 

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

这个函数是随机遮盖掉图像中的某一个部分,rectangle_area的变化范围为0.1-1,效果如下:

 

 

输入图像 输出图像
Image augmentation library in Python-Augmentor使用心得_第8张图片 Image augmentation library in Python-Augmentor使用心得_第9张图片

怎么样,对于批量处理图像数据来说也是一个不错的选择吧,合理组合这些函数可以输出更多的效果,例如:

 

p=Augmentor.Pipeline('/')

p.random_distortion(probability=1, grid_width=4, grid_height=4, magnitude=8)

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

输出:

你可能感兴趣的:(Image augmentation library in Python-Augmentor使用心得)