yolo目标检测技术之yolo1到yolo5(二)
文章目录
- yolo目标检测技术之yolo1到yolo5(二)
- 一、YOLOv1(2016):单阶段开山之作
- 二、YOLOv2 / YOLO9000(2017)
- 三、YOLOv3(2018)
- 四、YOLOv4(2020)
- 五、YOLOv5(2020~至今)——工业界最常用
- 5.1 网络总览
- 5.2 关键创新 & 工程细节
- 5.3 模型家族速查表
- 5.4 训练/推理一条龙命令
- 一图总结(保存备用)
关键词:YOLO、目标检测、Backbone、Neck、Head、Anchor、FPN、PAN、CSP、Focus
一、YOLOv1(2016):单阶段开山之作
组件 | 实现 |
---|
Backbone | GoogLeNet-like(24 层卷积 + 2 FC) |
Neck | — |
Head | 两个全连接层 → 7×7×30 张量 |
Grid | 7×7,每格 2 bbox,共享 20 类 |
Loss | 坐标 MSE + 置信度 BCE + 类别 BCE |
Speed | 45 FPS(GPU) |
痛点 | 只能检测 49 个格子,小目标/密集目标拉胯 |
二、YOLOv2 / YOLO9000(2017)
组件 | 实现 |
---|
Backbone | Darknet-19(19 卷积 + 5 池化,无 FC) |
Neck | Passthrough:26×26×512 → 13×13×2048,再 concat 深层特征 |
Head | 全局平均池化 → 13×13×(5×25) |
Anchor | 5 anchor/grid,K-means(IoU 距离)聚类生成 |
训练技巧 | • 多尺度训练 320~608 • 高分辨率分类器 448×448 • BN 全网络 |
输出 | (13×13×5)=845 个预测框 |
三、YOLOv3(2018)
组件 | 实现 |
---|
Backbone | Darknet-53(残差 + 1×1/3×3 交替) |
Neck | FPN:自顶向下上采样 + 横向 concat,三层输出 |
Head | 3 个头:13×13、26×26、52×52,每个 3 anchor |
类别预测 | 独立逻辑回归(支持多标签) |
总框数 | (13²+26²+52²)×3 = 10 647 |
小目标 | 52×52 高分辨率头专为小物体设计 |
四、YOLOv4(2020)
组件 | 实现 |
---|
Backbone | CSPDarknet-53(CSP 模块减少重复梯度) |
Neck | SPP(不同池化级联增大感受野) + PAN(自底向上再融合) |
Head | 同 YOLOv3(3 尺度,9 anchor) |
Bag of Freebies | Mosaic、CutMix、DropBlock、Label Smoothing、CIoU Loss |
Bag of Specials | Mish 激活、CmBN、自对抗训练 |
一句话总结 | 把当时能加的都加了,单卡可训,SOTA 性价比之王 |
五、YOLOv5(2020~至今)——工业界最常用
无官方论文,但 GitHub 50 k+ star,工程价值拉满。下面把面试/部署必问点一次说清。
5.1 网络总览
Input(640×640×3)│├─ Focus(切片 + concat,2×下采样无信息丢失)│├─ CSPDarknet(C3 替换 CSP,SiLU 激活)│├─ SPPF(串行 5×5 池化等效 9×9 & 13×13,速度↑)│├─ PANet(FPN+ 自底向上路径,concat 融合)│└─ 3 检测头(20×20 / 40×40 / 80×80)→ 255 通道输出
5.2 关键创新 & 工程细节
模块 | 作用 | 备注 |
---|
Focus | 把空间信息搬到通道维度,2×下采样无信息丢失 | v6.0 后被 6×6 Conv 替代 |
C3 | 轻量 CSP:去掉残差连接,速度↑、精度持平 | backbone / neck 通用 |
SPPF | 1×1 + 3×3 卷积 + 三次 5×5 池化 → 等效 13×13 感受野 | 比 SPP 更快 |
自适应 Anchor | 训练前自动 K-means 聚类,无需手动脚本 | utils/autoanchor.py |
Data Pipeline | Mosaic + Copy-Paste + MixUp + HSV | 训练超参 yaml 可调 |
Loss | CIoU + BCE(cls & obj) | 与 v4 一致 |
模型缩放 | depth_multiple / width_multiple 控制 | n/s/m/l/x 一键切换 |
导出生态 | 一键 ONNX / TensorRT / ncnn / OpenVINO | export.py --include onnx |
5.3 模型家族速查表
Model | 参数量 | mAP@0.5 | CPU(ms) | GPU-V100(ms) | 适用场景 |
---|
YOLOv5n | 1.9 M | 45.7 | 45 | 6.3 | 树莓派、移动端 |
YOLOv5s | 7.2 M | 56.8 | 98 | 6.4 | 边缘设备 |
YOLOv5m | 21.2 M | 64.1 | 224 | 8.2 | 普通服务器 |
YOLOv5l | 46.5 M | 67.3 | 430 | 10.1 | 高精度场景 |
YOLOv5x | 86.7 M | 68.9 | 766 | 12.1 | 竞赛/研究 |
5.4 训练/推理一条龙命令
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
python train.py --data helmet.yaml --cfg yolov5s.yaml --weights yolov5s.pt \--epochs 200 --img 640 --batch-size 16 --device 0
python detect.py --weights runs/train/exp/weights/best.pt --source img.jpg
python export.py --weights best.pt --include onnx --img 640 --batch 1
一图总结(保存备用)
版本 | Backbone | Neck | Anchor | 多尺度 | 关键创新 |
---|
v1 | GoogLeNet-like | — | 无 | 无 | 单阶段、7×7×30 |
v2 | Darknet-19 | Passthrough | 5 | 输入多尺度 | Anchor、高分辨率分类 |
v3 | Darknet-53 | FPN | 3×3=9 | 3 输出层 | 逻辑回归、残差 |
v4 | CSPDarknet-53 | SPP+PAN | 3×3=9 | 同上 | Mosaic/CIOU/Mish |
v5 | CSPDarknet(C3) | SPPF+PAN | 3×3=9 | 同上 | Focus→SPPF、自适应 Anchor、工程化最强 |