在物体检测中搞定小目标

作者:Jacob Solawetz

编译:ronghuaiyang

导读

在计算机视觉中,检测小目标是最有挑战的问题之一。本文给出了一些有效的策略。

从无人机上看到的小目标

为了提高你的模型在小目标上的性能,我们推荐以下技术:

  • 提高图像采集的分辨率

  • 增加模型的输入分辨率

  • tile你的图像

  • 通过增强生成更多数据

  • 自动学习模型anchors

  • 过滤掉无关的类别

为什么小目标检测很困难?

小目标问题困扰着世界各地的目标检测模型。不相信吗?查一下最近的模型在COCO上的评估结果,YOLOv3,EfficientDet和YOLOv4:

查看AP_S、AP_M、AP_L以了解最新的模型。小物体检测是很难的!

以Efficient为例,小目标的AP只有12%,大目标的AP为51%。这几乎是五倍的差异!那么,为什么检测小物体如此困难呢?

这一切都归结于模型。目标检测模型通过在卷积层中对像素进行聚合来形成特征。

物体检测中的特征聚合

在网络的末端,基于损失函数进行预测,损失函数根据预测值和ground truth之间的差异对所有像素进行加和。

YOLO中的损失函数

如果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,重要的是要记住,你也需要在推理时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

(0)

相关推荐

  • 利用合成图像对热图像进行鲁棒行人检测

    重磅干货,第一时间送达 小黑导读 论文是学术研究的精华和未来发展的明灯.小黑决心每天为大家带来经典或者最新论文的解读和分享,旨在帮助各位读者快速了解论文内容.个人能力有限,理解难免出现偏差,建议对文章 ...

  • opencv调用yolov3模型来进行图像检测

    之前使用了opencv来调用ssd的模型来检测物体,今天学了一下用opencv调用yolov3的模型来检测物体,二者在预测图形的部分,代码流程差不多,反正就是加载模型然后预测输出,但是对于输出结果的处 ...

  • 竞赛冠军方案:2020珠港澳人工智能算法大赛双料冠军解读

    团队介绍 团队来自深圳市威富视界有限公司.中国科学院半导体研究所,队长为宁欣副研究员,成员分别为石园.刘江宽.支金林.王镇.荣倩倩,排名不分先后. 珠港澳人工智能算法赛题介绍 以检测和识别为核心的各项 ...

  • (4条消息) OpenCV DNN之YOLO实时对象检测

    OpenCV在3.3.1的版本中开始正式支持Darknet网络框架并且支持YOLO1与YOLO2以及YOLO Tiny网络模型的导入与使用.YOLO是一种比SSD还要快的对象检测网络模型,算法作者在其 ...

  • 【目标检测算法解读】yolo系列算法三

    前言 本文是yolo系列算法文章的第三篇,也是目前为止yolo系列算法的最终篇.从原理上看,yolov3并没有实质性的创新,主要是借鉴了一些时下state-of-the-art模型的优秀思想.本文重点 ...

  • 揭晓高速公路场景下计算机视觉与交通的秘密

    高速公路场景基于计算机视觉的车辆检测和流量统计 1.文章信息 <Vision-based vehicle detection and counting system using deep lea ...

  • 收藏 | 使用Mask-RCNN在实例分割应用中克服过拟合

    干货第一时间送达 转载于:作者:Kayo Yin 编译:ronghuaiyang     |    AI公园 导读 只使用1349张图像训练Mask-RCNN,有代码. 代码:https://gith ...

  • 解决物体检测中的小目标问题

    重磅干货,第一时间送达 为了提高模型在小物体上的性能,我们建议使用以下技术: 提高图像捕获分辨率 提高模型的输入分辨率 平铺图像 通过扩充生成更多数据 自动学习模型锚 过滤掉多余的类 为什么小目标问题 ...

  • 遥感图像中的小物体检测(内有新数据集)

    干货第一时间送达 文章:Small-Object Detection in Remote Sensing Images with End-to-End Edge-Enhanced GAN and Ob ...

  • ML.NET 示例:对象检测-ASP.NET Core Web和WPF桌面示例

    dotNET跨平台 今天以下文章来源于My IO ,作者My IO My IO记录工作和生活,将输入变成输出ML.NET 版本API 类型状态应用程序类型数据类型场景机器学习任务算法v1.5.0动态A ...

  • 如何将多目标检测用于建筑平面图? | MixLab智能建筑

    在建筑平面图的分析中,一些复杂的平面图总是会让人感到头晕脑胀,不同的标注方式以及不同的图形符号更难以让普通人去解读. 5种不同图形符号的浴缸以及真实场景中具有的遮挡,标注等信息 有时,图形符号又会极其 ...