YOLOv7: 可训练的免费赠品
YOLOv7是一种最先进的实时目标检测器,在5 FPS到160 FPS的速度范围内,其速度和准确性均超越了所有已知的目标检测器。在GPU V100上,30 FPS或更高的所有已知实时目标检测器中,YOLOv7的准确性最高(56.8% AP)。此外,YOLOv7在速度和准确性方面优于其他目标检测器,如YOLOR、YOLOX、Scaled-YOLOv4、YOLOv5等。该模型是从头开始在MS COCO数据集上训练的,没有使用任何其他数据集或预训练权重。YOLOv7的源代码可在GitHub上获取。
SOTA目标检测器的比较
从YOLO比较表中的结果我们知道,所提出的方法在速度-准确性权衡方面全面最佳。如果我们将YOLOv7-tiny-SiLU与YOLOv5-N(r6.1)进行比较,我们的方法在速度上快127 FPS,在AP上准确性高10.7%。此外,YOLOv7在161 FPS的帧率下达到51.4% AP,而具有相同AP的PPYOLOE-L帧率仅为78 FPS。在参数使用方面,YOLOv7比PPYOLOE-L少41%。如果我们将YOLOv7-X与114 FPS的推理速度与YOLOv5-L(r6.1)的99 FPS推理速度进行比较,YOLOv7-X可以将AP提高3.9%。如果将YOLOv7-X与相似规模的YOLOv5-X(r6.1)进行比较,YOLOv7-X的推理速度快31 FPS。此外,在参数数量和计算量方面,YOLOv7-X比YOLOv5-X(r6.1)减少了22%的参数和8%的计算量,但AP提高了2.2%(来源)。
模型 | 参数 (M) |
FLOPs (G) |
尺寸 (像素) |
FPS | AP测试 / 验证 50-95 |
AP测试 50 |
AP测试 75 |
AP测试 S |
AP测试 M |
AP测试 L |
---|---|---|---|---|---|---|---|---|---|---|
YOLOX-S | 9.0M | 26.8G | 640 | 102 | 40.5% / 40.5% | - | - | - | - | - |
YOLOX-M | 25.3M | 73.8G | 640 | 81 | 47.2% / 46.9% | - | - | - | - | - |
YOLOX-L | 54.2M | 155.6G | 640 | 69 | 50.1% / 49.7% | - | - | - | - | - |
YOLOX-X | 99.1M | 281.9G | 640 | 58 | 51.5% / 51.1% | - | - | - | - | - |
PPYOLOE-S | 7.9M | 17.4G | 640 | 208 | 43.1% / 42.7% | 60.5% | 46.6% | 23.2% | 46.4% | 56.9% |
PPYOLOE-M | 23.4M | 49.9G | 640 | 123 | 48.9% / 48.6% | 66.5% | 53.0% | 28.6% | 52.9% | 63.8% |
PPYOLOE-L | 52.2M | 110.1G | 640 | 78 | 51.4% / 50.9% | 68.9% | 55.6% | 31.4% | 55.3% | 66.1% |
PPYOLOE-X | 98.4M | 206.6G | 640 | 45 | 52.2% / 51.9% | 69.9% | 56.5% | 33.3% | 56.3% | 66.4% |
YOLOv5-N (r6.1) | 1.9M | 4.5G | 640 | 159 | - / 28.0% | - | - | - | - | - |
YOLOv5-S (r6.1) | 7.2M | 16.5G | 640 | 156 | - / 37.4% | - | - | - | - | - |
YOLOv5-M (r6.1) | 21.2M | 49.0G | 640 | 122 | - / 45.4% | - | - | - | - | - |
YOLOv5-L (r6.1) | 46.5M | 109.1G | 640 | 99 | - / 49.0% | - | - | - | - | - |
YOLOv5-X (r6.1) | 86.7M | 205.7G | 640 | 83 | - / 50.7% | - | - | - | - | - |
YOLOR-CSP | 52.9M | 120.4G | 640 | 106 | 51.1% / 50.8% | 69.6% | 55.7% | 31.7% | 55.3% | 64.7% |
YOLOR-CSP-X | 96.9M | 226.8G | 640 | 87 | 53.0% / 52.7% | 71.4% | 57.9% | 33.7% | 57.1% | 66.8% |
YOLOv7-tiny-SiLU | 6.2M | 13.8G | 640 | 286 | 38.7% / 38.7% | 56.7% | 41.7% | 18.8% | 42.4% | 51.9% |
YOLOv7 | 36.9M | 104.7G | 640 | 161 | 51.4% / 51.2% | 69.7% | 55.9% | 31.8% | 55.5% | 65.0% |
YOLOv7-X | 71.3M | 189.9G | 640 | 114 | 53.1% / 52.9% | 71.2% | 57.8% | 33.8% | 57.1% | 67.4% |
YOLOv5-N6 (r6.1) | 3.2M | 18.4G | 1280 | 123 | - / 36.0% | - | - | - | - | - |
YOLOv5-S6 (r6.1) | 12.6M | 67.2G | 1280 | 122 | - / 44.8% | - | - | - | - | - |
YOLOv5-M6 (r6.1) | 35.7M | 200.0G | 1280 | 90 | - / 51.3% | - | - | - | - | - |
YOLOv5-L6 (r6.1) | 76.8M | 445.6G | 1280 | 63 | - / 53.7% | - | - | - | - | - |
YOLOv5-X6 (r6.1) | 140.7M | 839.2G | 1280 | 38 | - / 55.0% | - | - | - | - | - |
YOLOR-P6 | 37.2M | 325.6G | 1280 | 76 | 53.9% / 53.5% | 71.4% | 58.9% | 36.1% | 57.7% | 65.6% |
YOLOR-W6 | 79.8G | 453.2G | 1280 | 66 | 55.2% / 54.8% | 72.7% | 60.5% | 37.7% | 59.1% | 67.1% |
YOLOR-E6 | 115.8M | 683.2G | 1280 | 45 | 55.8% / 55.7% | 73.4% | 61.1% | 38.4% | 59.7% | 67.7% |
YOLOR-D6 | 151.7M | 935.6G | 1280 | 34 | 56.5% / 56.1% | 74.1% | 61.9% | 38.9% | 60.4% | 68.7% |
YOLOv7-W6 | 70.4M | 360.0G | 1280 | 84 | 54.9% / 54.6% | 72.6% | 60.1% | 37.3% | 58.7% | 67.1% |
YOLOv7-E6 | 97.2M | 515.2G | 1280 | 56 | 56.0% / 55.9% | 73.5% | 61.2% | 38.0% | 59.9% | 68.4% |
YOLOv7-D6 | 154.7M | 806.8G | 1280 | 44 | 56.6% / 56.3% | 74.0% | 61.8% | 38.8% | 60.1% | 69.5% |
YOLOv7-E6E | 151.7M | 843.2G | 1280 | 36 | 56.8% / 56.8% | 74.4% | 62.1% | 39.3% | 60.5% | 69.0% |
概述
实时目标检测是许多计算机视觉系统中的重要组成部分,包括多目标跟踪、自动驾驶、机器人和医学图像分析。近年来,实时目标检测的发展集中在设计高效的架构和提高各种CPU、GPU和神经处理单元(NPU)的推理速度上。YOLOv7支持从边缘到云端的移动GPU和GPU设备。
与传统专注于架构优化的实时目标检测器不同,YOLOv7引入了对训练过程的优化。这包括旨在在不增加推理成本的情况下提高目标检测准确性的模块和优化方法,这一概念被称为“可训练的免费赠品”。
关键特性
YOLOv7引入了几个关键特性:
-
模型重参数化:YOLOv7提出了一种计划的重参数化模型,这是一种适用于具有梯度传播路径概念的不同网络层的策略。
-
动态标签分配:具有多个输出层的模型训练提出了一个新的问题:“如何为不同分支的输出分配动态目标?”为了解决这个问题,YOLOv7引入了一种新的标签分配方法,称为粗到细的引导标签分配。
-
扩展和复合缩放:YOLOv7提出了适用于实时目标检测器的“扩展”和“复合缩放”方法,可以有效利用参数和计算。
-
效率:YOLOv7提出的方法可以有效减少最先进的实时目标检测器约40%的参数和50%的计算量,并且具有更快的推理速度和更高的检测准确性。
使用示例
截至撰写本文时,Ultralytics目前不支持YOLOv7模型。因此,任何有兴趣使用YOLOv7的用户都需要直接参考YOLOv7 GitHub仓库以获取安装和使用说明。
以下是您可能采取的典型步骤的简要概述,以使用YOLOv7:
-
访问YOLOv7 GitHub仓库:https://github.com/WongKinYiu/yolov7。
-
按照README文件中提供的说明进行安装。这通常涉及克隆仓库、安装必要的依赖项以及设置任何必要的环境变量。
-
安装完成后,您可以按照仓库中提供的使用说明训练和使用模型。这通常涉及准备您的数据集、配置模型参数、训练模型,然后使用训练好的模型进行目标检测。
请注意,具体步骤可能会根据您的具体用例和YOLOv7仓库的当前状态而有所不同。因此,强烈建议直接参考YOLOv7 GitHub仓库中提供的说明。
我们对由此可能带来的任何不便表示歉意,并将努力在Ultralytics实现对YOLOv7的支持后更新此文档,提供使用示例。
引用和致谢
我们要感谢YOLOv7的作者在实时目标检测领域做出的重要贡献:
@article{wang2022yolov7,
title={YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors},
author={Wang, Chien-Yao and Bochkovskiy, Alexey and Liao, Hong-Yuan Mark},
journal={arXiv preprint arXiv:2207.02696},
year={2022}
}
The original YOLOv7 paper can be found on arXiv. The authors have made their work publicly available, and the codebase can be accessed on GitHub. We appreciate their efforts in advancing the field and making their work accessible to the broader community.
FAQ
什么是YOLOv7,为什么它被认为是实时目标检测的突破?
YOLOv7是一种尖端的实时目标检测模型,实现了无与伦比的速度和准确性。它在参数使用和推理速度方面超越了其他模型,如YOLOX、YOLOv5和PPYOLOE。YOLOv7的显著特点包括其模型重参数化和动态标签分配,这些优化在不增加推理成本的情况下提升了其性能。有关其架构的更多技术细节以及与其他最先进目标检测器的比较指标,请参阅YOLOv7论文。
YOLOv7如何改进之前的YOLO模型,如YOLOv4和YOLOv5?
YOLOv7引入了多项创新,包括模型重参数化和动态标签分配,这些创新增强了训练过程并提高了推理准确性。与YOLOv5相比,YOLOv7显著提升了速度和准确性。例如,YOLOv7-X在准确性上提高了2.2%,同时减少了22%的参数,相比于YOLOv5-X。详细的比较可以在性能表YOLOv7与最先进目标检测器的比较中找到。
我可以在Ultralytics工具和平台上使用YOLOv7吗?
截至目前,Ultralytics在其工具和平台上不直接支持YOLOv7。有兴趣使用YOLOv7的用户需要遵循YOLOv7 GitHub仓库中提供的安装和使用说明。对于其他最先进的模型,您可以使用Ultralytics工具如Ultralytics HUB进行探索和训练。
如何为自定义目标检测项目安装和运行YOLOv7?
要安装和运行YOLOv7,请按照以下步骤操作:
- 克隆YOLOv7仓库:
- 导航到克隆的目录并安装依赖项:
- 根据仓库中提供的使用说明准备您的数据集并配置模型参数。 如需进一步指导,请访问YOLOv7 GitHub仓库获取最新信息和更新。
YOLOv7引入了哪些关键特性和优化?
YOLOv7提供了多项关键特性,革新了实时目标检测:
- 模型重参数化:通过优化梯度传播路径提升模型性能。
- 动态标签分配:使用从粗到细的引导方法为不同分支的输出分配动态目标,提高准确性。
- 扩展和复合缩放:高效利用参数和计算,为各种实时应用缩放模型。
- 效率:与其他最先进模型相比,减少了40%的参数和50%的计算量,同时实现了更快的推理速度。 有关这些特性的更多详细信息,请参阅YOLOv7概述部分。