语义分割-Task2 数据扩增
本章对语义分割任务中常见的数据扩增方法进行介绍,并使用OpenCV和albumentations两个库完成具体的数据扩增操作。
干货链接:
albumentations 数据增强工具的使用
Pytorch:transforms的二十二个方法
Pytorch使用albumentations实现数据增强
2 数据扩增方法
简单来说数据扩充主要分成两类,一类是基于图像处理的数据扩增,一类是基于深度学习方法的数据扩充 这里简单介绍一下
基于图像处理的数据扩增—几何变换
旋转,缩放,翻转,裁剪,平移,仿射变换
作用:几何变换可以有效地对抗数据中存在的位置偏差、视角偏差、尺寸偏差,而且易于实现,非常常用。
基于图像处理的数据扩增—灰度和彩色空间变换
·亮度调整,对比度饱和度调整,颜色空间转换,色彩调整,gamma变换
作用:对抗数据中存在的光照,色彩,亮度,对比度偏差
基于图像处理的数据扩增——添加噪声和滤波
添加高斯噪声,椒盐噪声
滤波:模糊,锐化,雾化等
作用:应对噪声干扰,恶劣环境,成像异常等特殊情况,帮助CNN学习更泛化的特征
本章主要内容为数据扩增方法、OpenCV数据扩增、albumentations数据扩增和Pytorch读取赛题数据四个部分组成。
2.1 学习目标
- 理解基础的数据扩增方法
- 学习OpenCV和albumentations完成数据扩增
- Pytorch完成赛题读取
2.2 常见的数据扩增方法
数据扩增是一种有效的正则化方法,可以防止模型过拟合,在深度学习模型的训练过程中应用广泛。数据扩增的目的是增加数据集中样本的数据量,同时也可以有效增加样本的语义空间。
需注意:
不同的数据,拥有不同的数据扩增方法;
数据扩增方法需要考虑合理性,不要随意使用;
数据扩增方法需要与具体任何相结合,同时要考虑到标签的变化;
对于图像分类,数据扩增方法可以分为两类:
- 标签不变的数据扩增方法:数据变换之后图像类别不变;
- 标签变化的数据扩增方法:数据变换之后图像类别变化;
而对于语义分割而言,常规的数据扩增方法都会改变图像的标签。如水平翻转、垂直翻转、旋转90%、旋转和随机裁剪,这些常见的数据扩增方法都会改变图像的标签,即会导致地标建筑物的像素发生改变。
2.3 OpenCV数据扩增
OpenCV是计算机视觉必备的库,可以很方便的完成数据读取、图像变化、边缘检测和模式识别等任务。为了加深各位对数据可做的影响,这里首先介绍OpenCV完成数据扩增的操作。
|
|
|
|
2.4 albumentations数据扩增
albumentations是基于OpenCV的快速训练数据增强库,拥有非常简单且强大的可以用于多种任务(分割、检测)的接口,易于定制且添加其他框架非常方便。
albumentations也是计算机视觉数据竞赛中最常用的库:
- GitHub: https://github.com/albumentations-team/albumentations
- 示例:https://github.com/albumentations-team/albumentations_examples
与OpenCV相比albumentations具有以下优点:
- albumentations支持的操作更多,使用更加方便;
- albumentations可以与深度学习框架(Keras或Pytorch)配合使用;
- albumentations支持各种任务(图像分流)的数据扩增操作
albumentations它可以对数据集进行逐像素的转换,如模糊、下采样、高斯造点、高斯模糊、动态模糊、RGB转换、随机雾化等;也可以进行空间转换(同时也会对目标进行转换),如裁剪、翻转、随机裁剪等。
|
albumentations还可以组合多个数据扩增操作得到更加复杂的数据扩增操作:
|
这里是我之前打kaggle的时候用到albumentations的一组增强方法,可以参考参考
|
2.7 课后作业-添加噪声
|
|