前端时间刚更新了文章,介绍了YOLOV5系列以及代码实现过程,突然间V6,V7版本相继发布,让爱技术的小伙伴吗一时不知所措,需要学习的东西还有很多,真是活到老,学到老。 模型对比 1 YOLOV7 YOLOv7是YOLO系列中最先进的新型物体检测器。根据论文,它是迄今为止最快、最准确的实时物体检测算法。根据YOLOv7论文,最好的模型获得了56。8的平均精度(AP),这是所有已知对象检测算法中最高的。各种模型的速度范围为5160FPS。与基础模型相比,YOLOv7将参数数量减少到40,计算量减少50。作者团队也是在论文的一开头部分,对比了YOLO系列的速度与精度参数。具体可参考作者团队代码与论文ahrefhttps:www。bs178。comlunwentargetblankclassinfotextkey论文a:https:arxiv。orgpdf2207。02696。pdf代码:https:github。comWongKinYiuyolov7 YOLOv7通过将性能提升一个档次建立了重要的基准。从YOLOv3开始,在极短的时间内,我们看到YOLO家族的新成员接踵而至。每个版本都引入了一些新的东西来提高性能。前期的文章,我们已经详细讨论了以前YOLO的不同版本。 高大上的YOLOV3对象检测算法,使用python也可轻松实现 使用python轻松实现高大上的YOLOV4对象检测算法 基于python的YOLOV5对象检测模型实现 2 YOLO系列模型骨干 YOLO架构基于FCNN(全连接神经网络),YOLO框架具有三个主要组件。BackboneheadNeck Backbone主要提取图像的基本特征,并通过Neck将它们馈送到Head。Neck收集由Backbone提取的特征图并创建特征金字塔。最后,头部由具有最终检测的输出层组成。下表显示了YOLOv3、YOLOv4和YOLOv5的架构。 YOLOv3、YOLOv4和YOLOv5 3 YOLOV7模型骨干 YOLOv7通过引入多项架构改革提高了速度和准确性。与ScaledYOLOv4类似,YOLOv7主干不使用ImageNet预训练的主干。相反,模型完全使用COCO数据集进行训练。 EELAN EELAN是YOLOv7主干中的计算块。EELAN使用expand、shuffle、mergecardinality来实现在不破坏原有梯度路径的情况下不断增强网络学习能力的能力。 4 YOLOV7的模型缩放 不同的应用需要不同的模型。虽然有些人需要高精度的模型,但有些人优先考虑速度。 在缩放模型大小时,会考虑以下参数。分辨率(输入图像的大小)宽度(通道数)深度(层数)阶段(特征金字塔的数量) NAS(NetworkArchitectureSearch)是一种常用的模型缩放方法。研究人员使用它来迭代参数以找到最佳比例因子。但是,像NAS这样的方法会进行参数特定的缩放。在这种情况下,比例因子是独立的。YOLOv7论文的作者表明,它可以通过复合模型缩放方法进一步优化。在这里,对于基于连接的模型,宽度和深度是连贯地缩放的。 模型缩放 5 YOLOV7模型的BagofFreebies BagofFreebies是在不增加训练成本的情况下提高模型性能的方法。YOLOv7引入了以下BoF方法。重新参数化是训练后用于改进模型的一种技术。它增加了训练时间,但是提高了推理结果。有两种类型的重新参数化(模型级和模块级)用于最终确定模型。 模型级别的重新参数化可以通过以下两种方式完成。1、使用不同的训练数据但相同的设置,训练多个模型。然后平均它们的权重以获得最终模型。2、取不同时期模型权重的平均值。 最近,模块级别的重新参数化在研究中获得了很大的关注。在这种方法中,模型训练过程被分成多个模块。输出再被集成以获得最终模型。YOLOv7论文中的作者展示了执行模块级集成的方法。 在上图中,EELAN计算块的33卷积层被替换为RepConv层。我们通过切换或替换RepConv、33Conv和Identity连接的位置来进行实验。包括RepConv,YOLOv7还对ConvBN(ConvolutionBatchNormalization)、OREPA(OnlineConvolutionalReparameterization)和YOLOR进行了重新参数化,以获得最佳结果。 6 YOLOV7模型的LeadHead与leadloss YOLOv7继承了YOLO系列的框架,但不以单头为限。它有多个头可以关注更多的信息,这跟我们最近讲解的Transformer模型的多头注意力机制有点类似。 当然Transformer最初是应用再NLP领域,但是随着Transformer模型的大火,自注意力机制有这么实用,人们在想是否Transformer也可以替代CNN卷积神经网络来进行CV的检测任务,或者更多的CV的下游任务。随着visionTransformer与SWINTransformer2篇论文的发布,让大家知道Transformer模型,不仅可以应用在NLP领域,也同样可以应用在CV领域,这2个Transformer都会在如下专栏进行介绍。 在YOLOv7中,负责最终输出的head称为LeadHead。而中间层用来辅助训练的头叫做辅助头。在辅助损失的帮助下,辅助头的权重被更新。它允许深度监督并且模型学习得更好。这些概念与LeadHead和LabelAssigner密切相关。标签分配器是一种将网络预测结果与基本事实一起考虑然后分配软标签的机制。需要注意的是,标签分配器不会生成硬标签,而是生成软标签和粗标签。以上这些概念,后期,我们将进行分享YOLOv7代码时,进行一一分享。 7 结论 我们从最后作者团队做的实验,可以看出,其模型检测精度与速度都超过了其他YOLO系列 从YOLOv7Tiny模型开始,参数刚刚超过600万。它的验证AP为35。2,击败了具有相似参数的YOLOv4Tiny模型。 具有近3700万个参数的YOLOv7模型提供了51。2的AP,再次击败了具有更多参数的YOLOv4和YOLOR的变体。 YOLO7系列中较大的模型,YOLOv7X、YOLOv7E6、YOLOv7D6和YOLOv7E6E。所有这些都击败了YOLOR模型,它们的参数数量相似,AP分别为52。9、55。9、56。3和56。8。 除了对象检测外,YOLOV7系列也提出了Yolov7maskYOLOv7pose,这些也大大提高了模型的精度与速度,我们一起期待来代码实现它吧。