
《YOLO 系列训练实操·全 7 篇》——从 YOLOv5 到 YOLO26每篇独立成文、全部可复现。本篇为系列 2/7承接上文《YOLOv51/7》本文换一个优化目标不追精度上限追部署可用性。系列进度✅ 1/7 YOLOv5mAP50 0.46→ ✅2/7 本文YOLOv6→ ⏳ 3/7 YOLOv8统一 API→ 4/7 YOLOv9PGI→ 5/7 YOLOv10无 NMS→ 6/7 YOLO11 → 7/7 YOLO26。本文所有版本号、训练指标、损失曲线均为 2026-08 真实运行输出。1. 背景目的衔接上一篇v5同一数据、同配置下v5 用 10 epochs 拿到 mAP50 0.46v6 并不打算赢下这条精度线它拿到 0.29见第 6 节的诚实解读而是把全部收益押在推理速度0.75 ms比 v5 快 32%——这是部署导向与精度导向两种哲学的第一次正面交锋也是全系列第一个框架定位差异 单纯指标数字的对照样本。YOLOv6 是美团视觉智能部开源的工业级单阶段目标检测框架代码仓库meituan/YOLOv6。它主打部署友好采用 RepVGG 风格的可重参数化主干训练时多分支、推理时折叠为单路配合加权双向特征金字塔与解耦检测头在同等算力下具有极强的速度-精度性价比。本文目标用官方 COCO 预训练权重yolov6n.pt在自备的 4 类数据集上微调训练并完成 COCO 指标验证。你将掌握YOLOv6 官方仓库获取、依赖安装与新 torch 环境适配YOLOv6 的.py配置 .yaml数据配置方式与 YOLOv5 的主要区别从预训练权重训练、从 checkpoint 续训的完整流程pycocotools 指标验证与可视化推理图 1YOLOv6 一次前向流程示意输入 → EfficientRep 主干 → RepBiFPAN 颈部 → EffiDeHead 解耦头 → NMS2. 目录背景目的目录环境和数据集准备实操以及截图伴有原理解释4.1 获取官方代码与预训练权重4.2 依赖安装与新 torch 适配4.3 数据配置.yaml .py 双配置4.4 从预训练权重开始训练4.5 训练日志与 mAP 曲线解读含原理4.6 网络结构原理解读4.7 深度原理关键痛点拆解4.8 操作异常实录测试验证总结3. 环境和数据集准备3.1 环境搭建通用示例conda create-nmulti-agent-demopython3.11numpy conda activate multi-agent-demo本文实测环境供对照Python 3.11.15 / numpy 2.4.4 / torch 2.10.0cu128CUDA 可用/ torchvision 0.25.0cu128 / NVIDIA RTX 5060 Ti8 GB 显存。3.2 数据集准备与上一篇文章相同使用标准 YOLO 检测格式images/{train,val}labels/{train,val}每行class x_center y_center w hdataset/ ├── images/{train,val} └── labels/{train,val}本文以 4 类检测数据集为例person/car/dog/insectnc4train 1315 张图、val 298 张图训练标注分布实测 person 1220、car 428、dog 347、insect 16 条。图 2训练集类别标注分布——insect 仅 16 条严重不平衡第 5 节指标中会体现。4. 实操以及截图伴有原理解释4.1 获取官方代码与预训练权重gitclone https://github.com/meituan/YOLOv6cdYOLOv6官方仓库meituan/YOLOv6推荐 Releasev0.4.02023-04-28。预训练权重yolov6n.pt10.0 MBCOCO 80 类预训练放入仓库根目录。官方表YOLOv6-N 在 COCO val 上 mAP 37.5640 分辨率参数量约 4.7 M、FLOPs 11.4 G。⚠️务必校验权重完整性下载后检查文件大小是否为 10.0 MB 量级这篇实操中曾遇到 372 KB 的截断文件见 4.7 异常 1。4.2 依赖安装与新 torch 环境适配pipinstall-rrequirements.txt若报ModuleNotFoundError: No module named pkg_resources较新版本 Python 环境的常见问题说明环境中setuptools过新安装旧版即可pip install setuptools81。新 torch≥2.6适配torch 2.6 起torch.load默认weights_onlyTrue而 YOLOv6 的 checkpoint 含自定义模型对象直接加载会报WeightsUnpickler error: Unsupported global: ... yolov6.models.yolo.Model。需将官方yolov6/utils/checkpoint.py中 3 处torch.load(...)补上weights_onlyFalse原文见 4.7 异常 3。4.3 数据配置.yaml .py 双配置YOLOv6 需要两份配置① 数据配置objdata.yaml# objdata.yamltrain:dataset\images\trainval:dataset\images\valnc:4names:[person,car,dog,insect]⚠️Windows 路径注意本机实测踩坑见 4.7 异常 4此处请使用反斜杠\路径。YOLOv6 的img2label_paths()依赖os.sepWindows 下为\把路径中的\images\替换为\labels\来定位标注文件若用正斜杠写路径所有标注都会被解析为空表现为 mAP 恒为 0。Linux 无此问题。② 模型配置configs/yolov6n_finetune.py官方自带关键片段modeldict(typeYOLOv6n,pretrainedweights/yolov6n.pt,# 预训练权重路径...headdict(typeEffiDeHead,...iou_typesiou,use_dflFalse,))solverdict(optimSGD,lr00.0032,lr_schedulerCosine,warmup_epochs2.0,...)data_augdict(mosaic1.0,mixup0.243,hsv_h0.0138,...)与 YOLOv5 的差异YOLOv5 连模型结构也写在 yaml 里YOLOv6 把模型结构、求解器、增强策略集中在.py配置中数据本身用简明 yaml。训练时二者通过--conf-file/--data-path分别传入。4.4 从预训练权重开始训练一次性完整命令10 epochspython tools/train.py\--conf-file configs/yolov6n_finetune.py\--data-path objdata.yaml\--batch-size16--img-size416\--epochs10--workers2--device0\--eval-interval1\--output-dir runs/train--nameexp--eval-interval 1每轮结束后都跑一次验证YOLOv6 默认 20 轮一验调成 1 便于观察曲线。本文实测因单命令时长限制分 3 段完成3 4 3 epoch第 2/3 段将上一段输出的weights/best_ckpt.pt作为pretrained继续微调即从 checkpoint 续训与一次性 10 epochs 等价做法可复用# 第 2 段把 runs/train/exp/weights/best_ckpt.pt 复制为 weights/yolov6n_ft.pt# 并将配置文件 pretrained 指向它再跑 4 epochs--name exp2# 第 3 段同理再续 3 epochs--name exp3训练/验证输出默认在runs/train/exp*/每段结束保存best_ckpt.pt最优与last_ckpt.pt最后。训练耗时实测10 epochs含每轮验证在 RTX 5060 Ti 上约 10 分钟量级。4.5 训练日志与 mAP 曲线解读含原理训练输出节选真实——每轮结束由 pycocotools 计算 mAPTrain: 1315 label(s) found, 0 label(s) missing, 255 label(s) empty. Val: 289 label(s) found, 9 label(s) missing, 52 label(s) empty. Epoch: 0 | mAP0.5: 0.094165... | mAP0.50:0.95: 0.064429... Epoch: 1 | mAP0.5: 0.123386... | mAP0.50:0.95: 0.086592...逐 epoch 真实指标汇总10 epochs 实测epochmAP50mAP50-9500.09420.064410.12340.086620.15680.109130.18430.127540.23820.161950.25260.172760.26650.182170.26800.183680.28200.190790.28760.1966图 3验证 mAP 曲线真实数据——训练计入label(s) empty的图片有图无标注从预训练权重起步 10 个 epoch 内 mAP50 由 0.094 升至 0.288。损失原理简述YOLOv6 的损失 分类损失BCE 回归损失默认iou_typesiouSIOU 目标置信度损失训练端到端验证指标与上一篇文章YOLOv5不同这里使用COCO 评测协议pycocotools——这也是工业界通用的指标口径。配图复现本文曲线/示意图由随文脚本make_figs.py仅依赖 numpy 标准库生成训练后把本节的 mAP 数值替换为你的真实输出即可重绘。4.6 网络结构原理解读YOLOv6 与 YOLOv5 最大的不同在于重参数化 部署导向对应图 1BackboneEfficientRepRepVGG 风格可重参数化主干。训练时为多分支堆叠3×3 卷积分支 1×1 卷积分支 恒等分支推理前把分支折叠成单一 3×3 卷积——这是 YOLOv6 推理快的核心原因之一。NeckRepBiFPAN。在 PAN 结构上引入加权双向特征融合BiFPN 思路对多尺度特征分配可学习权重提升小/中/大目标融合质量。HeadEffiDeHead解耦头。分类与回归分支分开Decoupled输出 P3/P4/P5 三个尺度标签分配在 v0.4.0 中采用 ATSS 预热 SimOTA 动态匹配。另有**自蒸馏self-distillation**训练选项用自身大模型的预测作为软标签辅助小模型训练官方发布的yolov6n.pt即含蒸馏收益。本文训练得到的 4 类模型实测参数量5,041,018≈5.04 M训练态未做推理折叠官方部署折叠后约 4.7 M。4.7 深度原理关键痛点拆解前几节介绍了是什么这一节回答为什么每个痛点配图。痛点 1为什么输入必须是 32 的倍数416 而不是 414?EfficientRep 主干同样经过5 次 stride2 下采样累计倍数 2⁵32。416 13×32末级输出 13×13 整数网格若输入非 32 倍数网格取整会造成目标中心与格子错位、性能小幅下降。imgsz 永远取 32 倍数320/416/640。痛点 2三尺度P3/P4/P5各自管什么416 输入时P513×13stride 32管大目标、P426×26stride 16中目标、P352×52stride 8小目标。小目标在低分辨率特征上几乎消失所以必须有高密度小网格兜底。痛点 3v6 的标签分配为什么是ATSS 预热 SimOTA。YOLOv6v0.4.0依然是 anchor-based预置 9 组 anchors标签分配采用SimOTA 动态匹配——每次迭代只给目标分配 IoU 前 k 大的候选为正样本k 由代价最优动态决定而不是 v5 那种固定 IoU 阈值训练前几轮用 ATSS 预热稳定。动态分配是该版本收敛好、AP 高的关键技巧之一。痛点 4为什么还要 NMS多尺度多格子会输出大量重叠候选框NMS按置信度排序 → 留最高 → 抑制 IoU0.45 的重叠框保证每个目标只剩一个框。置信度阈值与 IoU 阈值是调参重点。痛点 5显存与 batch、imgsz 的关系8 GB 卡怎么配开销 ≈ batch × imgsz²。416→640 即 ×2.37。显存不足先减 batch线性再降 imgsz平方。痛点 6从预训练权重起步为什么收敛快COCO 预训练是通用视觉特征库微调只换输出头80→4 类 全网络小步适配所以 10 epochs 就能到可用精度。前提是数据域与 COCO 差异不能太大。痛点 7v6 专属重参数化到底省了什么为什么 v6 推理这么快这是 YOLOv6 最有技术含量的点对应图 E训练用多分支3×3 1×1 identity 三路相加让梯度路径更丰富、收敛更好推理前把这些分支按同尺寸卷积可加原理折叠成单一 3×3 卷积。数学基础任意 K×K 卷积分支 1×1 卷积等价 K×K 空洞 恒等等价 1×1 对角核都能重写为一个 K×K 卷积核直接相加即可收益推理时少算 2/3 的卷积路径FLOPs 与显存占用显著下降精度不变。实测呼应本文 v6n 在 416 下 GPU 单张推理仅0.75 ms域内显著快于同规模 v51.1 ms——重参数化的直接结果。4.8 操作异常实录实操中遇到的异常、分析与解决方案供读者对照排障。异常 1预训练权重下载不完整截断 zip现象torch.load报PytorchStreamReader failed reading zip archive: failed finding central directory文件仅 372 KB而官方yolov6n.pt为10.0 MB。原因下载中断所致截断文件。解决重新下载完整文件下载后**先核对文件大小10.0 MB 量级**再继续避免白跑。异常 2pkg_resources / addict 依赖缺失现象ModuleNotFoundError: No module named pkg_resources随后报No module named addict。原因新版 setuptools 不再内置pkg_resourcesYOLOv6 的依赖addictConfig 用未装。解决pip install setuptools81pip install -r requirements.txt。异常 3新 torch 无法加载 YOLOv6 checkpoint现象WeightsUnpickler error: Unsupported global: ... Model was not an allowed global。原因torch ≥2.6 的torch.load默认weights_onlyTrue拒绝反序列化自定义模型对象。解决将官方yolov6/utils/checkpoint.py中 3 处torch.load(...)增加参数weights_onlyFalse信任官方权重的前提下。异常 4Windows 正斜杠路径导致标注全部加载失败关键坑现象Train: 1315 label(s) found, 0 missing但所有图片的 labels 为空且每轮 mAP 恒为 0生成的 COCO 标注instances_val.json中 annotations 为 0 条。原因img2label_paths()用os.sepWindows 为\将\images\替换为\labels\数据配置里用了带盘符的正斜杠路径形如drive:/.../images/...时不匹配标签路径全部解析错误。解决数据配置改用反斜杠路径见 4.3。排查技巧删除数据集根目录下旧缓存.train_cache.json/.val_cache.json与annotations/后重训并检查instances_val.json的 annotations 数量是否 0。5. 测试验证5.1 验证集指标tools/eval.py使用 best_ckpt.ptpython tools/eval.py\--dataobjdata.yaml\--weightsruns/train/exp3/weights/best_ckpt.pt\--batch-size16--img-size416--device0实测输出pycocotools 指标val 298 张 / 420 个实例指标实测AP IoU0.50:0.950.196AP IoU0.50mAP500.287AP IoU0.750.214AP (small / medium / large)0.000 / 0.067 / 0.244AR maxDets1000.595逐类指标eval.py--verbose实测输出片段类别PRmAP50mAP50-95person0.5070.4300.4650.222car0.9790.4600.6260.489dog0.1380.2500.1780.053insect0.0390.2800.0690.020car/person 效果可用mAP50 0.63 / 0.47insect 只有训练 16 条/验证 7 条样本AP 接近 0与类别不平衡直接对应小目标 AP 为 0 符合该数据集以小图幅、大物体为主的实际large 0.244 说明模型对大目标有效。推理速度实测pre-process 0.07 ms, inference 0.75 ms, NMS 1.48 msbatch 16416×416GPU——单张 GPU 推理低于 1 ms体现重参数化部署优势。图 4各类别 mAP50 对比真实 val 结果6. 总结一句话定位YOLOv6 是训练贵、推理贱工业哲学的样板——不追求在微调曲线上赢而是把收益全部押在推理时的重参数化折叠上它是与 v5/v8 系完全不同的优化目标部署吞吐优先。实测复盘同一数据集 10 epochsRTX 5060 Ti项实测一句话判断mAP50 / mAP50-950.288 / 0.197独立复测 0.287 / 0.196三篇中最低——见下方诚实解读单张推理0.75 msGPU 416三篇最快重参数化的直接红利AR1000.595召回收敛健康参数 / 训练耗时5.04 M / 10 epochs ≈ 10 分钟参数量三篇最大训练却不慢核心机制实证对应 4.7 深度原理图 E 讲的重参数化数学在实测中兑现——0.75 ms 比 v5 的 1.1 ms 快约 32%这正是多分支训练 → 单 3×3 推理的价值SimOTA 动态分配体现在曲线上第 4~6 epoch mAP 快速跳升0.18→0.27比 v5 的平稳爬升更像动态挖正样本的阶梯式收益。诚实解读为什么 mAP 最低但不代表 v6 弱官方表中 YOLOv6n 的 COCO 精度37.5其实不低于 v8n37.3——这里的 0.288 低分来自① 官方yolov6n.pt是含自蒸馏收益的产物与我们的 4 类微调口径不同② 我们仅 10 epochs 且未复现官方完整训练配方③ 本数据集 insect 仅 7 条验证样本v6 的匹配机制对它不友好0.069。结论v6 适合精度够用速度优先的工程场景而非跨数据集精度竞赛。诚实局限官方仓库 2023 年后基本冻结无后续大版本新 torch≥2.6需打weights_onlyFalse补丁4.8 异常 3生态与资料远少于 ultralytics 系。决策建议需要 TRT/ONNX 高速上线的存量项目、重视吞吐的工业侧部署优先教程学习价值在理解重参数化与部署优化纯精度/生态需求请看本系列 v8 篇。踩坑速记权重核对 10.0 MB异常 1Windows 数据路径必须反斜杠异常 4最致命新 torch 补丁异常 3。下集预告系列 3/7YOLOv8——Anchor-Free 统一 API 的分水岭看它如何把同数据 mAP50 从 0.29 拉到 0.68。