数据扩充(data augmentation),又名 数据增强 / 数据增广。
其本质即:
缺少海量数据时,为了保证模型的有效训练,一分钱掰成两半花。
数据扩充方法包括:
简单方法 | 复杂方法 |
---|---|
翻转、旋转、尺度变换、随机抠取、色彩抖动 | Fancy PCA、监督式抠取、GAN生成 |
包括:水平翻转、垂直翻转、水平垂直翻转。OpenCV中的 cv2.flip
接口可用于快速实现翻转操作:opencv: cv2.flip 图像翻转 进行 数据增强
原图像:
水平翻转:
垂直翻转:
水平垂直翻转:
将原图按照一定角度旋转,作为新图像。
常取的旋转角度为 -30°、-15°、15°、30° 等较刚好的角度值。
将图像分辨率变为原图的0.8、0.9、1.1、1.2等倍数,作为新图像。
对图像原有的像素值分布进行轻微扰动(即加入轻微噪声),作为新图像。
对所有训练数据的像素值进行主成分分析(PCA),根据得到的特征向量和特征值计算一组随机值,作为扰动加入到原像素值中。
之前做项目时有写过简易的数据增强工具,已开源:图像算法工具箱。 其中包含了最常见的图像水平翻转、垂直翻转和水平垂直翻转。可将图像数据量扩充为原来的4倍。
在实际操作中,常将多种数据扩充操作叠加使用,比如,对原图像分别 (水平、垂直、水平垂直)翻转 和 (-30°、-15°、15°、30°)旋转 后,数据量扩充为原来的8倍。此时,再对这组数据统一各进行一次随机扣取,则数据量翻为原来的16倍。与此类同,我们可以将数据扩充为原来的n次方倍,数据量简直不要太海量。。。 ╮( ̄▽ ̄)╭
Note: