1、数据读取
1.1 opencv
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
具体使用参见官方文档。
1.2 Pillow
Python传统的图像处理库PIL(Python Imaging Library),是Python平台事实上的图像处理标准库,它功能强大且API简单易用,但是PIL仅支持到Python 2.7。一群志愿者在PIL的基础上创建了兼容的版本,名字叫Pillow,支持最新Python 3.x,又加入了许多新特性。
具体使用参见官方文档。
1.3 matplotlib
Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。
具体使用参见官方文档。
1.4 skimage
skimage(scikit-image)是一个免费图像处理算法库,它对scipy.ndimage进行了扩展,提供了更多的图片处理功能。它是由python语言编写的,由scipy 社区开发和维护。
具体使用参见官方文档。
2、数据扩增
在深度学习中,确定参数和训练方法以后,大部分的时间是在增加数据的多样性,而数据扩增可以增加训练集的样本,同时也可以有效缓解模型过拟合的情况,也可以给模型带来的更强的泛化能力。
2.1 数据扩增的作用
有深度学习的参数非常多,一般的模型可训练的参数量基本上都是万到百万级别,而训练集样本的数量很难有这么多。数据扩增可以扩展样本空间。
2.2 数据扩增的方法
数据扩增方法有很多:从颜色空间、尺度空间到样本空间,同时根据不同任务数据扩增都有相应的区别。下面的代码以torchvision为例。
2.2.1 翻转
可以对图片进行水平和垂直翻转。
- transforms.RandomHorizontalFlip 随机水平翻转
- transforms.RandomVerticalFlip 随机垂直翻转
2.2.2 旋转
如果图片是正方形的,那么以直角旋转将会保持图像大小。如果它是长方形,那么180度的旋转将会保持原来的大小。
- transforms.RandomRotation 随机旋转
2.2.3 缩放
图像可以向外或向内缩放。
网友评论