前脚美团刚发布YOLOv6, YOLO官方团队又放出新版本。
曾参与YOLO项目维护的大神Alexey Bochkovskiy在推特上声称:
官方版YOLOv7比以下版本的精度和速度都要好。
在论文中,团队详细对比了YOLOv7和其他变体的性能对比,并介绍v7版本的新变化。
话不多说,YOLOv7有多强一起来看实验结果。
论文中,实验以之前版本的YOLO和最先进的目标检测模型作为基准。
表格是YOLOv7模型在相同的参数设置下与其他版本的比较:
数据标绿代表性能相较于之前版本有所提升,参数量和计算量相较于之前版本,大部分均有所减少,AP也有所提升。
即使在云GPU模型上,最新模型仍可以保持较高的AP,与此同时计算量和参数量相较于之前模型也均有所下降。
YOLOv7可以很好地平衡速度与精度。
与现有的通用GPU和移动GPU的目标检测模型进行比较:
YOLOv7在速度(FPS)和精度(AP)均超过其他目标检测模型。
比如,在输入分辨率为1280时,将YOLOv7与YOLOR进行比较,YOLOv7-W6的推理速度比YOLOR-P6快8fps,检测率也提高了1%AP。
改进实时目标检测模型的性能,往往要从以下几点入手:
1、更快更强的网络架构;
2、更有效的特征集成方法;
3、更准确的检测方法;
4、更精确的损失函数;
5、更有效的标签分配方法;
6、更有效的训练方法。
YOLOv7主要从4、5、6入手设计性能更好的检测模型。
首先,YOLOv7扩展了高效长程注意力网络,称为Extended-ELAN(简称E-ELAN)。
在大规模的ELAN中,无论梯度路径长度和块的数量如何,网络都能达到稳定状态。
但是如果无限地堆叠计算块,这种稳定状态也可能会被破坏,参数利用率也会降低。
E-ELAN对基数(Cardinality)做了扩展(Expand)、乱序(Shuffle)、合并(Merge cardinality),能在不破坏原始梯度路径的情况下,提高网络的学习能力。
在架构方面,E-ELAN只改变了计算块中的体系结构,没有改变过渡层的体系结构。
除了保持原来ELAN的设计架构外,E-ELAN还可以引导不同的计算块组来学习更多样化的特性。
而后,YOLOv7采用基于级联的(Concatenation-based)模型缩放方法。
模型缩放是指调整模型的一些属性,生成不同尺度的模型,以满足不同推理速度的需求。
然而,模型缩放如果应用于基于连接的架构,当扩大或缩小执行深度时,基于连接的翻译层的计算块将减少或增加。
由此可以推断,对于基于级联的模型,不能单独分析不同的缩放因子,必须一起考虑。
基于级联的模型缩放方法是一个复合模型缩放方法,当缩放一个计算块的深度因子时,同时也要计算该块输出通道的变化。
然后,对过渡层以相同的变化量进行宽度因子缩放,这样就可以保持模型在初始设计时的特性,并保持最优结构。
在论文研究中,作者还设计了有计划的重新参数化卷积(Planned re-parameterized convolution)。
RepConv在VGG中有比较优异的性能,但当它直接应用于ResNet、DenseNet或者其他架构时,精度会明显降低。
这是因为RepConv中的直连(Identity connection)破坏了ResNet中的残差和DenseNet中的连接。
因此,论文研究中使用没有直连的RepConv(RepConvN)来设计网络结构。
在YOLOv7的标签分配机制中,需要同时考虑网络预测结果与基准,然后将软标签(综合考虑,优化之后的标签)分配到“label assigner”机制。
那么接下来,“软标签要分配给auxiliary head还是lead head呢?”
论文提出了一种新的标签分配法,如下图中的(d)、(e),基于lead head预测,生成从粗到细的层次标签,分别用于lead head和auxiliary head的学习。
图(d)让较浅的auxiliary head学习lead head已经学习到的信息,而输lead head则可以更专注于为学习到的残差信息。
而e图中,会生成两组软标签,即粗标签和细标签。auxiliary head不如lead head学习能力强,因此要重点优化它的召回率,避免丢失掉需要学习的信息。
目前,YOLOv7已官方开源,有兴趣的伙伴可以戳下文链接。
参考链接:
[1] https://twitter.com/alexeyab84/status/1544877675004788739
[2] https://arxiv.org/abs/2207.02696
[3] https://github.com/WongKinYiu/yolov7/releases