深度学习训练数据python代码——数据增广(二)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/e01528/article/details/82873305

python图像数据增强库

Augmentor使用比较简单,只有一些简单的操作。 imgaug实现的功能更多,可以对keypoint, bounding box同步处理,比如你现在由一些标记好的数据,只有同时对原始图片和标记信息同步处理,才能有更多的标记数据进行训练。我在segmentation和detection任务经常使用imgaug这个库。

Augmentor

http://augmentor.readthedocs.io/en/master/index.html

[直接点开,谷歌翻译,文档很全]

Augmentor 是管道化的图像增强库,每一个增强操作都是逐步叠加在图像上。此外对于输入的图像,可以选择按照一定的概率进行增强,比如只随机对一半图像进行旋转。

可以实现的操作有, rotate, crop, perspective skew(视角倾斜), elastic distortions(弹性变换【OCR非刚体中可以利用随机扭曲】), sheering(坐标轴倾斜), mirroring(镜像)、随机改变图像亮度Augmentor.Operations.RandomBrightness、随机改变对比度/饱和度、随机擦除某一矩形框里的像素Augmentor.Operations.RandomErasing、随机裁剪

/*注意倾斜后,旋转后都有多余的边界,从倾斜图像中裁剪原始图像的相同纵横比的最大可能区域,然后调整大小以匹配原始图像尺寸*/

 

安装

sudo -H pip install Augmentor

升级: 

pip install Augmentor --upgrade  

用法

第1步:创建新的管道

必须首先初始化一个Pipeline对象,该对象指向存储原始图像数据集的目录

>>> import Augmentor
>>> p = Augmentor.Pipeline("/path/to/images")
Initialised with 100 images found in selected directory.

第2步:向管道添加操作

>>> p.rotate(probability=0.7, max_left_rotation=10, max_right_rotation=10)

添加进一步的操作,在这种情况下是一个zoom()操作

>>> p.zoom(probability=0.3, min_factor=1.1, max_factor=1.6)

第3步:从流水线执行和采样

并指定所需的图像数量,在本例中为10,000:

>>> p.sample(10000)

默认情况下,新生成的增强图像将保存到名为output的目录中,相对于包含初始图像数据集的目录。

可以使用Augumentor.Pipeline()创建一个实例,调用各种方法向pipeline添加方法, status()可以显示当前pipeline的状态,在status中每个操作都有一个对应的index, remove_operation(index)移除一个操作, 最后调用sample(nums)得到nums个augument后的图像。

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

参考:https://www.cnblogs.com/vincentcheng/p/9186540.html

猜你喜欢

转载自blog.csdn.net/e01528/article/details/82873305