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

重磅干货,第一时间送达

为了提高模型在小物体上的性能,我们建议使用以下技术:

  • 提高图像捕获分辨率

  • 提高模型的输入分辨率

  • 平铺图像

  • 通过扩充生成更多数据

  • 自动学习模型锚

  • 过滤掉多余的类

为什么小目标问题很难?
小物体问题困扰着全世界的物体检测模型,查看最新模型YOLOv3、EfficientDet和YOLOv4的COCO评估结果:
查看 AP_S、AP_M、AP_L 以获取最先进的模型。

例如,在 EfficientDet 中,小物体的 AP 仅为 12%,而大物体的 AP 为 51%,这几乎是五倍的差距!

那么为什么检测小物体这么难呢?

这一切都取决于模型,目标检测模型通过聚合卷积层中的像素来形成特征。

PP-YOLO中目标检测的特征聚合

并且在网络的末端,基于损失函数进行预测,该损失函数基于预测和地面真实情况之间的差异对像素进行汇总。

YOLO中的损失函数

如果地面真值框不大,则在进行训练时信号会很小。此外,小物体最有可能存在数据标记错误,因此它们的标识可能会被省略,从经验和理论上来说,小物体是难的。

提高图像捕获分辨率

非常小的物体在边界框中可能只包含几个像素——这意味着提高图像的分辨率以增加检测器可以从该小框中形成的特征的丰富度非常重要。因此,如果可能,我们建议尽可能捕获高分辨率的图像。

提高模型的输入分辨率
一旦我们拥有更高分辨率的图像,我们就可以扩大模型的输入分辨率。警告:这将导致大型模型需要更长的训练时间,并且在开始部署时推断速度会更慢。我们可能需要运行实验,来找出速度与性能之间的正确权衡。

在我们关于培训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

      注意:只有在达到训练数据的最大分辨率时,才能看到改进的结果。

      平铺图像

      检测小图像的另一种很好的策略是将图像平铺作为预处理步骤。平铺可以有效地将检测器放大到小物体上,但允许我们保持所需的小输入分辨率,以便能够进行快速推理。

      平铺图像作为 Roboflow 中的预处理步骤

      如果在训练期间使用平铺,请务必记住,我们还需要在推理时平铺图像。

      通过扩充生成更多数据

      数据扩充会从我们的基本数据集生成新图像,这对于防止模型过度拟合训练集非常有用。

      一些特别有用的小物体检测增强包括随机裁剪、随机旋转和镶嵌增强。

      自动学习模型锚

      锚定框是模型学习预测的原型边界框,也就是说,锚框可以预先设置,有时对于我们的训练数据来说不是最理想的。自定义调整这些参数以适合我们即将完成的任务是很好的,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,20

        过滤掉多余的类

        类管理是提高数据集质量的一项重要技术,如果我们的一个类与另一个类明显重叠,则应从数据集中过滤该类。也许,我们认为数据集中的小对象不值得检测,因此我们可能想要将其取出。通过Roboflow Pro中的高级数据集进行状况检查,我们可以快速识别所有这些问题。

        可以通过Roboflow 的本体管理工具来实现类遗漏和类重命名。

        结论

        正确检测小物体确实是一个挑战。在这篇文章中,我们讨论了一些改进小物体检测器的策略,即:

        • 提高图像捕获分辨率

        • 提高模型的输入分辨率

        • 平铺图像

        • 通过扩充生成更多数据

        • 自动学习模型锚

        • 过滤掉多余的类

        (0)

        相关推荐

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

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

        • 【目标检测代码实战】从零开始动手实现yolov3:训练篇(一)

          前言 在前面几篇文章中小糖豆为大家讲解了yolo系列算法的演变.俗话说,光说不练假把式.接下来小糖豆将带领大家从零开始,亲自动手实现yolov3的训练与预测. 本教程说明: 需要读者已经基本了解pyt ...

        • 目标检测的稀疏对抗攻击,代码已开源

          题目:Sparse Adversarial Attack to Object Detection 论文:https://arxiv.org/pdf/2012.13692v1.pdf 代码:https: ...

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

          前言 大家好,这是目标检测算法解读系列的第一篇文章,在这个系列中小糖豆会对经典的目标检测算法进行解读,在每个算法原理讲解完后,会有相应的源代码解析.小糖豆认为学习一个算法,既要弄清楚它的原理,又要真正 ...

        • AI太傻分不清东西?首个3D点云+GAN新方法,让机器人“眼神”更犀利!

          随着 AI.机器人技术的不断发展,人们的生活得到了"AI 机器人们"的各种帮助:大到太空机器人辅助宇航任务,小到家用扫地机器人解放我们的双手,可以说,机器人在人类生活中充当的角色越 ...

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

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

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

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

        • 物体检测中的小物体问题

          点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 推荐阅读 42个pycharm使用技巧,瞬间从黑铁变王者 Goog ...

        • 在物体检测中搞定小目标

          作者:Jacob Solawetz 编译:ronghuaiyang 导读 在计算机视觉中,检测小目标是最有挑战的问题之一.本文给出了一些有效的策略. 从无人机上看到的小目标 为了提高你的模型在小目标上 ...

        • 计算机视觉物体检测中面对的挑战

          导读 给出了目前目标检测中的一些问题和挑战. 几年前,在图像中寻找并分类单个物体是一项极其困难的任务.今天,在计算机视觉的帮助下,数字设备可以简单快速地识别图像的内容,这为不同领域的视觉数据理解和分析 ...

        • 韭菜收割祖师汉武帝,多计并施解决财政危机,皇帝实现小目标

          对汉武帝的评价,一般都少不了"雄才大略"这四个字,他的一生是在一个又一个大事当中度过的,"开拓边疆,光耀千秋. 他对边疆的开拓,时间和范围都要以秦始皇的倍数计.卫青.霍去 ...

        • Excel应用中的“小目标”如何实现

          Excel应用中的"小目标"如何实现 彭怀文 我们要想做一件事都必须有一个"小目标",包括我们对Excel的学习与应用. 问 我们学习并应用Excel的&quo ...

        • 理解物体检测中的Objectness

          作者:Nathan Zhao 编译:ronghuaiyang 导读 在本文中,我们将讨论目标检测模型和Objectness的基础知识. 什么是物体检测模型? 物体检测模型本质上,正如其名称所示,检测物 ...

        • 干货|在目标检测中如何解决小目标的问题?

          作者丨Nabil MADALI 来源丨AI公园 编辑丨极市平台 极市导读 在深度学习目标检测中,特别是人脸检测中,由于分辨率低.图像模糊.信息少.噪声多,小目标和小人脸的检测一直是一个实用和常见的难点 ...

        • 在目标检测中如何解决小目标的问题?

          机器学习与生成对抗网络 记录分享通俗.有趣的AI科技知识,包括不限于CV.GAN等等,还有程序员求职面试.内推等资料,偶尔分享诗词歌赋.陶冶情操,一起做个有趣.前沿的人! 94篇原创内容 公众号 作者 ...