作者:Maxim Ivanov
编译:ronghuaiyang
导读
在本文的前几部分中,我们回顾了 YOLO 家族的前 9 种架构。在最后一篇文章中,我们将介绍目前 3 种最新架构。
YOLOR
作者
Chien-Yao Wang, I-Hau Yeh, Hong-Yuan Mark Liao (Taiwan).
主要论文
“You Only Learn One Representation: Unified Network for Multiple Tasks”, https://arxiv.org/pdf/2105.04206.pdf, published date 2021/05.
代码仓库
https://github.com/WongKinYiu/yolor, 502/1.8k, GPL-3.0 license.
性能比较
这次这个名字的解释方式有点不同,你只学习一种表示。作者与YOLO的先前版本无关,在YOLOR中,概念也与YOLO有些不同。
知识有隐性知识(对先前经验的概括)和显性知识(通过感官感知)。因此,理解图片中显示的内容的人要比不理解的这些的普通神经网络对图像的处理要好得多。
卷积神经网络通常执行一项特定任务,同时可以训练它们同时解决多项任务,这是YOLOR的目标。卷积网络通常是为了解决单个问题而创建的。当他们学习解析输入以获得输出时,YOLOR试图迫使卷积网络做两件事:
- 了解如何获取输出
- 尝试确定所有不同的输出可能是什么。
它可能有一个出口,而不是只有一个出口。
YOLOR试图结合显性和隐性知识。关于神经网络,它们的显性知识存储在靠近输入的层中,而隐性知识存储在更远的层中。因此,YOLOR成为一个统一的神经网络。
结构特点
YOLOR的结构
本文描述了在神经网络中整合隐性和显性知识的过程的关键点。
- 在学习隐知识的过程中引入了内核空间对齐、预测细化和多任务学习。
- 向量、神经网络和矩阵分解是用于对隐知识进行建模并分析其有效性的方法。
优点
- 发布时的检测精度高于竞争对手
- 发布时的检测率高于竞争对手
局限性
- GPL-3.0 许可证有义务公开源代码
YOLOv6 aka MT-YOLOv6
作者
来自美团的团队。
主要论文
最初,只有美团的博客上有一篇官方文章:
https://tech.meituan.com/2022/06/23/yolov6-a-fast-and-accurate-target-detection-framework-is-opening-source.html, publication date 2022/06
“YOLOv6: A Single-Stage Object Detection Framework for Industrial Applications”, https://arxiv.org/pdf/2209.02976.pdf, publication date 2022/09.
代码仓库
https://github.com/meituan/YOLOv6, 550/3.8k, GPL-3.0 license.
性能对比
结构特点
v6 的改进集中在三个主要方面:
1、Backbone和Neck部分的设计针对硬件进行了优化
2、解耦的head,精度更高
3、有效的训练策略
Backbone 和 neck 的设计
这个想法是利用硬件,如处理器内核的计算特性、内存带宽等。进行有效推理。
EfficientRep Backbone
neck中用到的Rep-Pan
为此,作者分别使用Rep-Pan和EfficientRep模块重新设计了架构的neck部分和backbone。
美团团队进行的实验表明,计算延迟显著降低和检测精度显著提升。特别是,与YOLOv5-nano模型相比,YOLOv6-nano的速度提高了21%,精度提高了3.6%。
解耦head
分叉的head首次出现在 v5 中。它旨在单独计算网络的分类部分和回归部分。在 v6 中,此方法已得到改进。
有效的 Decoupled Head
高效的训练策略
这些训练策略包括:
- 无anchor模式
- SimOTA标签分配策略
- SIoU框回归损失
消融实验
优点
- 发布时的检测精度高于竞争对手
- 发布时的检测率高于竞争对手
- 使用标准的 PyTorch 框架
局限性
- GPL-3.0 许可证有义务公开源代码
YOLOv7
作者
Chien-Yao Wang, Alexey Bochkovskiy, Hong-Yuan Mark Liao.
作者团队与YOLOv4相同。
主要论文
“YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors”, https://arxiv.org/pdf/2207.02696.pdf, publication date 2022/07.
代码仓库
https://github.com/wongkinyiu/yolov7, 870/4.6k, GPL-3.0 license.
性能比较
与其他实时目标检测器相比,所提出的方法实现了最先进的性能。
![img](The evolution of the YOLO neural networks family from v1 to v7-3.assets/12dc5vf34BvTE4axKRJzk7g.png)
结构特点
Backbone的主要计算单元是E-ELAN(扩展高效层聚合网络)
它的设计考虑了以下影响计算准确性和速度的因素:
- 内存访问成本
- I/O 比率
- 元素操作
- 激活
- 梯度路径
模型尺度,不同的应用需要不同大小的模型。在某些情况下,检测精度更重要 —— 那么模型应该有更多的可训练参数。在其他情况下,速度更重要,然后模型应该更小,以便推理得更快。
在缩放 v7 模型 时,将考虑以下超参数:
- 输入分辨率
- 宽度(通道数)
- 深度(层数)
- 级联(特征金字塔的数量)
下图显示了模型缩放的示例。
训练的细微差别
本文讨论了一组方法,这些方法可以在不增加模型训练成本的情况下提高模型的性能。
重新参数化是一种在训练后应用于改进模型的技术。它增加了训练时间,但改善了推理结果。有两种类型的重参数化,模型级别和模块级别。
Lead head生成精细的损失,Aux head生成粗略的损失。
可以通过两种方式完成模型重新参数化:
- 使用不同的训练数据但相同的设置,训练多个模型。然后平均它们的权重以获得最终模型。
- 不同时期模型权重的平均。
模块化重参数化更常用于研究。在这种方法中,模型训练过程被划分为大量的模块。将输出集成以获得最终模型。
在 v7 架构中,可以有多个head来执行不同的任务。因此,每个head都有自己的损失。标签分配器是一种将网络的预测与GT预测一起考虑并分配软标签的机制。它生成soft标签,而不是生成hard标签。
Lead 分配器(left) 和 由粗到细引导的分配器 (right)
优点
- 发布时的检测精度高于竞争对手
- 发布时的检测率高于竞争对手
- 使用标准的 PyTorch 框架
局限性
- GPL-3.0 许可证有义务公开源代码
总结
如果我们将YOLO家族的演变简化为一个表,我们会得到以下结果:
当然,该表并未提及提高性能的所有改进和发现。但是,随着家庭的发展,可以看到一些模式。
Backbone 最初由一个分支(GoogLeNet,VGG,Darknet)组成,然后过渡到包含跳跃连接(跨阶段部分连接CSPDarknet,CSPRepResNet,Extended-ELAN)的架构。显然,这种联系的存在比没有这种联系提供了优势。
Neck 最初也由一个分支组成,然后以特征金字塔网络的各种修改形式分支出来,这允许在不同尺度上保持物体检测的准确性。
Head 在早期版本中只有一个head,它包含在网络的一个分支中所有输出参数:class,objectness,bbox的坐标。将来,事实证明将它们分成单独的head会更有效。也从基于anchor的范式转变为无anchor的范式(v7 除外, 由于某种原因,其中仍然存在anchor,实现无anchor的 v7 并将结果与有anchor的结果进行比较会很有趣)。
增强:早期增强,如仿射变换,HSV抖动和曝光变化非常简单,不会改变物体的背景或环境。最近的:Mixup,Mosaic,Cutout等,更加智能,因为它们改变了图像的内容,而不仅仅是它的形式。似乎平衡比例的增强的两个方向(经典和现代)对于神经网络的有效训练很重要。
最后,我想给出一个完整的演变图:
—END—
英文原文:
https://medium.com/deelvin-machine-learning/the-evolution-of-the-yolo-neural-networks-family-from-v1-to-v7-4d4fab3c4db7
本文暂时没有评论,来添加一个吧(●'◡'●)