共计 1181 个字符,预计需要花费 3 分钟才能阅读完成。
YOLO 算法发展历程图

(注:此处应插入按时间轴排列的 YOLO 版本演进示意图,标注关键改进点和发布时间)
各代 YOLO 核心改进对比
- YOLOv1 (2016)
- 首次提出单阶段检测思想
- 将检测任务转化为回归问题
- 主干网络:24 层卷积 + 2 层全连接
- 优势:实时性(45FPS)
-
不足:小目标检测效果差
-
YOLOv2 (2017)
- 引入 Batch Normalization
- 使用高分辨率分类器
- 提出 Anchor Box 机制
- 新增 Darknet-19 主干网络
-
性能提升:mAP 从 63.4%→78.6%
-
YOLOv3 (2018)
- 采用多尺度预测(3 种尺度)
- 引入残差结构
- 使用 Darknet-53 主干网络
-
改进:小目标检测效果显著提升
-
YOLOv4 (2020)
- 引入 CSPNet 结构
- 添加 SPP 模块
- 使用 Mish 激活函数
- 采用 PANet 特征金字塔
-
速度:65FPS@Tesla V100
-
YOLOv5 (2020)
- 采用 Focus 结构降采样
- 引入自适应锚框计算
- 使用 PyTorch 框架实现
-
优势:训练部署更便捷
-
YOLOv6 (2022)
- 重参数化设计
- 自蒸馏策略
- 硬件友好架构
-
适合移动端部署
-
YOLOv7 (2022)
- 模型缩放技术
- 规划重参数化卷积
- 提出 ” 扩展 ” 和 ” 复合缩放 ” 方法
-
实时性:161FPS@AP50.9
-
YOLOv8 (2023)
- 无锚点设计
- 任务特定解耦头
- 改进的损失函数
- 支持分类 / 检测 / 分割多任务
版本选型指南
- 工业检测:YOLOv5/v8
- 移动端应用:YOLOv6
- 学术研究:YOLOv7
- 历史项目维护:YOLOv3/v4
YOLOv5 实践示例
import torch
from models.experimental import attempt_load
from utils.general import non_max_suppression
# 1. 加载预训练模型
model = attempt_load('yolov5s.pt', map_location='cpu')
# 2. 图像预处理
def preprocess(img):
img = torch.from_numpy(img).float()
img /= 255.0 # 归一化
if img.ndimension() == 3:
img = img.unsqueeze(0)
return img
# 3. 推理检测
def detect(image):
img = preprocess(image)
pred = model(img)[0]
pred = non_max_suppression(pred, conf_thres=0.25, iou_thres=0.45)
return pred
部署常见问题
- 显存不足
- 解决方案:减小 batch size
-
使用 –img-size 640 替代默认尺寸
-
检测框抖动
- 调整 conf-thres 和 iou-thres
-
添加视频稳定后处理
-
小目标漏检
- 增大输入分辨率
- 使用多尺度测试
思考题
在小样本场景下如何优化 YOLO 模型?
(提示方向:数据增强、迁移学习、半监督方法等)
正文完
发表至: 未分类
近两天内
