导读

我们经常会遇到训练模型时数据不够的情况,而且很多时候无法再收集到更多的数据,只能通过做一些数据增强或者其它的方法来合成一些数据。常用的数据增强方式有裁剪旋转缩放亮度对比度色度饱和度变换仿射变换透视变换等,这篇文章我们来介绍一个更方便更多策略的数据增强,主要依赖imgaug来实现。

imgaug

imgaug是一个python的图像增强库,它能够通过输入图片产生新图片的集合,能够通过不同的策略来改变图片以达到数据增强的目的。它能够应用于图像分类图像分割关键点定位目标检测等任务的数据增强

github地址:https://github.com/aleju/imgaug

官方文档:https://imgaug.readthedocs.io/en/latest/source/examples_basics.html

f3042dc6d0c9ec28bbefac6607f2f0d4.png

特点

  • 多种数据增强技术
    仿射变换、透视变换、对比度改变、高斯噪声、色度饱和度变化、随机裁剪、模糊处理
    只处理部分图片
    随机顺序组合策略进行数据增强
  • 支持多种任务处理
    Images、Heatmaps、Segmentation Maps、mask、keypoints、landmarks、Bounding Boxes、Polygons、Line Strings
  • 支持多种数据分布
    根据不同的数据分布来产生随机参数,支持均匀分布、高斯分布、beta分布
  • 内置多种辅助函数
    绘制heatmaps、segmentation maps、keypoints、bounding boxes等
    缩放segmentation maps、平均池化、最大池化等
  • 多核CPU数据增强加快处理速度
安装
  • 环境要求python2.7python3.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

使用示例

  • 简单的数据增强
406801aa6531710be57e8e8a44be9d17.png
eacb43d438138e750e97e575ac5389f1.png
  • 结合多种数据增强策略
6f8fc0318ca7fef2302cdc4052554600.png
96783770ed13ac25b9be94af05aab6f0.png
  • bounding box的数据增强
34dfcbf1936c18c472a40c94d18e0dab.png
5c40a06ce4b1fd1c5f17ad0874e29385.png

通过上面两张图对比,可以发现变换前后,box在图片上的位置并没有发生变化。

  • 数据增强参数的数据分布设置
c7c502be4f39cb3c3b7e35c663a1a6a0.png
  • 针对部分通道进行数据增强处理
7f65814a5596b557bc6784acd686d929.png

总结

imgaug还支持很多其它的数据增强策略,比如当seq中图像增强的方式太多可能会导致图片受损严重,这时候你可以通过iaa.OneOf方法来执行其中一个,也可以通过iaa.SomeOf方法执行其中的几个等。更多更详细的应用,大家可以去参考git和官方文档。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐