点击上方“AI算法与图像处理”,选择加"星标"或“置顶”python
重磅干货,第一时间送达web
做者:Jacob Solawetz算法
编译:ronghuaiyang,来源:AI公园
微信
在计算机视觉中,检测小目标是最有挑战的问题之一。本文给出了一些有效的策略。网络
为了提升你的模型在小目标上的性能,咱们推荐如下技术:app
-
提升图像采集的分辨率 -
增长模型的输入分辨率 -
tile你的图像 -
经过加强生成更多数据 -
自动学习模型anchors -
过滤掉无关的类别
为何小目标检测很困难?
小目标问题困扰着世界各地的目标检测模型。不相信吗?查一下最近的模型在COCO上的评估结果,YOLOv3,EfficientDet和YOLOv4:编辑器
以Efficient为例,小目标的AP只有12%,大目标的AP为51%。这几乎是五倍的差别!那么,为何检测小物体如此困难呢?函数
这一切都归结于模型。目标检测模型经过在卷积层中对像素进行聚合来造成特征。性能
在网络的末端,基于损失函数进行预测,损失函数根据预测值和ground truth之间的差别对全部像素进行加和。学习
若是ground truth框不大,则在进行训练时信号会很小。此外,小物体最有可能有数据标记错误,他们的识别可能被忽略。
从经验和理论上讲,小物体是很难的。
提高图像采集的分辨率
分辨率,分辨率,分辨率……都是分辨率的锅。
很是小的物体的边界框中可能只包含几个像素,这意味着增长图像的分辨率能够增长探测器能够从那个小盒子中造成的丰富特征,这是很是重要的。
所以,咱们建议尽量提升采集图像的分辨率。
提升模型的输入分辨率
一旦你有了更高分辨率的图像,你就能够放大模型的输入分辨率。警告:这将致使大型模型须要更长的时间来训练,而且当你开始部署时,也会更慢地进行推断。你可能须要实验来找出速度与性能之间的正确权衡。
在训练YOLOv4中,你能够经过改变配置文件中的图像大小来轻松缩放输入分辨率。
[net]
batch=64
subdivisions=36
width={YOUR RESOLUTION WIDTH HERE}
height={YOUR RESOLUTION HEIGHT HERE}
channels=3
momentum=0.949
decay=0.0005
angle=0
saturation = 1.5
exposure = 1.5
hue = .1
learning_rate=0.001
burn_in=1000
max_batches=6000
policy=steps
steps=4800.0,5400.0
scales=.1,.1
你也能够在训练YOLOv5中经过改变训练命令中的图像尺寸参数来轻松缩放你的输入分辨率:
!python train.py --img {YOUR RESOLUTON SIZE HERE} --batch 16 --epochs 10 --data '../data.yaml' --cfg ./models/custom_yolov5s.yaml --weights '' --name yolov5s_results --cache
对图像进行Tiling
检测小物体的另外一个重要策略是将图像切割后造成batch,这个操做叫作tile,做为预处理步骤。tile能够有效地将检测器聚焦在小物体上,但容许你保持所需的小输入分辨率,以便可以运行快速推断。
若是你在训练中使用tile,重要的是要记住,你也须要在推理时tile你的图像。
经过加强产生更多数据
数据加强从基本数据集生成新的图像。这对于防止模型过拟合训练集很是有用。
一些特别有用的小物体检测加强包括随机裁剪、随机旋转和马赛克加强。
自动学习模型Anchors
Anchors是你的模型学会预测的与之相关的原型边界框。也就是说,anchors能够预先设置,有时对你的训练数据不是最优的。最好根据你手头的任务自定义调优它们。幸运的是,YOLOv5模型会根据你的自定义数据自动为你完成这项工做。你所要作的就是开始训练。
Analyzing anchors... anchors/target = 4.66, Best Possible Recall (BPR) = 0.9675. Attempting to generate improved anchors, please wait... WARNING: Extremely small objects found. 35 of 1664 labels are < 3 pixels in width or height. Running kmeans for 9 anchors on 1664 points... thr=0.25: 0.9477 best possible recall, 4.95 anchors past thr n=9, img_size=416, metric_all=0.317/0.665-mean/best, past_thr=0.465-mean: 18,24, 65,37, 35,68, 46,135, 152,54, 99,109, 66,218, 220,128, 169,228 Evolving anchors with Genetic Algorithm: fitness = 0.6825: 100%|██████████| 1000/1000 [00:00<00:00, 1081.71it/s] thr=0.25: 0.9627 best possible recall, 5.32 anchors past thr n=9, img_size=416, metric_all=0.338/0.688-mean/best, past_thr=0.476-mean: 13,20, 41,32, 26,55, 46,72, 122,57, 86,102, 58,152, 161,120, 165,204
过滤掉无关的类别
类别管理是提升数据集质量的一项重要技术。若是你有一个类与另外一个类明显重叠,你应该从数据集中过滤掉这个类。也许,你认为数据集中的小物体不值得检测,因此你可能但愿将其拿掉。
总结
正确地检测小物体确实是一项挑战。在这篇文章中,咱们讨论了一些策略来改善你的小物体探测器,即:
-
提升图像采集的分辨率 -
增长模型的输入分辨率 -
tile你的图像 -
经过加强生成更多数据 -
自动学习模型anchors -
过滤掉无关的类别

英文原文:https://towardsdatascience.com/tackling-the-small-object-problem-in-object-detection-6e1c9976ee69
下载1:动手学深度学习
在「AI算法与图像处理」公众号后台回复:动手学深度学习,即可下载547页《动手学深度学习》电子书和源码。该书是面向中文读者的能运行、可讨论的深度学习教科书,它将文字、公式、图像、代码和运行结果结合在一块儿。本书将全面介绍深度学习从模型构造到模型训练,以及它们在计算机视觉和天然语言处理中的应用。
我的微信(若是没有备注不拉群!) 请注明: 地区+学校/企业+研究方向+昵称
本文分享自微信公众号 - AI算法与图像处理(AI_study)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。