欢迎访问本站,希望站内信息可以帮助到您!感兴趣的,可以加入我的知识星球,一对一解答!

小目标数据增强

YOLO 迷途小书童 0评论

环境

  • ubuntu 18.04 64位
  • YOLO数据集

简介

近年来,目标检测已经取得了长足的进步,不过,尽管如此,小目标与大目标之间,依然有着非常大的差距。论文 Augmentation for small object detection 提出了在原有图片数据中增加目标的 copy-pasting 方法,一方面,解决了数据集中只有部分图片有小目标的问题,另一方面也使得图片中有足够多的的小目标出现。最终,使用该方法,作者在 MS COCO 数据集上实例分割提高了 9.7%, 而在目标检测上也提升了 7.1%,效果还是非常显著。对应论文地址 https://arxiv.org/abs/1902.07296

代码实操

开源项目 SmallObjectAugmentation 复现了上面的论文

首先拉取源码

git clone https://github.com/gmayday1997/SmallObjectAugmentation.git
cd smallObjectAugmentation

然后执行

python demo.py

作者提供了2张原始图片和它们对应的标注文件 txt,存放在文件夹 background 下,待增强处理的具体图片由 train.txt 统一管理。而增加的小目标(这里是人),以小图的形式存在,放在文件夹 crops 下,由 small.txt 统一管理,train.txtsmall.txt 可以通过 shell 脚本 createTrain.sh 生成。

最后脚本完成后,增强后的图片与对应标注存放在 save 文件夹下

增强前

0 0.265364583333 0.139130434783 0.0151041666667 0.0369565217391
0 0.284114583333 0.151086956522 0.0119791666667 0.0173913043478
0 0.3515625 0.179347826087 0.015625 0.0239130434783

数据增强后的图片如下,除了汽车之外,增加了8个小目标人

增强后

0 0.2643229166666667 0.13804347826086957 0.015104166666666667 0.03695652173913044
0 0.2830729166666667 0.15 0.011979166666666666 0.017391304347826087
0 0.35104166666666664 0.1782608695652174 0.015625 0.02391304347826087
1 0.7893229166666667 0.9206521739130434 0.024479166666666666 0.08478260869565217
1 0.8072916666666666 0.6434782608695653 0.016666666666666666 0.1
1 0.5518229166666666 0.8652173913043478 0.0203125 0.08695652173913043
1 0.86484375 0.8597826086956522 0.013020833333333334 0.06304347826086956
1 0.7174479166666666 0.7673913043478261 0.0203125 0.07173913043478261
1 0.89296875 0.779891304347826 0.021354166666666667 0.07282608695652174
1 0.9169270833333333 0.721195652173913 0.021354166666666667 0.07934782608695652
1 0.42916666666666664 0.6565217391304348 0.015625 0.07173913043478261

基本原理

最后整理一下这份代码的基本原理

  • 依次读取原始图片,转换标注的坐标,由 class x_center y_center width height 转换成 class x1 y1 x2 y2
  • 将目标小图(这里是人)进行缩放
  • 根据缩放,随机生成 bbox
  • 将小图融合到原始图中,使用的是 cv2.seamlessClone 即泊松融合
  • 保存新生成的图片,将标注转换回去,生成对应的 txt

参考资料

喜欢 (1)
发表我的评论
取消评论

表情