Press "Enter" to skip to content

小目标数据增强

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

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

 

然后执行

 

<a href="https://xugaoxiang.com/tag/python/" title="查看关于 python 的文章" target="_blank">python</a> 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

参考资料

https://github.com/gmayday1997/SmallObjectAugmentation
https://xugaoxiang.com/2021/09/29/sahi-yolov5/

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。