新闻详情

新闻详情

首页 / 资讯中心 / 详情

YOLOv7 完整实战指南:从 COCO 训练、测试到推理与 ONNX/TensorRT 导出

发布时间:2026/10/2 1:43:19来源:尧图网络
YOLOv7 完整实战指南:从 COCO 训练、测试到推理与 ONNX/TensorRT 导出
人工智能深度学习计算机视觉【免费下载链接】yolov7Implementation of paper - YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors项目地址https://gitcode.com/GitHub_Trending/yo/yolov7点击查看免费下载导读本文以 README.md 为主线系统讲解 YOLOv7 官方仓库的完整工作流环境搭建、COCO 数据准备、训练与迁移学习、精度测试、图片/视频推理、重参数化以及 PyTorch 向 ONNX、TensorRT、CoreML 的模型导出。读完本文你将能够复现 MS COCO 上 51.4% AP 的基准结果掌握单卡/多卡训练命令的每个参数含义并学会把模型导出为可直接部署的端到端推理格式。YOLOv7 是论文《YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors》arXiv:2207.02696的官方实现其核心思想是提出多种可训练的免费赠品trainable bag-of-freebies——包括规划的重参数化卷积、辅助训练头、动态标签分配策略等在不增加推理成本的前提下显著提升实时目标检测精度。性能总览MS COCO 基准官方在 MS COCO 测试集上评估了从 P5 到 P6/E6E 的全系列模型覆盖 640 与 1280 两种测试分辨率。下表来自仓库 README 的性能数据其中 AP 为 COCO 标准 mAP0.5:0.95ModelTest SizeAPtestAP50testAP75testbatch 1 fpsbatch 32 average timeYOLOv764051.4%69.7%55.9%161fps2.8msYOLOv7-X64053.1%71.2%57.8%114fps4.3msYOLOv7-W6128054.9%72.6%60.1%84fps7.6msYOLOv7-E6128056.0%73.5%61.2%56fps12.3msYOLOv7-D6128056.6%74.0%61.8%44fps15.0msYOLOv7-E6E128056.8%74.4%62.1%36fps18.7ms从表中可以看到清晰的精度-速度取舍梯度640 输入下的 YOLOv7 与 YOLOv7-X 面向实时场景单卡 batch 1 下分别约 161 fps 与 114 fps而 1280 输入下的 W6/E6/D6/E6E 系列面向高精度场景AP 从 54.9% 一路提升到 56.8%。此外官方还提供了 HuggingFace Spaces 上的 Gradio Web Demo 供在线体验。环境搭建与安装Docker 环境推荐README 推荐直接使用 NVIDIA 官方 PyTorch 容器避免复杂的 CUDA 环境配置。核心步骤如下# 创建 docker 容器可根据机器显存调整共享内存大小 nvidia-docker run --name yolov7 -it -v your_coco_path/:/coco/ -v your_code_path/:/yolov7 --shm-size64g nvcr.io/nvidia/pytorch:21.08-py3 # 安装 apt 依赖 apt update apt install -y zip htop screen libgl1-mesa-glx # 安装 pip 依赖seaborn 用于绘图、thop 用于 FLOPs 统计 pip install seaborn thop # 进入代码目录 cd /yolov7注意--shm-size64g的取值DataLoader 的num_workers较多时会占用共享内存官方建议按实际资源调整该值。pip 依赖版本约束若使用本地 Python 环境可参考仓库 requirements.txt 中的版本约束torch1.7.0,!1.12.0、torchvision0.8.1,!0.13.0注意显式排除 1.12.0 / 0.13.0 两个版本numpy1.18.5,1.24.0opencv-python4.1.1、Pillow7.1.2、PyYAML5.3.1、scipy1.4.1、tqdm4.41.0protobuf4.21.3绘图与可视化pandas1.1.4、seaborn0.11.0、matplotlib3.2.2日志tensorboard2.4.1ONNX/TensorRT 等导出所需的onnx、onnx-simplifier在 requirements 中以注释形式给出按需安装。README 标注的官方测试环境为Python 3.7.13、PyTorch 1.12.0cu113。精度测试Testing测试命令与指标解读下载预训练权重yolov7.pt、yolov7x.pt、yolov7-w6.pt、yolov7-e6.pt、yolov7-d6.pt、yolov7-e6e.pt后在验证集上运行 test.pypython test.py --data data/coco.yaml --img 640 --batch 32 --conf 0.001 --iou 0.65 --device 0 --weights yolov7.pt --name yolov7_640_val参数含义如下--data数据集配置文件路径--img测试输入尺寸像素--batch批大小--confNMS 前的置信度阈值。测试阶段建议设为极低的 0.001避免漏检拉低召回率这与推理阶段的 0.25 是不同场景--iouNMS 的 IoU 阈值0.65--deviceGPU 编号--weights权重文件路径--name结果输出目录名保存到runs/test/name。从 test.py 的实现可以看到mAP 计算会遍历torch.linspace(0.5, 0.95, 10)这 10 个 IoU 阈值0.5~0.95 步长 0.05取平均同时按 small / medium / large 三种目标面积分别统计 AP 与 AR。官方测试结果如下Average Precision (AP) [ IoU0.50:0.95 | area all | maxDets100 ] 0.51206 Average Precision (AP) [ IoU0.50 | area all | maxDets100 ] 0.69730 Average Precision (AP) [ IoU0.75 | area all | maxDets100 ] 0.55521 Average Precision (AP) [ IoU0.50:0.95 | area small | maxDets100 ] 0.35247 Average Precision (AP) [ IoU0.50:0.95 | areamedium | maxDets100 ] 0.55937 Average Precision (AP) [ IoU0.50:0.95 | area large | maxDets100 ] 0.66693 Average Recall (AR) [ IoU0.50:0.95 | area all | maxDets 1 ] 0.38453 Average Recall (AR) [ IoU0.50:0.95 | area all | maxDets 10 ] 0.63765 Average Recall (AR) [ IoU0.50:0.95 | area all | maxDets100 ] 0.68772 Average Recall (AR) [ IoU0.50:0.95 | area small | maxDets100 ] 0.53766 Average Recall (AR) [ IoU0.50:0.95 | areamedium | maxDets100 ] 0.73549 Average Recall (AR) [ IoU0.50:0.95 | area large | maxDets100 ] 0.83868标注文件准备为计算 mAP需要把 COCO 官方标注annotations_trainval2017.zip解压到./coco/annotations/instances_val2017.json。test.py 内部通过coco80_to_coco91_class()见 utils/general.py完成 COCO 80 类索引到 COCO 91 类索引的映射后提交给 pycocotools 计算。训练Training数据准备仓库提供了 scripts/get_coco.sh 一键脚本bash scripts/get_coco.sh脚本会并行下载并解压标签coco2017labels-segments.zip68 MB同时包含检测与分割标签图像train2017.zip约 19G118k 张、val2017.zip约 1G5k 张、test2017.zip约 7G41k 张可选。提示如果之前使用过其他版本 YOLO 的 COCO 数据官方强烈建议删除train2017.cache和val2017.cache缓存文件并重新下载标签避免缓存与标签格式不匹配导致训练异常。单 GPU 训练# 训练 p5 模型输入 640 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 # 训练 p6 模型输入 1280 python train_aux.py --workers 8 --device 0 --batch-size 16 --data data/coco.yaml --img 1280 1280 --cfg cfg/training/yolov7-w6.yaml --weights --name yolov7-w6 --hyp data/hyp.scratch.p6.yaml两条命令分别对应两个训练入口train.py 用于 P5 骨干stride 32系列train_aux.py 用于带辅助训练头的 P6 系列。--img 640 640的第二个值用于第 11 个 epoch 起的微调输入尺寸。多 GPU 训练# 训练 p5 模型4 卡 python -m torch.distributed.launch --nproc_per_node 4 --master_port 9527 train.py --workers 8 --device 0,1,2,3 --sync-bn --batch-size 128 --data data/coco.yaml --img 640 640 --cfg cfg/training/yolov7.yaml --weights --name yolov7 --hyp data/hyp.scratch.p5.yaml # 训练 p6 模型8 卡 python -m torch.distributed.launch --nproc_per_node 8 --master_port 9527 train_aux.py --workers 8 --device 0,1,2,3,4,5,6,7 --sync-bn --batch-size 128 --data data/coco.yaml --img 1280 1280 --cfg cfg/training/yolov7-w6.yaml --weights --name yolov7-w6 --hyp data/hyp.scratch.p6.yaml多卡训练通过torch.distributed.launch启动--sync-bn开启跨卡同步批归一化通常能提升精度--batch-size 128为 4 卡/8 卡下的全局总批大小每卡约 32 或 16--master_port 9527用于指定分布式通信端口。网络结构配置说明以 cfg/training/yolov7.yaml 为例配置文件由三部分组成parametersnc类别数COCO 为 80、depth_multiple与width_multiple深度/宽度缩放系数为 1.0 时即标准 YOLOv7anchorsP3/8、P4/16、P5/32 三个尺度的锚框如[12,16, 19,36, 40,28]、[36,75, 76,55, 72,146]、[142,110, 192,243, 459,401]backbone / head以[from, number, module, args]形式描述的模块列表。backbone 大量使用Concat组合多路特征ELAN 结构head 则使用SPPCSPC空间金字塔池化、RepConv可重参数化卷积并在最后通过IDetect对应 models/yolo.py 中的检测头在 P3/P4/P5 三个尺度输出检测结果。迁移学习自定义数据集微调针对自定义数据集官方提供了训练权重yolov7_training.pt、yolov7x_training.pt以及 W6/E6/D6/E6E 对应的 training 权重均带 EMA 结构# 微调 p5 模型 python train.py --workers 8 --device 0 --batch-size 32 --data data/custom.yaml --img 640 640 --cfg cfg/training/yolov7-custom.yaml --weights yolov7_training.pt --name yolov7-custom --hyp data/hyp.scratch.custom.yaml # 微调 p6 模型 python train_aux.py --workers 8 --device 0 --batch-size 16 --data data/custom.yaml --img 1280 1280 --cfg cfg/training/yolov7-w6-custom.yaml --weights yolov7-w6_training.pt --name yolov7-w6-custom --hyp data/hyp.scratch.custom.yaml--weights yolov7_training.pt传入的是保留训练结构含辅助头/EMA的权重而非推理权重这是 YOLOv7 迁移学习的关键——官方同时提供.pt推理与_training.pt训练两套权重微调务必使用后者。对应的data/custom.yaml需要按nc、train/val图片路径、类别名等字段改写。重参数化Re-parameterizationYOLOv7 采用可重参数化设计RepConv训练时网络带有额外的并行分支推理时需要将结构重参数化合并才能得到精简、高速的部署模型。仓库提供了完整的操作说明见 tools/reparameterization.ipynb其中主要工作是把 RepConv 的多分支权重融合为单分支卷积并去除辅助训练头最终保存为可部署的推理权重。推理Inference推理入口为 detect.py支持图片、视频、摄像头与网络流# 视频推理 python detect.py --weights yolov7.pt --conf 0.25 --img-size 640 --source yourvideo.mp4 # 图片推理 python detect.py --weights yolov7.pt --conf 0.25 --img-size 640 --source inference/images/horses.jpg推理结果示例马匹检测来自仓库figure/horses_prediction.jpg从 detect.py 的参数定义可以看到完整的可调项--source输入源默认inference/images支持文件、目录、摄像头编号0以及rtsp://、rtmp://、http://、https://网络流--img-size推理输入尺寸默认 640会被 utils/general.py 的check_img_size自动修正为 stride 的整数倍--conf-thres置信度阈值默认 0.25--iou-thresNMS 的 IoU 阈值默认 0.45--device0或0,1,2,3或cpu--view-img实时显示结果--save-txt额外保存 YOLO 格式的标签文件--save-conf在 txt 标签中附带置信度--nosave不保存结果图像/视频--classes按类别过滤如--classes 0 2 3--agnostic-nms类别无关 NMS--augment开启测试时增强TTA--project/--name/--exist-ok控制结果输出目录默认runs/detect/exp同名自动递增--no-trace关闭 TorchScript Trace 加速默认开启TracedModel。推理流水线见 detect.py为模型预热warmup→torch.no_grad()下前向 →non_max_suppression去重 →scale_coords将框坐标从网络输入尺寸映射回原图尺寸 → 绘制/保存。GPU 上默认启用 FP16model.half()以加速。模型导出ExportPyTorch → ONNX含 NMS仓库提供了完整导出脚本 export.py输出 ONNX 与配套的 Colab 教程tools/YOLOv7onnx.ipynb。导出带内置 NMS 的端到端 ONNX 命令如下python export.py --weights yolov7-tiny.pt --grid --end2end --simplify \ --topk-all 100 --iou-thres 0.65 --conf-thres 0.35 --img-size 640 640 --max-wh 640关键参数对应 export.py--grid导出 Detect 层的网格输出--end2end导出端到端模型内置 NMS。--max-wh为 None 时适配 TensorRT 的 NMS 插件输出num_dets/det_boxes/det_scores/det_classes四组张量给定整数值如 640时适配 ONNX Runtime 的 NMS输出拼接的output--topk-all每张图保留的目标数上限默认 100--iou-thres/--conf-thres内置 NMS 的 IoU 与置信度阈值--simplify用 onnx-simplifier 精简计算图--dynamic-batch/--dynamic导出动态 batch 或动态宽高的 ONNX见 export.py 中 dynamic_axes 的设置逻辑--include-nms通过RegisterNMS插件注册自定义 NMS 算子utils/add_nms.py。导出时内部会先做 TorchScript trace再统一opset_version12导出并进行onnx.checker.check_model校验。PyTorch → TensorRT两种方式方式一导出端到端 ONNX 后用官方工具转 TRTwget https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7-tiny.pt python export.py --weights ./yolov7-tiny.pt --grid --end2end --simplify --topk-all 100 --iou-thres 0.65 --conf-thres 0.35 --img-size 640 640 git clone https://github.com/Linaom1214/tensorrt-python.git python ./tensorrt-python/export.py -o yolov7-tiny.onnx -e yolov7-tiny-nms.trt -p fp16方式二使用 NMS 插件 trtexecwget https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7-tiny.pt python export.py --weights yolov7-tiny.pt --grid --include-nms git clone https://github.com/Linaom1214/tensorrt-python.git python ./tensorrt-python/export.py -o yolov7-tiny.onnx -e yolov7-tiny-nms.trt -p fp16 # 或直接用 trtexec 把 ONNX 转为 TensorRT engine /usr/src/tensorrt/bin/trtexec --onnxyolov7-tiny.onnx --saveEngineyolov7-tiny-nms.trt --fp16方式一基于端到端 ONNX把 NMS 一并固化进模型方式二在导出时注册自定义 NMS 插件再用 trtexec 以 FP16 精度构建 engine。两者都需要借助外部 tensorrt-python 工具库完成 ONNX→engine 转换。PyTorch → CoreMLmacOS/iOS导出及端到端推理流程见 tools/YOLOv7CoreML.ipynb。CoreML 导出在 export.py 中实现先得到 TorchScript 模型再用 coremltools 转换输入按scale1/255.0做像素归一化--fp16与--int8分别启用 FP16 与 INT8 权重量化量化仅在 macOS 上支持见 export.py 的平台判断。扩展分支姿态估计与实例分割除了目标检测主线官方还基于同一框架发布了多种任务分支与配套权重姿态估计Pose estimation权重yolov7-w6-pose.pt使用说明见 tools/keypoint.ipynb支持单人/多人关键点检测实例分割Instance segmentationYOLOv7 实例分割分支YOLOR YOLOv5 YOLACT 组合权重yolov7-seg.pt使用说明见 tools/instance.ipynb。其 COCO 结果为box AP 51.4%、box AP50 69.4%、mask AP 41.5%、mask AP50 65.5%无锚框检测头Anchor free带解耦 TAL 头TAL 即 Task-Aligned Assigner的 YOLOv7-u6 变体640 输入下 COCO val 集 AP 52.6%、AP50 69.7%、AP75 57.3%。引用Citation若在研究中使用了 YOLOv7请引用以下文献来自仓库 READMEinproceedings{wang2023yolov7, 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}, booktitle{Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)}, year{2023} } article{wang2023designing, title{Designing Network Design Strategies Through Gradient Path Analysis}, author{Wang, Chien-Yao and Liao, Hong-Yuan Mark and Yeh, I-Hau}, journal{Journal of Information Science and Engineering}, year{2023} }延伸官方展示的更多视觉任务README 末尾的 Teaser 展示了基于 YOLOv7 骨架扩展的更多研究方向包括YOLOv7-semantic语义分割、YOLOv7-panoptic全景分割、YOLOv7-caption图像描述、YOLOv7-depth深度估计、YOLOv7-3d-detection3D 检测、YOLOv7-lidar激光雷达与 YOLOv7-road道路分割等。这些内容说明 YOLOv7 的骨干与颈部结构具备较强的跨任务迁移能力可作为进一步研究或二次开发的起点。相关示例图如tennis.jpg、yolov7_city.jpg、yolov7_3d.jpg等均存放在 figure 目录下。赞分享人工智能深度学习计算机视觉【免费下载链接】yolov7Implementation of paper - YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors项目地址https://gitcode.com/GitHub_Trending/yo/yolov7点击查看免费下载相关推荐EfficientDet 完整实战指南COCO 预训练模型、SavedModel/TFLite/TensorRT 导出、推理与微调EfficientDet 完整实战指南COCO 预训练模型、SavedModel/TFLite/TensorRT 导出、推理与微调 本指南基于当前仓库 ten示例工程MXNet 模型导出为 ONNX 格式从 Gluon 训练到跨框架推理的完整实战指南MXNet 模型导出为 ONNX 格式从 Gluon 训练到跨框架推理的完整实战指南 ONNXOpen Neural Network Exchange为人工智能深度学习机器学习LaMa推理优化终极指南ONNX导出与TensorRT加速完整实战LaMa推理优化终极指南ONNX导出与TensorRT加速完整实战 还在为LaMa模型推理速度慢而烦恼吗处理高分辨率图像时漫长的等待时间是否严重影响了你的工人工智能计算机视觉深度学习图像处理上一篇如何精准识别搜索意图ParadeDB实现用户查询需求的终极指南下一篇Tkinter Helper二次开发指南基于Vue实现自定义组件扩展创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

工业缺陷检测毕设落地三座山:数据标注、模型选型与TensorRT部署 2026/10/2 2:38:49

工业缺陷检测毕设落地三座山:数据标注、模型选型与TensorRT部署

简介:本资源是一套面向本科生毕业设计与课程实践的工业缺陷检测完整项目,聚焦深度学习在制造业质检场景中的落地应用,适合计算机、自动化及人工智能方向初学者快速上手。压缩包共12个文件(7个Python源码、3个文本配置/说明文件、1…

阅读更多 →
Python树叶识别实战:轻量CNN+OpenCV端到端落地指南 2026/10/2 2:38:49

Python树叶识别实战:轻量CNN+OpenCV端到端落地指南

简介:本资源是一套基于Python开发的树叶图像识别系统完整实现方案,面向计算机视觉初学者、人工智能课程设计学生及图像识别入门开发者,旨在帮助用户掌握OpenCV与深度学习基础模型在植物图像分类中的实际应用。压缩包共含4个文件,包…

阅读更多 →
DeBiFormer:面向小目标与遮挡场景的双偏置Transformer分类架构 2026/10/2 2:38:49

DeBiFormer:面向小目标与遮挡场景的双偏置Transformer分类架构

简介:本资源是一份面向计算机视觉初学者与进阶研究者的DeBiFormer图像分类实战项目包,聚焦植物幼苗细粒度分类任务,帮助读者快速掌握新型分层视觉Transformer模型的落地应用。资源包含2000个文件,主体为1988张植物幼苗PNG图像&…

阅读更多 →
工业缺陷检测毕业设计源码:可跑通、可修改、可答辩 2026/10/2 2:38:49

工业缺陷检测毕业设计源码:可跑通、可修改、可答辩

简介:本资源是一套面向本科生毕业设计与课程实践的工业缺陷检测完整项目,聚焦深度学习在制造业质检场景中的落地应用,适合计算机、自动化及智能制造方向的学习者快速上手。压缩包共12个文件(7个Python源码、3个文本说明、1个Shell…

阅读更多 →
陪玩平台DDoS防护:从被动挨打到主动免疫的完整路径 2026/10/2 2:38:48

陪玩平台DDoS防护:从被动挨打到主动免疫的完整路径

上个月,一家中部省份的陪玩平台在周年庆当晚被一场混合DDoS干趴了整整四十分钟。四十分钟听着不长,但对于一个以实时音视频互动为核心生意的平台来说,意味着上千个房间断线、成批订单流失、客服被玩家围堵。折腾了一整夜,最后的结…

阅读更多 →
Allure 2.13.9 安装配置与 pytest 自动化测试报告集成实战 2026/10/2 2:38:42

Allure 2.13.9 安装配置与 pytest 自动化测试报告集成实战

简介:Allure 2.13.9自动化报告生成工具压缩包,面向软件测试工程师、自动化测试开发及质量管理团队,解决测试报告可读性差、缺陷定位困难等问题。该版本在性能与稳定性上有所提升,支持JUnit、TestNG、pytest等主流测试框架&#xf…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉