一、前情回顾

1. 监督学习与无监督学习

机器学习主要分为两大范式:监督学习和无监督学习。

监督学习(Supervised Learning)

使用带标签的训练数据进行模型训练。每个样本都包含输入数据和对应的“正确答案”(即标签),模型通过学习输入与输出之间的映射关系来进行预测。

  • 主要任务

    • 分类(Classification):预测离散的类别标签(如图像识别中的“猫”或“狗”)。
    • 回归(Regression):预测连续数值(如房价预测、温度估计)。
  • 常用算法

    • 线性回归、逻辑回归
    • 支持向量机(SVM)
    • 决策树、随机森林
    • 神经网络(包括深度学习模型)
无监督学习(Unsupervised Learning)

使用无标签的数据进行训练。算法需要自行发现数据中的潜在结构、模式或分布。

  • 主要任务

    • 聚类(Clustering):将相似的数据点自动分组,如K均值聚类将客户分为不同群体。
    • 降维(Dimensionality Reduction):在保留关键信息的前提下减少特征数量,便于可视化或提升计算效率,如主成分分析(PCA)。
    • 关联规则学习(Association Rule Learning):发现数据中特征之间的有趣关系,如“购买啤酒的人也常购买薯片”。
  • 常用算法

    • K-均值聚类、层次聚类
    • 主成分分析(PCA)
    • 自编码器(Autoencoder)

提示:目标检测属于监督学习任务,因为训练时需要提供带有边界框和类别标签的标注图像。


2. 模型训练常见术语

理解以下术语有助于掌握深度学习模型的训练过程:

术语 含义 说明
epochs 训练轮次 整个训练数据集被完整遍历一次称为一个epoch。例如,训练100个epochs表示模型看过全部数据100遍。
batch / batch_size 批次 / 批次大小 每次前向传播和反向传播所使用的样本数量。大batch可提高训练稳定性但需更多显存;小batch训练更快但可能不稳定。
device 设备 指模型运行的硬件,如CPU、GPU(CUDA)、TPU等。GPU通常用于加速训练。
workers 数据加载工作线程数 多进程并行加载数据,提升数据读取效率,避免I/O成为训练瓶颈。

3. 常见目标检测数据集

数据集是训练和评估模型的基础,以下是几个经典数据集:

数据集 类别数 特点
COCO(Common Objects in Context) 80类 包含日常场景中的常见物体,标注丰富(边界框、分割掩码、关键点),是当前最主流的目标检测基准。
MS COCO 80类 即COCO数据集,“MS”代表微软(Microsoft),由其发布和维护。
PASCAL VOC(Visual Object Classes) 20类 早期经典数据集,包含人和常见物体,推动了早期目标检测算法的发展。
ImageNet 1000类(ILSVRC) 以图像分类任务闻名,包含超过1400万张标注图像,广泛用于预训练模型。

4. 全连接层的限制

在卷积神经网络兴起之前,全连接层(Fully Connected Layer)是处理图像的主要方式,但它存在明显缺陷:

  • 参数爆炸与计算效率低下
    图像展平后维度极高(如224×224×3=150,528),全连接层参数量巨大,导致训练慢、显存消耗高。

  • 忽视空间/拓扑结构
    图像像素具有局部相关性(相邻像素更相关),全连接层将图像视为一维向量,破坏了这种空间结构信息。

  • 缺乏平移不变性
    同一物体在图像中不同位置应被识别为同一类,但全连接层对位置变化敏感。

  • 容易过拟合
    参数过多且缺乏正则化机制时,模型容易记忆训练数据噪声。

解决方案:卷积神经网络(CNN)通过局部感受野权值共享池化操作有效克服了上述问题,成为图像处理的主流架构。


5. 常见单位与术语

单位 含义 示例
B(Billion) 十亿 70B参数模型表示有700亿个可学习参数。
M(Million) 百万 ResNet-50约有25M参数。
FLOPS 每秒浮点运算次数(Floating Point Operations Per Second) 衡量硬件算力或模型计算复杂度。
GFLOPS 每秒十亿次浮点运算 现代GPU可达数十甚至上百TFLOPS(万亿次)。

注意:FLOPS是性能单位(算力),而FLOPs(小写s)常指一次前向传播的总计算量


二、YOLO模型详解

1. YOLO介绍

YOLO(You Only Look Once) 是一种革命性的单阶段目标检测方法,由Joseph Redmon等人于2016年提出。它将目标检测任务视为一个统一的回归问题,直接从完整图像中一次性预测出所有目标的边界框坐标和类别概率。

核心思想
  • 端到端回归框架
    不再依赖候选区域生成(如R-CNN系列),而是通过一个单一神经网络直接输出检测结果,极大提升了速度。

  • 全局上下文感知
    整张图像作为输入,模型能更好地理解背景信息,减少将背景误判为目标的情况。

  • 实时检测能力
    YOLOv1即可达到45 FPS(帧/秒),后续版本不断提升,广泛应用于自动驾驶、视频监控等实时场景。

与两阶段检测器对比

  • R-CNN系列:先生成候选区域(Region Proposal),再对每个区域分类 → 精度高但速度慢。
  • YOLO系列:一次前向传播完成所有预测 → 速度快,适合实时应用。

2. YOLO发展史

自2016年YOLOv1发布以来,该系列不断演进,多个团队贡献了重要版本:

版本 年份 主要贡献者/团队 备注
YOLOv1 2016 Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadi 开创性工作,发表于CVPR
YOLOv2 2017 Joseph Redmon, Ali Farhadi 引入Anchor Boxes、Batch Normalization等
YOLOv3 2018 Joseph Redmon, Ali Farhadi 多尺度预测、Darknet-53主干网络
YOLOv4 2020 Alexey Bochkovskiy, Chien-Yao Wang, Mark Liao CSPDarknet53、PANet等优化
YOLOv5 2020 Ultralytics团队 PyTorch实现,易用性强,社区活跃
YOLOv6 2022 美团团队 面向工业部署的优化
YOLOv7 2022 I-Hau Yeh, Chien-Yao Wang, Mark Liao 可训练的bag-of-freebies
YOLOv8 2023 Ultralytics团队 支持分类、分割、姿态估计等多任务
YOLOv9 2024 Alexey Bochkovskiy, Chien-Yao Wang, Mark Liao 引入PGP(Partial In CNN)结构
YOLOv10 2024 清华大学团队 消除NMS的端到端检测器
YOLO11 2024.09.30 Ultralytics团队 性能与效率进一步提升
YOLO12 2025.02.18 田运杰(SUNY Buffalo)、David Doermann、叶齐祥(UCAS) 强调跨模态融合与小样本学习
YOLO13 2025.06.26 清华大学联合太原理工、北理工等 面向复杂场景的自适应检测框架

3. YOLO通用网络结构

现代YOLO模型通常由三个核心模块组成:

输入图像
   ↓
[Backbone] → 提取特征
   ↓
[Neck]     → 融合多尺度特征
   ↓
[Head]     → 预测边界框与类别
   ↓
输出结果(边界框 + 类别 + 置信度)
Backbone(主干网络)
  • 任务:从输入图像中提取多层次特征。
  • 常见结构:Darknet(YOLOv3)、CSPDarknet(YOLOv4/v5)、EfficientNet、RepVGG等。
  • 特点:浅层捕获细节信息,深层捕获语义信息。
Neck(颈部网络)
  • 任务:融合Backbone输出的多尺度特征图,增强模型对不同尺寸目标的检测能力。
  • 常见结构
    • FPN(Feature Pyramid Network)
    • PANet(Path Aggregation Network)
    • BiFPN(加权双向特征金字塔)
Detection Head(检测头)
  • 任务:基于融合后的特征图,预测每个锚点(Anchor)或网格的边界框坐标(x, y, w, h)、目标置信度和类别概率。
  • 输出形式:通常为多个尺度的特征图,每个位置对应若干预测框。

4. YOLOv1详解

YOLOv1论文原文You Only Look Once: Unified, Real-Time Object Detection
中文翻译参考CSDN博客 - YOLOv1论文中文解读

4.1 模型介绍

YOLOv1的设计灵感来源于GoogleNet,因其极快的检测速度(45 FPS)和独特的“一次看完整张图”思想而得名。它将目标检测建模为一个回归问题,仅需一次前向传播即可输出所有检测结果。

处理流程

  1. Resize Image:将输入图像调整为固定尺寸(448×448)。
  2. Run Convolutional Network:通过24层卷积+2层全连接网络进行特征提取与预测。
  3. Non-Max Suppression (NMS):后处理去除冗余框,保留最优检测结果。

最终输出维度为 7×7×30


4.2 网络结构

YOLOv1网络包含:

  • 24个卷积层:用于特征提取。
  • 4个最大池化层:逐步下采样,扩大感受野。
  • 2个全连接层:最后两层用于输出7×7×30的预测张量。

输出尺寸计算公式(卷积/池化后):
Output Size = ⌊ Input Size + 2 × Padding − Filter Size Stride ⌋ + 1 \text{Output Size} = \left\lfloor \frac{\text{Input Size} + 2 \times \text{Padding} - \text{Filter Size}}{\text{Stride}} \right\rfloor + 1 Output Size=StrideInput Size+2×PaddingFilter Size+1
(向下取整)


4.3 核心思想

YOLOv1将输入图像划分为 S×S 的网格(论文中S=7),每个网格负责预测中心点落在其内部的目标

每个网格预测内容

  • B个边界框(Bounding Boxes):每个框包含5个值 → (x, y, w, h, confidence)
    • (x, y):框中心相对于当前网格的偏移。
    • (w, h):框宽高相对于整图的比例。
    • confidence:框内含有目标的概率 × 预测框与真实框的IoU。
  • C个类别概率(Class Probabilities):每个网格预测一组类别条件概率 Pr(Classᵢ|Object),与边界框数量B无关。

关键点每个网格只预测一套类别概率,但可预测多个边界框。

输出维度公式
S × S × ( B × 5 + C ) S \times S \times (B \times 5 + C) S×S×(B×5+C)
对于PASCAL VOC(C=20),B=2 → 输出为 7×7×(2×5 + 20) = 7×7×30


4.4 网络结构与预测结合
  • 7×7:图像被划分为49个网格单元。
  • 30:每个网格输出30维向量:
    • 20维:类别概率(VOC共20类)
    • 2×5 = 10维:两个边界框的 (x, y, w, h, confidence)

坐标归一化

  • x, y ∈ [0,1]:相对于网格左上角的偏移比例。
  • w, h ∈ [0,1]:相对于整图宽高的比例。

4.5 损失函数详解

YOLOv1使用均方误差(MSE) 作为损失函数,但针对不同部分设置了不同权重:

L = λ coord ∑ i = 0 S 2 ∑ j = 0 B 1 i j obj [ ( x i − x ^ i ) 2 + ( y i − y ^ i ) 2 + ( w i − w ^ i ) 2 + ( h i − h ^ i ) 2 ] + ∑ i = 0 S 2 ∑ j = 0 B 1 i j obj ( C i − C ^ i ) 2 + λ noobj ∑ i = 0 S 2 ∑ j = 0 B 1 i j noobj ( C i − C ^ i ) 2 + ∑ i = 0 S 2 1 i obj ∑ c ∈ classes ( p i ( c ) − p ^ i ( c ) ) 2 \begin{aligned} \mathcal{L} = & \lambda_{\text{coord}} \sum_{i=0}^{S^2} \sum_{j=0}^{B} \mathbb{1}_{ij}^{\text{obj}} \left[ (x_i - \hat{x}_i)^2 + (y_i - \hat{y}_i)^2 \right. \\ & \left. + (\sqrt{w_i} - \sqrt{\hat{w}_i})^2 + (\sqrt{h_i} - \sqrt{\hat{h}_i})^2 \right] \\ & + \sum_{i=0}^{S^2} \sum_{j=0}^{B} \mathbb{1}_{ij}^{\text{obj}} (C_i - \hat{C}_i)^2 \\ & + \lambda_{\text{noobj}} \sum_{i=0}^{S^2} \sum_{j=0}^{B} \mathbb{1}_{ij}^{\text{noobj}} (C_i - \hat{C}_i)^2 \\ & + \sum_{i=0}^{S^2} \mathbb{1}_{i}^{\text{obj}} \sum_{c \in \text{classes}} (p_i(c) - \hat{p}_i(c))^2 \end{aligned} L=λcoordi=0S2j=0B1ijobj[(xix^i)2+(yiy^i)2+(wi w^i )2+(hi h^i )2]+i=0S2j=0B1ijobj(CiC^i)2+λnoobji=0S2j=0B1ijnoobj(CiC^i)2+i=0S21iobjcclasses(pi(c)p^i(c))2

关键项解读

  • w , h \sqrt{w}, \sqrt{h} w ,h 开根号
    防止大框误差主导损失函数。若直接用w,h,大目标的损失远大于小目标。开根号后,小目标误差被放大,使模型更关注小物体检测。

  • λ coord = 5 \lambda_{\text{coord}} = 5 λcoord=5
    坐标损失权重,调高位置预测的重要性。

  • λ noobj = 0.5 \lambda_{\text{noobj}} = 0.5 λnoobj=0.5
    背景框置信度损失权重,降低负样本影响,避免模型过度抑制背景区域。

  • 1 i j obj \mathbb{1}_{ij}^{\text{obj}} 1ijobj
    指示函数,仅当第i个网格的第j个预测框负责某个真实目标时为1。

  • S 2 = 49 S^2 = 49 S2=49
    总共49个网格单元。


4.6 算法性能对比(Fast R-CNN vs YOLO)
错误类型 Fast R-CNN YOLO
Correct(正确检测) 71.6% 65.5%
Loc(定位不准) 8.6% 19.0%
Sim(相似类误分) 4.3% 6.75%
Other(其他错误) 1.9% 4.0%
Background(误检背景) 13.6% 4.75%

分析

  • YOLO显著减少了背景误检(Background Errors),得益于全局上下文感知。
  • 定位精度较低(Loc Errors高),是早期YOLO的主要短板。

4.7 优缺点总结

优点

  • 实时性强:45 FPS,满足视频流检测需求。
  • 背景误检少:利用全局信息,减少将背景误判为目标。
  • 端到端训练:整个流程由单一网络完成,便于优化。

缺点

  • 定位精度不高:使用全连接层,分辨率固定,难以精确定位。
  • 小物体检测差:每个网格仅预测2个框且共享类别,难以处理密集小目标(如鸟群)。
  • 召回率低:可能遗漏部分真实目标,尤其在目标密集区域。

结语

YOLOv1作为目标检测领域的里程碑式工作,首次将检测任务统一为回归问题,实现了速度与精度的平衡。尽管存在定位不准、小目标检测弱等不足,但其“一次看完整张图”的思想深刻影响了后续研究。从YOLOv1到YOLO13,该系列不断融合新技术,在精度、速度与鲁棒性上持续突破。掌握YOLOv1的核心原理,是理解整个YOLO家族乃至现代目标检测技术的坚实起点。建议初学者动手实现YOLOv1或使用YOLOv5/v8进行实战训练,加深理解。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐