数据增强库imgaug使用笔记
在深度学习项目中,寻找数据花费了相当多的时间。但在很多实际的项目中,我们难以找到充足的数据来完成任务。为了要保证完美地完成项目,有两件事情需要做好:1、寻找更多的数据;2、数据增强。本篇主要描述数据增强。
有很多现成的可以做数据增强的库,比如可以用OpenCV、PIL、TensorFlow、Augmentor等等,下面介绍的第一第二大类方法都是通过调用imgaug库操作实现的,这个库功能全面,且有丰富的文档支持,能满足我们大多数的数据增强的需求。
1 介绍
imgaug是一个用于机器学习实验中图像增强的python库,支持python2.7和3.4以上的版本。 它支持多种增强技术,允许轻松组合这些技术,具有简单但功能强大的随机界面,可以在这些界面上增加图像和关键点/界标,并在后台进程中提供增强功能以提高性能。
相关文档:快速开始、函数示例、API介绍、github
2 安装方法
首先安装依赖
pip install six numpy scipy matplotlib scikit-image opencv-python imageio
pip install imgaug
如果想安装最新版本的imgaug,可直接在github上下载源码进行安装,方法如下
pip install git+https://github.com/aleju/imgaug
或者
git clone https://github.com/aleju/imgaug
cd imgaug
python setup.py install
3 测试程序
整体流程为:定义变换序列(Sequential)→读入图片(imread)→执行变换(augment_images)→保存图片(imwrite)
#!usr/bin/python
# -*- coding: utf-8 -*-
import cv2
from imgaug import augmenters as iaa#imgaug test
seq = iaa.Sequential([iaa.Crop(px=(0, 16)), # 从每侧裁剪图像0到16px(随机选择)iaa.Fliplr(0.5), # 水平翻转图像iaa.GaussianBlur(sigma=(0, 3.0)) # 使用0到3.0的sigma模糊图像
])imglist=[]
img = cv2.imread('kobe.jpg')
imglist.append(img)
images_aug = seq.augment_images(imglist)
cv2.imwrite("imgaug.jpg",images_aug[0])
原图kobe.jpg
结果imgaug.jpg
4 函数介绍
在API里边,我们可以看到有很多函数可以实现数据增强,接下来对这些函数的功能进行介绍,参数的具体含义请参考另一篇博文或者函数说明
函数 | 描述 |
---|---|
Sequential(C, R) | 选取一系列子增强器C作用于每张图片,第二个参数表示是否对每个batch的图片应用不同顺序的Augmenter list。当设置为True时,不同batch之间图片的处理顺序都会不一样,但是同一个batch内顺序相同 |
SomeOf(N, C, R) | 将Augmenter中的部分变换应用在图片处理上,而不是应用所有的Augmenter。例如:可以定义20种变换,但每次只选择其中的5个。但是不支持固定选择某一个Augmenter。 |
OneOf(C) | 每次从一系列Augmenters中选择一个来变换。. |
Sometimes(P, C, D) | 对batch中的一部分图片应用一部分Augmenters,剩下的图片应用另外的Augmenters。 |
WithColorspace(T, F, C) | 在某个特定的颜色空间对图像进行变换。即:先将图片从一个颜色空间变换到另一个颜色空间,然后在另一个颜色空间中对图像进行变换,最后再变换回原来的颜色空间。 |
WithChannels(H, C) | 从图片中挑选出一个Channel来进行变换,变换完了之后再将该channel merge回去 |
Noop() | 不进行任何变换。某些情况下只想使用一个Augmenter作为占位符,这样可以继续调用augment_image()函数,但实际不作变换。 |
Lambda(I, K) | 自定义一些变换函数 |
AssertLambda(I, K) | assert要变换的图片和keypoint的shape。如果不满足就抛出异常。 |
AssertShape(S) | 如果输入的图像大小不是S,则抛出异常 |
Scale(S, I) | 将图像缩放到固定大小。 |
CropAndPad(PX, PC, PM, PCV, KS) | 截取(crop)或者填充(pad),填充时,被填充区域为黑色。 |
Pad(PX, PC, PM, PCV, KS) | 与CropAndPad()相同,只接受positive values。 |
Crop(PX, PC, KS) | 与CropAndPad()相同,只接受negative values。 |
Fliplr(P) | 水平镜面翻转。 |
Flipud(P) | 上下镜面翻转。 |
Superpixels(P, N, M) | 以(最大)分辨率M生成图像的N个超像素,并调整回原始大小。 然后原始图像中所有超像素区域的P百分比被超像素替换,(1-P)百分比保持不变。 |
ChangeColorspace(T, F, A) | 改变图像空间 |
Grayscale(A, F) | 变成灰度图。 |
GaussianBlur(S) | 高斯扰动。 |
AverageBlur(K) | 从最邻近像素中取均值来扰动。 |
MedianBlur(K) | 通过最近邻中位数来扰动 |
BilateralBlur(D, SC, SS) | 使用距离为D的双边滤波器(如内核大小)模糊图像。 SC是颜色空间中(影响)距离的西格玛,SS是空间距离的西格玛。 |
Convolve(M) | 对图像使用卷积。 |
Sharpen(A, L) | 锐化 |
Emboss(A, S) | 浮雕效果 |
EdgeDetect(A) | 边缘检测 |
DirectedEdgeDetect(A, D) | 特定方向的边缘检测 |
Add(V, PCH) | 随机加上一个值 |
AddElementwise(V, PCH) | 按像素加 |
AddToHueAndSaturation(V, PCH, F, C) | 将值V添加到HSV空间中的每个像素(即修改色调和饱和度)。 |
AdditiveGaussianNoise(L, S, PCH) | 以像素为单位向图像添加高斯白噪声。 |
Multiply(V, PCH) | 给图像中的每个像素点乘一个值使得图片更亮或者更暗。 |
MultiplyElementwise(V, PCH) | 按像素值乘。 |
Dropout(P, PCH) | 随机去掉一些像素点, 即把这些像素点变成0。 |
CoarseDropout(P, SPX, SPC, PCH) | 将矩形框的值设置为0。 |
Invert(P, PCH) | 翻转,将每个像素值p变成255-p。 |
ContrastNormalization(S, PCH) | 改变图像的对比度。 |
Affine(S, TPX, TPC, R, SH, O, M, CVAL) |
仿射变换。包含:平移(Translation)、旋转(Rotation)、放缩(zoom)、错切(shear)。仿设变换通常会产生一些新的像素点,我们需要指定这些新的像素点的生成方法,这种指定通过设置cval 和mode 两个参数来实现。参数order 用来设置插值方法。
|
PiecewiseAffine(S, R, C, O, M, CVAL) | 随机放置一些规则的网格点然后移动这些点的周围的像素。这回导致局部的扭曲。 |
PerspectiveTransform(S, KS) | 对图像应用随机四点透视变换(有点像高级裁剪形式)。 |
ElasticTransformation(S, SM) | 通过移动局部像素来变换。 |
Alpha(F, A, B, PCH) | 使用增强器A和B独立增强图像,然后使用Alpha F覆盖结果。如果未提供,A和B默认不执行任何操作。 例如, 使用Alpha(0.9,A)通过A增强图像,然后混合结果,保留原始图像的10%(在A之前)。 如果PCH设置为真,则该过程在通道方面发生,可能具有不同的F(每个图像计算一次A和B)。 |
AlphaElementwise(F, A, B, PCH) | 与Alpha相同,但使用从F采样的连续掩码(值0.0到1.0)逐像素地执行混合。如果PCH设置为true,则过程以像素和通道两种方式发生。 |
SimplexNoiseAlpha(A, B, PCH, SM, UP, I, AGG, SIG, SIGT) | 与Alpha类似,但使用遮罩来混合来自增强器A和B的结果。遮罩是从单纯形噪声中采样的,单层噪声往往是blobby。 掩模在Iiterations中收集(默认为1-3),每次迭代使用聚合方法AGG(默认最大值,即每个像素的所有迭代的最大值)进行组合。 每个掩模在低分辨率空间中采样,最大分辨率为SM(默认为2到16px),并使用方法UP(默认:线性或立方或最近邻居上采样)放大到图像大小。 如果SIG为真,则将sigmoid应用于具有阈值SIGT的掩码,这使得blob具有接近0.0或1.0的值。 |
FrequencyNoiseAlpha(E, A, B, PCH, SM, UP, I, AGG, SIG, SIGT) | 与SimplexNoiseAlpha类似,但会从频域生成噪声掩码。 指数E用于增加/减少频率分量。 高值导致更明显的高频分量。 使用-4到4范围内的值,-2大致生成类似云的模式。 |
数据增强库imgaug使用笔记相关推荐
- 深度学习之数据增强库imgaug使用方法
参考:https://www.jianshu.com/p/99450dbdadcf 在深度学习项目中,寻找数据花费了相当多的时间.但在很多实际的项目中,我们难以找到充足的数据来完成任务.为了要保证完美 ...
- ubuntu为python处理图片安装图片数据增强库imgaug
1 依赖Required dependencies: six numpy scipy scikit-image (pip install -U scikit-image) OpenCV (i.e. c ...
- imgaug: 一个很有用的图像数据增强库
向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程 公众号:datayx 在深度学习项目中,寻找数据花费了相当多的时间.但在很多实际的项目中,我们难以找到充足的数据来完 ...
- 【Tool】Augmentor和imgaug——python图像数据增强库
Augmentor和imgaug--python图像数据增强库 Tags: ComputerVision Python 介绍两个图像增强库:Augmentor和imgaug,Augmentor使用比较 ...
- python图像增强_【Tool】Augmentor和imgaug——python图像数据增强库
Augmentor和imgaug--python图像数据增强库 Tags: ComputerVision Python 介绍两个图像增强库:Augmentor和imgaug,Augmentor使用比较 ...
- imgaug数据增强库中常用的增强器
Overview of Augmenters: https://imgaug.readthedocs.io/en/latest/source/overview_of_augmenters.html 1 ...
- 【视频课】业界最强数据增强库使用与人脸图像超分辨实践!
前言 数据是深度学习系统的输入,对深度学习的发展起着至关重要的作用,但是又容易被很多人忽视,尤其是缺少实战的学习人员.数据增强又是其中至关重要的内容,为了让大家能够掌握好深度学习中数据的使用,我们开设 ...
- 让AI精准识别盗版,脸书开源数据增强库:支持图文音视频,提供100多种增强方式...
月石一 发自 凹非寺 量子位 报道 | 公众号 QbitAI 只要稍微动点手脚,就会给AI模型的鲁棒性带来挑战. 在AI眼里,下面这两张图片可能毫无关联. 现在,Facebook AI开源了用于数据增 ...
- 最快最好用的数据增强库「albumentations」 一文看懂用法
本文内容如下 1. Albumentations的自我介绍 2.案例欣赏 3.如何安装 4.有哪些数据增强方法 4.1 像素级变换(Pixel-level transforms) 4.2 空间级变换( ...
最新文章
- POJ-1094 Sorting it All Out
- AndroidStudio中下载某版本gradle速度慢,从哪里高速下载指定版本gradle
- 对Group By 语句的一次优化过程
- java equals 的区别_java中equals和==的区别是什么-百度经验
- 【CodeForces - 985D】Sand Fortress (二分,贪心,思维构造,技巧,有坑)
- Shell 字符串截取
- ASP.NET性能优化之分布式Session
- 各类数据库问题描述模板
- Android进阶(三) 数据存储之SharedPreference
- Unity中设置对象匀速移动
- java如何运行_如何运行java程序
- Android实战技巧之三十四:用TableLayout伪装表格显示数据
- 打开计算机文档左边,打开.chm的文件后,看不到左边的目录,该怎样解决?
- 解决gradle运行gradle -v命令报Fialed to laod library 'native-platform.dll'错误
- TIPTOP ERP 开发视频教程
- IC-二进制, 自然数, 有符号数
- [MATLAB]多项式求导/加减/乘除
- 起因:想要用visio画框图
- WHQL认证公司 提供高品质whql认证服务
- Kettle实验 (三)
热门文章
- 零基础学小程序006(后台数据的获取与解析)----请求服务器json数据展现到小程序上
- 夜神模拟器安装xposed install中的注意点
- python对acf、pacf复现
- 微信小程序python自动化测试_干货 | 微信小程序自动化测试最佳实践(附 Python 源码)...
- 分析人工智能审核优点及智能审核原理
- 图像梯度一阶和二阶高阶matlab,2。二阶梯度方法.ppt
- ApacheCN 翻译活动进度公告 2019.2.18
- 前端工程师常考手写面试题指南
- 图像处理算法工程师面试题(后续问题答案持续更新)
- Python教程:访问数据库使用SQLite