YOLOv7:新一代目标检测模型

YOLOv7是目标检测领域的最新突破,它在速度和准确性上都超越了其前代版本,如YOLOv5,将目标检测技术推向了新的高度。在这篇文章中,将深入探讨YOLOv7的工作原理,它背后的创新研究,以及如何使用YOLOv7训练自己的模型来识别自定义数据集中的对象。

YOLOv7模型的评估

YOLOv7模型的评估结果表明,与其他实时目标检测模型相比,它在推断速度(x轴)和准确性(y轴)方面都表现得更快、更准确。这种性能的提升得益于YOLOv7在网络架构和训练过程中所做的一系列创新改进。

YOLOv7的内部机制

YOLOv7模型是YOLO(You Only Look Once)家族的最新成员。YOLO模型是一种单阶段目标检测器,它通过一个主干网络对图像帧进行特征化,然后将这些特征在网络的“颈部”进行组合和混合,最后传递到网络的“头部”,YOLO在这里预测对象的位置和类别,并据此绘制边界框。

YOLO通过非最大抑制(NMS)进行后处理,以得到最终的预测结果。这种架构使得YOLO模型在计算机视觉机器学习社区中广受欢迎,因为它们小巧、灵活,并且可以在单个GPU上进行训练,这与大型科技公司推出的大型变换器架构形成对比,后者虽然有效,但在消费级硬件上运行起来更加困难。

YOLOv7的

YOLOv7模型由WongKinYiu和Alexey Bochkovskiy(AlexeyAB)共同开发。AlexeyAB从YOLO的原始Joseph Redmon手中接过了YOLO的火炬,后者因伦理问题退出了计算机视觉行业。WongKinYiu则以其在Cross Stage Partial Networks方面的研究而闻名,这使得YOLOv4和YOLOv5能够构建更高效的主干网络。

YOLOv7的不同之处

YOLOv7的旨在通过创建一种网络架构,在类似的推断速度下,比同行更准确地预测边界框,从而确立目标检测的最新标准。为了实现这一目标,YOLOv7的对YOLO网络和训练过程进行了多项改进。

YOLO网络在主干网络中的卷积层的效率对于高效的推断速度至关重要。WongKinYiu通过Cross Stage Partial Networks开始了最大化层效率的研究之路。在YOLOv7中,在这一主题上进行了研究,同时考虑了保持层在内存中的内存量以及梯度反向传播通过层的距离。梯度越短,网络的学习能力就越强。他们最终选择的层聚合是E-ELAN,这是ELAN计算块的扩展版本。

目标检测模型通常以一系列不同大小的模型发布,因为不同的应用需要不同水平的准确性和推断速度。通常,目标检测模型会考虑网络的深度、网络的宽度以及网络训练的分辨率。在YOLOv7中,在同时扩展网络深度和宽度的同时,将层连接在一起。消融研究表明,这种技术在不同大小的模型中保持了模型架构的最优性。

重参数化技术涉及对一组模型权重进行平均,以创建一个对它试图建模的一般模式更具鲁棒性的模型。在研究中,最近对模块级别的重参数化进行了关注,其中网络的一部分有自己的重参数化策略。YOLOv7的使用梯度流传播路径来查看哪些模块应该使用重参数化策略,哪些不应该。

YOLO网络头部负责网络的最终预测,但由于它位于网络的下游,因此添加一个位于网络中间的辅助头部可能是有益的。在训练过程中,不仅要监督这个检测头部,还要监督实际进行预测的头部。辅助头部的效率不如最终头部,因为它与预测之间的网络较少,因此YOLOv7的尝试了不同级别的监督,最终确定了一种从主要头部以不同粒度传递监督的粗到细定义。

YOLOv7代码库

YOLOv7的GitHub代码库包含了开始训练YOLOv7所需的所有代码。网络在PyTorch中定义。训练脚本、数据加载器和实用脚本都是用Python编写的。

python train.py --workers 8 --device 0 --batch-size 32 --data data/coco.yaml --img 640 640 --cfg cfg/training/yolov7.yaml --weights '' --name yolov7 --hyp data/hyp.scratch.p5.yaml

YOLOv7的下一步

在这里训练的YOLOv7模型都是针对COCO数据集中的80个通用类别。要将YOLOv7用于自己的应用,请观看指南,了解如何训练自己的自定义数据集上的YOLOv7。

常见问题解答

YOLOv7有多个版本。YOLOv7是模型的主要版本。YOLOv7-tiny是一个更小的模型,针对边缘设备上的推理进行了优化。还有YOLOv7-W6,通常用于云计算。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485