跳至内容

YOLOv7:可训练的免费书包

YOLOv7 是最先进的实时物体检测器,在 5 FPS 到 160 FPS 的范围内,其速度和准确性都超过了所有已知的物体检测器。在GPU V100 上,YOLOv7 的准确率(56.8% AP)在 30 FPS 或更高的所有已知实时物体检测器中是最高的。此外,YOLOv7 在速度和准确性上都优于 YOLOR、YOLOX、Scaled-YOLOv4、YOLOv5 等其他物体检测器。该模型是在 MS COCO 数据集上从头开始训练的,没有使用任何其他数据集或预先训练的权重。YOLOv7 的源代码可在 GitHub 上获取。

YOLOv7 与 SOTA 物体探测器的比较

SOTA 物体探测器的比较

从YOLO 对比表中的结果可以看出,所提出的方法在速度和准确性之间的权衡是最全面的。如果将 YOLOv7-tiny-SiLU 与YOLOv5-N (r6.1) 进行比较,我们的方法速度快 127 fps,AP 精确度高 10.7%。此外,YOLOv7 的帧速率为 161 fps,AP 率为 51.4%,而 PPYOLOE-L 的帧速率仅为 78 fps。在参数使用方面,YOLOv7 比 PPYOLOE-L 少 41%。如果将推理速度为 114 帧/秒的 YOLOv7-X 与推理速度为 99 帧/秒的YOLOv5-L (r6.1) 相比,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 APtest/ val
50-95
APtest
50
APtest
75
APtest
S
APtest
M
APtest
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 引入了几项关键功能:

  1. 模型重新参数化:YOLOv7 提出了一种有计划的重新参数化模型,这是一种适用于不同网络层的策略,具有梯度传播路径的概念。

  2. 动态标签分配:多输出层模型的训练提出了一个新问题:"如何为不同分支的输出分配动态目标?为了解决这个问题,YOLOv7 引入了一种新的标签分配方法,即从粗到细的引导标签分配法。

  3. 扩展和复合缩放YOLOv7 为实时对象检测器提出了 "扩展 "和 "复合缩放 "方法,可有效利用参数和计算。

  4. 效率:YOLOv7 提出的方法能有效减少最先进的实时物体检测器约 40% 的参数和 50% 的计算量,推理速度更快,检测精度更高。

使用示例

截至本文撰写之时,Ultralytics 目前不支持 YOLOv7 模型。因此,任何有兴趣使用 YOLOv7 的用户都需要直接访问 YOLOv7 GitHub 存储库,以获取安装和使用说明。

下面简要介绍使用 YOLOv7 的典型步骤:

  1. 访问 YOLOv7 GitHub 代码库:https://github.com/WongKinYiu/yolov7。

  2. 按照 README 文件中提供的说明进行安装。这通常包括克隆版本库、安装必要的依赖项和设置任何必要的环境变量。

  3. 安装完成后,您可以根据资源库中提供的使用说明训练和使用模型。这通常包括准备数据集、配置模型参数、训练模型,然后使用训练好的模型执行对象检测。

请注意,具体步骤可能会根据您的具体使用情况和 YOLOv7 代码库的当前状态而有所不同。因此,强烈建议直接参考 YOLOv7 GitHub 代码库中提供的说明。

我们对由此造成的不便深表歉意,并将努力在支持 YOLOv7 后更新本文档,提供Ultralytics 的使用示例。

引文和致谢

我们衷心感谢 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}
}

YOLOv7 的原始论文可在arXiv 上找到。作者公开了他们的工作,代码库可以在GitHub 上访问。我们感谢他们为推动这一领域的发展和让更多人了解他们的工作所做的努力。

常见问题

什么是 YOLOv7,为什么它被认为是实时物体检测领域的一项突破?

YOLOv7 是一种先进的实时物体检测模型,其速度和准确性无与伦比。它在参数使用和推理速度方面都超过了 YOLOX、YOLOv5 和 PPYOLOE 等其他模型。YOLOv7 的显著特点包括模型重参数化和动态标签分配,在不增加推理成本的情况下优化了性能。有关 YOLOv7 架构的更多技术细节,以及与其他先进物体检测器的比较指标,请参阅YOLOv7 论文

YOLOv7 与之前的YOLO 型号(如 YOLOv4 和YOLOv5 )相比有何改进?

YOLOv7 引入了多项创新,包括模型重参数化和动态标签分配,从而增强了训练过程并提高了推理的准确性。与YOLOv5 相比,YOLOv7 显著提高了速度和准确性。例如,YOLOv7-X 与YOLOv5-X 相比,准确率提高了 2.2%,参数减少了 22%。详细比较见YOLOv7 与 SOTA 物体探测器性能比较表。

我可以在Ultralytics 工具和平台上使用 YOLOv7 吗?

目前,Ultralytics 的工具和平台还不直接支持 YOLOv7。有兴趣使用 YOLOv7 的用户需要遵循YOLOv7 GitHub 代码库中提供的安装和使用说明。对于其他最先进的模型,您可以使用Ultralytics 工具(如Ultralytics HUB)进行探索和训练。

如何为自定义对象检测项目安装和运行 YOLOv7?

要安装和运行 YOLOv7,请按照以下步骤操作:

  1. 克隆 YOLOv7 版本库:
    git clone https://github.com/WongKinYiu/yolov7
    
  2. 导航至克隆目录并安装依赖项:
    cd yolov7
    pip install -r requirements.txt
    
  3. 根据资源库中提供的使用说明准备数据集和配置模型参数。 如需进一步指导,请访问 YOLOv7 GitHub 代码库获取最新信息和更新。

YOLOv7 中引入了哪些主要功能和优化?

YOLOv7 提供了几项关键功能,彻底改变了实时目标检测:

  • 模型重新参数化:通过优化梯度传播路径提高模型性能。
  • 动态标签分配:使用由粗到细的引导方法,为不同分支的输出分配动态目标,提高准确性。
  • 扩展和复合缩放:有效利用参数和计算,为各种实时应用扩展模型。
  • 效率:与其他最先进的模型相比,参数数量减少 40%,计算量减少 50%,同时推理速度更快。 有关这些功能的更多详情,请参阅YOLOv7 概述部分。


创建于 2023-11-12,更新于 2024-07-04
作者:glenn-jocher(8)、sergiuwaxmann(1)

评论