目标:
- • 了解数据增强
- • 了解albumentation库
0.albumentations简介
Albumentations是一个图像增强库,能够从原始图像中生成大量图像。该库被广泛用于工业、深度学习研究、机器学习竞赛和开源项目。
1.数据增强
深度神经网络模型需要保质保量的训练数据才能获得良好的预测效果,防止过拟合的出现。然而,实际去做深度学习模型训练的时候,你会发现做够的训练样本是很难的,原因如下:
- • 采集图像:有些图像数据会涉及隐私,如医疗方面的图像,有些图像获取成本很高,如卫星图像,有些操作比较麻烦,如道路场景识别的图像。
- • 图像标注:对图像进行标注需要耗费大量人力,而且标注质量不好会导致模型识别效果大打折扣,对物体检测任务来说,需要在物体周围画出包围框,框的大小要合适,标注的种类也要正确。
针对样本数据获取困难的情况,可以使用图像数据增强技术。图像增强是一个从现有图像中创造新的训练样本的过程。为了制造一个新的样本,你稍微改变一下原始图像。例如,你可以让新的图像更亮一点,你可以从原始图像上切下一块,你可以通过镜像原始图像来制作新的图像等等。
下面,我们通过一些例子展示原始图像创造新的训练样本的例子:
代码语言:javascript复制import random
import cv2
from matplotlib import pyplot as plt
import albumentations as A
image = cv2.imread("assets/cvtutorials.png")
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
transformed_1 = A.HorizontalFlip(p=)
augmented_image_1 = transformed_1(image=image)['image']
transformed_2 = A.ShiftScaleRotate(p=)
augmented_image_2 = transformed_2(image=image)['image']
augmented_images = [image, augmented_image_1, augmented_image_2]
plt.figure(figsize=(, ))
for i in range(, ):
plt.subplot(,,i)
plt.imshow(augmented_images[i-])
plt.axis('off')
plt.show()
图片展示效果如下(原图,水平翻转的图,平移缩放旋转的图)