前端时间刚更新了文章,介绍了YOLOV5系列以及代码实现过程,突然间V6,V7版本相继发布,让爱技术的小伙伴吗一时不知所措,需要学习的东西还有很多,真是活到老,学到老。

模型对比

YOLOV7

YOLOv7 是 YOLO 系列中最先进的新型物体检测器。根据论文,它是迄今为止最快、最准确的实时物体检测算法。根据 YOLOv7 论文,最好的模型获得了 56.8% 的平均精度(AP),这是所有已知对象检测算法中最高的。各种模型的速度范围为 5-160 FPS。与基础模型相比,YOLOv7 将参数数量减少到40%,计算量减少 50%。作者团队也是在论文的一开头部分,对比了YOLO系列的速度与精度参数。具体可参考作者团队代码与论文

论文:https://arxiv.org/pdf/2207.02696.pdf代码:https://github.com/WongKinYiu/yolov7

YOLOv7 通过将性能提升一个档次建立了重要的基准。从YOLOv3开始,在极短的时间内,我们看到YOLO家族的新成员接踵而至。每个版本都引入了一些新的东西来提高性能。前期的文章,我们已经详细讨论了以前 YOLO 的不同版本。

高大上的YOLOV3对象检测算法,使用python也可轻松实现

使用python轻松实现高大上的YOLOV4对象检测算法

基于python的YOLOV5对象检测模型实现

——2——

YOLO系列模型骨干

YOLO 架构基于 FCNN(全连接神经网络),YOLO 框架具有三个主要组件。

  • Backbone

  • head

  • Neck

Backbone主要提取图像的基本特征,并通过Neck将它们馈送到HeadNeck收集由Backbone提取的特征图并创建特征金字塔。最后,头部由具有最终检测的输出层组成。下表显示了 YOLOv3、YOLOv4 和 YOLOv5 的架构。

YOLOv3、YOLOv4 和 YOLOv5

——3——

YOLOV7模型E-ELAN

YOLOv7 通过引入多项架构改革提高了速度和准确性。与 Scaled YOLOv4 类似,YOLOv7 主干不使用 ImageNet 预训练的主干。相反,模型完全使用 COCO 数据集进行训练。

E-ELAN

E-ELAN 是 YOLOv7 主干中的计算块。E-ELAN使用expand、shuffle、merge cardinality来实现在不破坏原有梯度路径的情况下不断增强网络学习能力的能力。

YOLOV7的模型缩放

不同的应用需要不同的模型。虽然有些人需要高精度的模型,但有些人优先考虑速度。

在缩放模型大小时,会考虑以下参数。

分辨率(输入图像的大小)宽度(通道数)深度(层数)阶段(特征金字塔的数量)

NAS(Network Architecture Search)是一种常用的模型缩放方法。研究人员使用它来迭代参数以找到最佳比例因子。但是,像 NAS 这样的方法会进行参数特定的缩放。在这种情况下,比例因子是独立的。YOLOv7 论文的作者表明,它可以通过复合模型缩放方法进一步优化。在这里,对于基于连接的模型,宽度和深度是连贯地缩放的。

模型缩放

——5——

YOLOV7模型的Bag of Freebies

Bag of Freebies 是在不增加训练成本的情况下提高模型性能的方法。YOLOv7 引入了以下 BoF 方法。重新参数化是训练后用于改进模型的一种技术。它增加了训练时间,但是提高了推理结果。有两种类型的重新参数化(模型级和模块级)用于最终确定模型。

模型级别的重新参数化可以通过以下两种方式完成。

1、使用不同的训练数据但相同的设置,训练多个模型。然后平均它们的权重以获得最终模型。2、取不同时期模型权重的平均值。

最近,模块级别的重新参数化在研究中获得了很大的关注。在这种方法中,模型训练过程被分成多个模块。输出再被集成以获得最终模型。YOLOv7 论文中的作者展示了执行模块级集成的方法。

在上图中,E-ELAN 计算块的 3×3 卷积层被替换为 RepConv 层。我们通过切换或替换 RepConv、3×3 Conv 和 Identity 连接的位置来进行实验。包括 RepConv,YOLOv7 还对 Conv-BN(Convolution Batch Normalization)、OREPA(Online Convolutional Re-parameterization)和 YOLO-R 进行了重新参数化,以获得最佳结果。

——6——

YOLOV7模型的Lead Head与lead loss

YOLOv7 继承了YOLO系列的框架,但不以单头为限。它有多个头可以关注更多的信息,这跟我们最近讲解的Transformer模型的多头注意力机制有点类似。

当然Transformer最初是应用再NLP领域 ,但是随着Transformer模型的大火,自注意力机制有这么实用,人们在想是否Transformer也可以替代CNN卷积神经网络来进行CV的检测任务,或者更多的CV的下游任务。随着vision Transformer与SWIN Transformer 2篇论文的发布,让大家知道Transformer模型,不仅可以应用在NLP领域,也同样可以应用在CV领域,这2个Transformer都会在如下专栏进行介绍。

更多Transformer 视频动画教程请参考头条号:人工智能研究所

在 YOLOv7 中,负责最终输出的 head 称为Lead Head。而中间层用来辅助训练的头叫做辅助头。在辅助损失的帮助下,辅助头的权重被更新。它允许深度监督并且模型学习得更好。这些概念与Lead HeadLabel Assigner 密切相关。标签分配器是一种将网络预测结果与基本事实一起考虑然后分配软标签的机制。需要注意的是,标签分配器不会生成硬标签,而是生成软标签粗标签。以上这些概念,后期,我们将进行分享YOLOv7代码时,进行一一分享。

——7——

结论

我们从最后作者团队做的实验,可以看出,其模型检测精度与速度都超过了其他YOLO系列

从 YOLOv7-Tiny 模型开始,参数刚刚超过 600 万。它的验证 AP 为 35.2%,击败了具有相似参数的 YOLOv4-Tiny 模型。

具有近 3700 万个参数的 YOLOv7 模型提供了 51.2% 的 AP,再次击败了具有更多参数的 YOLOv4 和 YOLOR 的变体。

YOLO7 系列中较大的模型,YOLOv7-X、YOLOv7-E6、YOLOv7-D6 和 YOLOv7-E6E。所有这些都击败了 YOLOR 模型,它们的参数数量相似,AP 分别为 52.9%、55.9%、56.3% 和 56.8%。

除了对象检测外,YOLOV7系列也提出了Yolov7-mask & YOLOv7-pose,这些也大大提高了模型的精度与速度,我们一起期待来代码实现它吧。