1. YOLOv6概述
大家好,欢迎来到这门实战课。今天咱们先聊聊 YOLOv6 的来龙去脉。
YOLOv6 是美团视觉智能部在 2022 年开源的。说实话,当时 YOLOv5 已经非常成熟了,YOLOv8 还没出来。为什么美团还要自己搞一套?说白了,就是工业落地的痛点没解决。
我个人习惯把目标检测模型分成两类:一类是刷榜用的,另一类是真正能上线的。YOLOv6 属于后者。它不是为了在 COCO 上多零点几个点,而是为了在真实业务场景里跑得稳、跑得快。
1.1 诞生背景:工业界的需求驱动
我记得 2021 年底,美团在业务中大量使用 YOLOv5。但遇到几个头疼的问题:
- 部署效率低:ONNX 转 TensorRT 时,某些算子不支持,得手动改图
- 精度瓶颈:小目标检测在复杂场景下掉点严重
- 训练不稳定:大 batch 训练时 loss 经常震荡
于是他们决定从骨干网络到检测头,全部重新设计。这就是 YOLOv6 的起点。
核心思路:不是简单改改 YOLOv5 的配置,而是用 RepVGG 风格的骨干 + 解耦检测头 + 自蒸馏策略,从底层重构整个 pipeline。
1.2 与 YOLOv5 / YOLOv8 的对比
很多同学问我:“老师,YOLOv6 和 v5、v8 到底差在哪?” 我一般用下面这张表来回答:
| 对比维度 | YOLOv5 | YOLOv6 | YOLOv8 |
|---|---|---|---|
| 骨干网络 | CSPDarknet | EfficientRep / RepBlock | C2f 模块 |
| 检测头 | 耦合头 | 解耦头 + 混合通道策略 | 解耦头 |
| 训练技巧 | Mosaic + 自动锚框 | 自蒸馏 + 分类辅助损失 | TaskAlignedAssigner |
| 部署友好度 | 中等 | 高(原生支持 TensorRT) | 高 |
| 小目标检测 | 一般 | 较好(多尺度特征融合优化) | 较好 |
这里我重点说两个差异:
第一,骨干网络。 YOLOv6 的 EfficientRep 借鉴了 RepVGG 的多分支训练、单分支推理思想。训练时用 3×3 + 1×1 并联,推理时合并成单个 3×3 卷积。这样做的好处是——推理速度直接翻倍,精度几乎不掉。
第二,检测头。 YOLOv5 用的是耦合头,分类和回归共享参数。YOLOv6 把它拆成两个独立分支。我在项目中遇到过,耦合头在类别多、目标重叠的场景下,分类和回归会互相干扰。解耦后,每个分支专注自己的任务,收敛更快。
我的建议:如果你的项目对推理延迟要求极高(比如 2ms 以内),优先考虑 YOLOv6。如果追求极致精度且算力充足,YOLOv8 的 C2f 模块和动态标签分配可能更适合。
1.3 核心优势:为什么选 YOLOv6?
我总结了三句话:
- 快:RepVGG 风格推理,速度比同参数量级的 YOLOv5 快 30% 以上
- 稳:自蒸馏训练策略,小模型也能学到大模型的知识
- 省:原生支持 TensorRT、ONNX、NCNN,不需要额外写自定义算子
你想想看,在工业场景里,这三条意味着什么?意味着你可以用更少的 GPU 资源,跑更多的业务流量。
避坑指南:我曾经在边缘设备(Jetson Nano)上部署 YOLOv6,发现 INT8 量化后精度掉了 3 个点。后来排查发现是 BN 层融合顺序的问题。解决办法是:导出 ONNX 前先做一遍 fuse_conv_bn,再转 TensorRT。这个坑在官方文档里没写,我踩过,你们别踩。
1.4 适用场景
YOLOv6 不是万能的。我把它适合的场景列出来:
- 实时视频分析:比如安防监控、自动驾驶感知,要求每帧处理时间 < 10ms
- 移动端/边缘端部署:手机、无人机、嵌入式设备,算力有限但需要高精度
- 多目标跟踪:YOLOv6 的检测头输出格式天然适合做 ReID 特征提取
- 工业质检:小缺陷检测,YOLOv6 的多尺度特征融合比 v5 更细粒度
不适合的场景:
- 超大分辨率图像(比如 4K/8K)—— 显存占用会爆炸
- 极度稀疏目标(一张图只有 1-2 个目标)—— 建议用两阶段检测器
1.5 知识体系总览
下面这张图,是我自己梳理的 YOLOv6 知识体系。你可以把它当成整个课程的地图:
这张图把 YOLOv6 拆成了三个大块:骨干网络、检测头、训练策略。后面每一章都会围绕其中一个点展开。你跟着这个路线走,就不会迷路。
1.6 本章小结
这一章我们聊了:
- YOLOv6 为什么诞生 —— 工业落地需要更快的推理和更稳的训练
- 它和 v5、v8 的核心差异 —— 骨干、检测头、训练技巧都不一样
- 它的优势 —— 快、稳、省
- 它适合什么场景 —— 实时、边缘、跟踪、质检