目标检测数据集扩充
数据扩充对于深度神经网络训练通常具有良好的作用,例如2003年Patrice Simard等人所著的一篇论文中他们把MNIST手写数字数据集通过旋转,转换和扭曲进行扩展。通过在这个扩展后的数据集上的训练,他们把MNIST手写数字识别的准确率提升到了98.9%。然后还在“弹性扭曲”的数据集上进行了实验,这是一种特殊的为了模仿手部肌肉的随机抖动的图像扭曲方法。通过使用弹性扭曲扩展的数据,他们最终达到了99.3%的分类准确率。
如果人为扩充的数据集对准确度有提高,则扩展是良性的,说明我们对数据所做的拓展操作是良性的,能够“反映真实世界的变化”,就会被用到整个数据集的扩展。如果扩充数据集对准确度有降低,则说明不能用该操作进行拓展。
扩充方法
原图
图像强度变换
亮度变化
调亮
1
2
3
4
5
6
7def brightness(img):
img = Image.fromarray(img)
brightness = 1 + np.random.randint(1, 9) / 10
brightness_img = img.point(lambda p: p * brightness)
return Image.fromarray(np.uint8(brightness_img))调暗
1 | def darkness(img): |
对比度变化
扩展图像灰度级动态范围,对两极的像素进行压缩,对中间范围的像素进行扩展
1 |
|
不影响label的位置
图像滤波
锐化
1 | def sharpen(img): |
不影响label的位置
高斯模糊
1 | def blur(img): |
不影响label的位置
镜像翻转
图像左右翻转
1 | def flip(img): |
第一个位置的参数 pos = 1 - pos,其他信息不变,可以采用脚本自动生成
1
2
3
4
5
6
7
8
9 def saveFlipLabel(name):
with open(name + "_flip.txt", "w") as outfile:
with open(name + ".txt", "r") as infile:
for line in infile.readlines():
words = line.split(" ")
horizontal_coord = float(words[1])
outfile.write(
words[0] + " " + str(format(1 - horizontal_coord, ".6f")) + " " + words[2] + " " + words[3] + " " +
words[4])
图片裁剪
裁剪原图80%大小的中心图像,并进行随机移动1
2
3
4
5
6
7
8
9
10
11
12def crop(img):
size = img.shape[:2]
kernel_size = list(map(lambda x: int(x*0.8), size))
shift_min, shift_max = -50, 50
shift_size = [np.random.randint(shift_min, shift_max), np.random.randint(shift_min, shift_max)]
crop_img = img[
(size[0]-kernel_size[0])//2+shift_size[0]:(size[0]-kernel_size[0])//2+kernel_size[0]+shift_size[0],
(size[1]-kernel_size[1])//2+shift_size[1]:(size[1]-kernel_size[1])//2+kernel_size[1]+shift_size[1]
]
return Image.fromarray(np.uint8(crop_img))
可能将目标对象裁减掉,因此采用手工重新标注
图形拉伸
拉伸为正方形
1 | def deform(img): |
原图中比例信息改变,最好重新手工标注
镜头畸变
对图像进行透视变化,模拟鱼眼镜头的镜头畸变
通过播放径向系数k1,k2,k3和切向系数p1,p2实现
1 |
|
最好重新手工标注
加入噪声
椒盐噪声
1 | def addNoise(img): |
标记不变
渐晕
1 |
|
对图像添加一个圆范围内的噪声模拟光晕
标签不变
其他
随机丢包
1 |
|
不影响label的位置
参考:
代码
详见:github.com
- 本文链接:http://www.codekp.cn/2021/07/26/%E7%9B%AE%E6%A0%87%E8%AF%86%E5%88%AB%E6%95%B0%E6%8D%AE%E9%9B%86%E6%89%A9%E5%85%85%E6%96%B9%E6%B3%95/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。
您可以点击下方按钮切换对应评论系统。
GitHub Issues