导读
我们经常会遇到训练模型时数据不够的情况,而且很多时候无法再收集到更多的数据,只能通过做一些数据增强或者其它的方法来合成一些数据。常用的数据增强方式有裁剪、旋转、缩放、亮度对比度色度饱和度变换、仿射变换、透视变换等,这篇文章我们来介绍一个更方便更多策略的数据增强,主要依赖imgaug来实现。
imgaug
imgaug是一个python的图像增强库,它能够通过输入图片产生新图片的集合,能够通过不同的策略来改变图片以达到数据增强的目的。它能够应用于图像分类、图像分割、关键点定位、目标检测等任务的数据增强
github地址:https://github.com/aleju/imgaug
官方文档:https://imgaug.readthedocs.io/en/latest/source/examples_basics.html
特点
- 多种数据增强技术
仿射变换、透视变换、对比度改变、高斯噪声、色度饱和度变化、随机裁剪、模糊处理
只处理部分图片
随机顺序组合策略进行数据增强 - 支持多种任务处理
Images、Heatmaps、Segmentation Maps、mask、keypoints、landmarks、Bounding Boxes、Polygons、Line Strings - 支持多种数据分布
根据不同的数据分布来产生随机参数,支持均匀分布、高斯分布、beta分布 - 内置多种辅助函数
绘制heatmaps、segmentation maps、keypoints、bounding boxes等
缩放segmentation maps、平均池化、最大池化等 - 多核CPU数据增强加快处理速度
安装
- 环境要求python2.7或python3.4+
- 使用conda安装和卸载
#安装
conda config --add channels conda-forge
conda install imgaug
#卸载
conda remove imgaug
- 使用pip安装和卸载
#安装
pip install imgaug
#使用git上最新版本进行安装
pip install git+https://github.com/aleju/imgaug.git
#卸载
pip uninstall imgaug
使用示例
- 简单的数据增强
- 结合多种数据增强策略
- bounding box的数据增强
通过上面两张图对比,可以发现变换前后,box在图片上的位置并没有发生变化。
- 数据增强参数的数据分布设置
- 针对部分通道进行数据增强处理
总结
imgaug还支持很多其它的数据增强策略,比如当seq中图像增强的方式太多可能会导致图片受损严重,这时候你可以通过iaa.OneOf方法来执行其中一个,也可以通过iaa.SomeOf方法执行其中的几个等。更多更详细的应用,大家可以去参考git和官方文档。