点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

作者丨ChaucerG

来源丨集智书童

随着自动驾驶汽车和自动赛车越来越受欢迎,对更快、更准确的检测器的需求也越来越大。但对机器来说图像分辨率和计算资源的限制使得检测更小的物体成为一个真正具有挑战性的任务,也是一个开放的研究领域。

本研究探索了如何对YOLOv5进行修改,以提高其在检测较小目标时的性能,并在自动赛车中进行了特殊应用。为了实现这一点,作者研究了替换模型的某些结构会如何影响性能和推理时间。在这一过程中在不同的尺度上提出一系列的模型YOLO-Z,并得到高达6.9%的改善,相比原YOLOv5推理时间检测更小的目标时的成本就增加3ms。

1YOLO-Z

YOLOv5提供了4种不同的尺度:S、M、L和X。每种比例都对模型的深度和宽度应用不同的乘数,这意味着模型的整体结构保持不变,但每个模型的大小和复杂性是按比例缩放的。在实验中,在所有的尺度上分别对模型的结构进行修改,并将每个模型作为不同的模型来评估其效果。

为了设定Baseline,对YOLOv5的4个量表的未修改版本进行了训练和测试。然后分别测试这些网络的变化,以便观察它们对Baseline结果的影响。在进入下一阶段时,似乎对提高准确性或推理时间没有贡献的技术和结构被过滤掉。然后,尝试将选定的技术组合起来。重复这个过程,观察某些技术是否相互补充或减少,并逐渐增加更复杂的组合。

1、Evaluation metric

YOLOv5的原始实现提供了与COCO兼容性API的度量,这对于本研究的目的证明是有用的。计算特定尺度值的方式可以很好地指示模型的性能,但在极端情况下可能会稍微不准确。

由于这些度量在默认情况下只与COCO数据集兼容,在测试代码中重新实现了这个方法,以便在使用任何数据集时获得更有价值的数据。度量模块将计算大、中、小目标的值,以及整体性能。将目标划分为这三种类别取决于以下阈值:小(如果对象的面积小于32平方像素),大(如果该区域大于96平方像素),中等(如果该区域大于两个阈值)。换句话说,small<32x32<medium<96x96<large。

2、Dataset and Experimental setup

为了训练模型并为实验提供信息,从自动驾驶赛车的角度采用了一个带注释的圆锥数据集。它最初的目的是根据圆锥体的颜色帮助自动赛车规划路径,因为知道总共有4类圆锥体(黄色、蓝色、橙色和大橙色),接近4000张图像(见图1,2)。

该数据集包括数字增强图像和具有挑战性天气条件的情况。像这样的数据集可以模拟自动驾驶汽车中更复杂的任务。锥体本身就是可以在路上找到的物体,在大小和位置上与其他物体有很多相似之处,比如交通标志。

尽管数据集将受益于更大的大小,但它的特点是目标密度非常高,有超过30000个标记目标。此外,在图1可以观察到蓝色和黄色类的很大偏差。这是有道理的,因为他们有助于双方的赛车,但它确实是一个不平衡影响整体结果。这些类上的性能将会考虑当评估模型,即通过平均分数显著的类别。

与自动驾驶场景中常见的其他物体(如其他车辆或行人)相比,圆锥体本来就很小。图3中的相关图(相关统计数据的图表)显示了数据集中目标(锥)的边界框的位置、宽度和高度。数据集具有高度集中的较小的目标框,由于透视投影而略微拉长。这种高比例的小目标使它有利于这类研究,因为它在很大程度上克服了在其他流行的数据集,包括MS COCO中缺乏这样的物体的问题。

该数据集以65:15:20的比例分为训练、验证和测试。

3、架构改进

YOLOv5使用yaml文件来指导解析器如何构建模型。我们使用这种设置来编写我们自己的高级指令,说明如何构建模型的不同构建块以及使用哪些参数,从而修改其结构。为了实现新的结构,我们安排并为每个构建块或层提供参数,并在必要时指导解析器如何构建它。用我们的话说,我们利用YOLOv5提供的基础和实验网络块,同时在需要模拟所需结构的地方实现额外的块。

1、Backbone

模型的Backbone是用于获取输入图像并从中提取特征映射的组件。这是任何目标检测器的关键步骤,因为它是负责从输入图像提取上下文信息以及将该信息提取为模式的主要结构。

作者尝试用2个Backbone替换YOLOv5中现有的Backbone。

  • ResNet是一种流行的结构,它引入残差连接来减少在深层神经网络中收益递减的影响。

  • DenseNet使用类似的连接,在网络中尽可能多地保存信息。实现这些结构需要将它们分解为基本块,并确保各层适通信。这包括确保正确的特征图尺寸,这有时需要为模型的宽度和深度略微修改缩放因子。

在这两种情况下,为了保持相当的复杂性,重要的是要避免大大偏离原始的层数。因此,使用了ResNet50,并按比例缩小了DenseNet,以保持其核心功能。此外,YOLOv5利用了Backbone和Neck之间的空间金字塔池化(SPP)层。然而,在本工作中,没有触及这一层。

2、Neck

将位于Head和Backbone之间的结构称为“Neck” (见图4),其目标是在将Backbone提取的信息反馈到Head之前尽可能多地聚合这些信息。该结构通过防止小目标信息丢失,在传递小目标信息方面发挥了重要作用。它通过再次提高特征图的分辨率来做到这一点,这样来自Backbone的不同层的特征就可以被聚合,以提升整体的检测性能。

在本工作中,将当前的PAN-Net替换为bi-FPN。虽然都保留了类似的特征,但复杂性不同,因此实现所需的层数和连接数也不同。

3、其他修改

模型的Head负责获取特征映射,并通过从Neck获取几个聚合的特征映射来预测边界框和类。除了接收到的参数之外,这个结构可以保持原样,因为它是模型的一个基本部分,在小目标检测中没有前面提到的元素那么大的影响。

然而,还有其他一些元素会对小目标检测性能产生影响。除了输入图像的大小之外,还可以修改模型的深度和宽度,以改变处理的主要方向。Neck和Head的层连接方式也可以手动改变,以便专注于检测特定的特征图。

在这项研究中,作者探索了涉及高分辨率特征映射的重定向连接的效果,以便将它们直接反馈到Neck和Head。这可以通过扩大Neck以适应额外的特征图来实现,也可以通过替换最低分辨率的特征图以适应新的特征图来实现,图5显示了这两个选项以及默认(原始)布局。

使用更高分辨率的特征图通常可以提高对较小目标的性能,但需要耗费推理时间和潜在的对较大目标的检测,这与增加输入图像大小的效果类似。用这两种方式在Neck整合这种行为,以最大限度地减少其缺点,同时最大限度地利用其优点。

注意,一些参数将不得不调整到新的结构,因为网络的学习能力可能会受到影响。主要是在Head应用Anchor的大小,需要根据所使用的特征图的分辨率进行调整。

2实验结果

讨论

在对YOLOv5进行调整以更好地检测更小的目标的方法的实验中,本文能够识别体系结构修改,这种修改在性能上比原始的检测器有明显改善,而且成本相对较低,因为新的模型保持了实时推理速度。

所应用的技术,即自动赛车技术,可以从这样的改进中获益良多。正如在图8中看到的,这样的变化确实对检测有可量化的影响。在这项工作中,不仅显著提高了Baseline模型的性能,而且还确定了一些特定的技术,这些技术可以应用于任何其他应用程序,包括检测小或远的物体。

YOLO-Z家族的最终结果是,模型表现的YOLOv5类,同时保留一个推理时间等实时应用程序兼容的自动化赛车(见表2和图7)。特别是较小的目标是本研究的重点(图7中,中间),而对于中等大小的目标(下图),性能是稳定的。

3参考

[1].YOLO-Z: Improving small object detection in YOLOv5 for autonomous vehicles

本文仅做学术分享,如有侵权,请联系删文。

3D视觉精品课程推荐:

1.面向自动驾驶领域的多传感器数据融合技术

2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
4.国内首个面向工业级实战的点云处理课程
5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)

9.从零搭建一套结构光3D重建系统[理论+源码+实践]

10.单目深度估计方法:算法梳理与代码实现

11.自动驾驶中的深度学习模型部署实战

12.相机模型与标定(单目+双目+鱼眼)

13.重磅!四旋翼飞行器:算法与实战

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。

一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、激光/视觉SLAM自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

圈里有高质量教程资料、答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

YOLO-Z | 记录修改YOLOv5以适应小目标检测的实验过程相关推荐

  1. 目标检测算法——YOLOv5改进|增加小目标检测层

    关注"PandaCVer"公众号 >>>深度学习Tricks,第一时间送达<<< 小目标检测一直以来是CV领域的难点之一,那么,YOLOv5该如 ...

  2. yolov5增加一层小目标检测层

    1.原始YOLOv5模型 # YOLOv5 head head:[[-1, 1, Conv, [512, 1, 1]],[-1, 1, nn.Upsample, [None, 2, 'nearest' ...

  3. YOLOV5 的小目标检测网络结构优化方法汇总(附代码)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨南山 来源丨 AI约读社 YOLOv5是一种非常受欢迎的单阶段目标检测,以其性能和速度著称,其结 ...

  4. YOLOv5增加小目标检测层

    采用增加小目标检测层的方式来使YOLOv5能够检测小目标,只需要修改models下的yaml文件中的内容即可. 主要改变如下: 原yaml: # parameters nc: 80 # number ...

  5. TensorRT+yolov5:yolov5添加小目标检测层2--TensorRT部署

    前面我们在yolov5添加了小目标检测层,进行了训练,但是训练的次数也不是很多,接下来我们使用tensorrt进行四个检测头的yolov5部署.具体如何添加小目标检测层可以查看我上一篇文章. Tens ...

  6. YOLOV7改进--增加小目标检测层

    YOLOV7改进--增加小目标检测层 说明 代码 原始p5配置 添加小目标检测层 说明 yolov7来啦!!!因为项目需要,尝试跑了下yolov7,感觉还不错. 由于现在使用的数据集大部分都是&quo ...

  7. [YOLOv7/YOLOv5系列算法改进NO.5]改进特征融合网络PANET为BIFPN(更新添加小目标检测层yaml)

     前      言:作为当前先进的深度学习目标检测算法YOLOv5,已经集合了大量的trick,但是在处理一些复杂背景问题的时候,还是容易出现错漏检的问题.此后的系列文章,将重点对YOLOv5的如何改 ...

  8. YOLOv8/YOLOv7/YOLOv5系列算法改进【NO.6】增加小目标检测层,提高对小目标的检测效果

    前 言:作为当前先进的深度学习目标检测算法YOLO,已经集合了大量的trick,但是在处理一些复杂检测问题的时候,还是容易出现错漏检的问题.此后的系列文章,将重点对YOLOv8.YOLOv7以及YOL ...

  9. 涨点技巧:基于Yolov5的微小目标检测,多头检测头提升小目标检测精度

    1.Yolov5小目标介绍 在进行目标检测时,小目标会出现漏检或检测效果不佳等问题.YOLOv5有3个检测头,能够多尺度对目标进行检测,但对微小目标检测可能存在检测能力不佳的现象,因此添加一个微小物体 ...

最新文章

  1. java 建立网站_建立基本的Java Web站点
  2. Tensorflow 2.0的新特性
  3. 史上最接近上帝的方程!神秘的数字4.669,目前没有人能解开这个谜语......
  4. java 虚类private 继承_Java经典面试36题和答案
  5. C++ 推断进程是否存在
  6. 启动angular项目,端口被占用
  7. Reflector for .NET 下载问题
  8. Docker的Pull Digest和Image ID
  9. html手机端富文本,移动端富文本踩坑
  10. 阿里巴巴 开源软件列表
  11. 矩阵分析之 实矩阵分解(4)满秩分解,QR分解
  12. android 计算器,Android实战:计算器
  13. 国产示波器采用的ADC芯片
  14. 2B青年答疑:什么是2B青年?如何脱离2B青年行列?
  15. execve系统调用_Linux下的sys_execve系统调用
  16. PPC r0-r31寄存器介绍
  17. follow Sam哥 OS 课程的漫长之路
  18. java计算机毕业设计旅游景点展示平台的设计与实现源程序+mysql+系统+lw文档+远程调试
  19. 机器学习之理解Bias-Variance Tradeoff
  20. atoi和strtol的区别和使用

热门文章

  1. CSS3 稳固而知新: 居中
  2. PHP常用类型判断函数
  3. Java面试参考指南(二)
  4. Maze Problem(求最短距离)BFS
  5. 基于路由器网络诊断步骤和故障排除技巧
  6. 你是中层管理者?嗯,一个表面看似风光,实际却很 “鸡肋” 的重要岗位
  7. 蚂蚁某程序员吐槽前端招人难:一是因为要求高,二是因为招聘卷!网友却说:十万月薪也不去阿里!...
  8. 高德亿级流量接入层服务的演化之路
  9. 人才迁徙潮,2019年互联网各梯队排名重组,最适合程序员去的互联网公司有哪些?...
  10. 云计算时代,你真的懂 Docker 吗?