YOLOv2 目标检测算法深度解析
- [一、YOLOv1 与 YOLOv2 核心对比](#一、YOLOv1 与 YOLOv2 核心对比)
- [二、YOLOv2 核心改进点](#二、YOLOv2 核心改进点)
-
- [1. Batch Normalization(批归一化)](#1. Batch Normalization(批归一化))
- [2. 高分辨率输入微调](#2. 高分辨率输入微调)
-
- 问题背景
- [YOLOv2 的改进](#YOLOv2 的改进)
- [三、YOLOv2 网络结构详解](#三、YOLOv2 网络结构详解)
-
- [1. 整体网络架构](#1. 整体网络架构)
- [2. 传统 CNN 的局限性](#2. 传统 CNN 的局限性)
- [3. YOLOv2 的解决方案 ------ 全局平均池化](#3. YOLOv2 的解决方案 —— 全局平均池化)
- [四、聚类提取先验框(Anchor Boxes)](#四、聚类提取先验框(Anchor Boxes))
- [五、直接位置预测(Directed Location Prediction)](#五、直接位置预测(Directed Location Prediction))
-
- [1. 概念](#1. 概念)
- [2. 计算公式](#2. 计算公式)
- [3. 示例说明](#3. 示例说明)
- 六、感受野与多尺度融合
一、YOLOv1 与 YOLOv2 核心对比
YOLOv2 在 YOLOv1 的基础上进行了全方位的升级,主要改进点包括:
- 引入 Batch Normalization(批归一化),舍弃 Dropout
- 使用 高分辨率输入(448×448 微调)
- 采用 DarkNet-19 作为骨干网络(不含全连接层)
- 引入 Anchor Box(先验框) 机制,数量从 2 个增加到 5 个
- 使用 K-means 聚类 自动生成先验框尺寸
- 支持 多尺度训练(320×320 ~ 608×608)

二、YOLOv2 核心改进点
1. Batch Normalization(批归一化)
YOLOv2 在每一层卷积之后都引入了 Batch Normalization(BN)层 ,并舍弃了 Dropout。
BN 层的作用是对网络每一层的输入进行归一化处理,使数据分布更加稳定,从而:
- 加速收敛:网络训练过程更加平稳
- 提升精度 :使用 BN 后,mAP(平均精度均值)提升了约 2%
- 正则化效果:BN 本身具有一定的正则化作用,可替代 Dropout
从目前来看,BN 已成为现代卷积神经网络中的标准配置。

2. 高分辨率输入微调
问题背景
YOLOv1 在训练时使用 224×224 的输入尺寸,测试时却使用 448×448,这可能导致模型难以适应测试阶段的分辨率变化。
YOLOv2 的改进
- 在训练过程中额外增加了 10 次 448×448 的高分辨率微调
- 通过高分辨率分类器微调后,YOLOv2 的 mAP 提升了约 4%
这一改进使得模型在训练和测试阶段的分辨率保持一致,显著提升了检测精度。
三、YOLOv2 网络结构详解
1. 整体网络架构
YOLOv2 不再沿用 YOLOv1 的 GoogLeNet,而是采用自行设计的 DarkNet-19 作为骨干网络。
关键特点:
- 输入尺寸:416×416×3
- 不含全连接层(FC),全部由卷积层和池化层构成
- 经过 5 次降采样 (stride=2 的卷积),最终特征图尺寸为 13×13
- 输出特征图的尺寸为 13×13×125(125 = 5 个先验框 × 25 个参数)

2. 传统 CNN 的局限性
在传统的卷积神经网络中(如下图所示),输入图像经过卷积处理后,在进入全连接层之前,特征图需要被**展平(Flatten)**为一维向量。
问题 :全连接层的权重参数数量取决于输入特征图的大小。例如,若全连接层输入为 128×13×13,输出为 2048 个神经元,则参数量为 128 × 13 × 13 × 2048,十分庞大。若输入图像尺寸改变,特征图大小也随之改变,导致全连接层无法正常工作。

3. YOLOv2 的解决方案 ------ 全局平均池化
YOLOv2 的 DarkNet-19 网络不包含全连接层 ,而是采用全局平均池化(Global Average Pooling) 作为网络的最后一层。
原理:对每个特征图计算全局平均值,输出固定长度的向量(如 1000 维),然后通过 Softmax 输出类别概率。
优势:
- 支持任意尺寸的输入图像
- 不受输入分辨率变化的影响
- 极大减少了参数量
局限性 :由于网络进行了 5 次降采样(每次 stride=2),输入图像的尺寸必须能被 32 整除。
四、聚类提取先验框(Anchor Boxes)
1. YOLOv1 vs YOLOv2 先验框数量
| 版本 | 先验框数量 | 说明 |
|---|---|---|
| YOLOv1 | 2 个/网格 | 数量较少,定位精度有限 |
| YOLOv2 | 5 个/网格 | 数量增加,精度提升 |
| Faster R-CNN | 9 种 | 3 种尺度 × 3 种比例 |
先验框数量越多,目标定位越精确,但同时也会增加计算量。YOLOv2 在速度和精度之间取得了较好的平衡。
2. K-means 聚类算法
YOLOv2 不再手动设计先验框尺寸,而是通过 K-means 聚类 自动从训练集中学习。
聚类流程
- 从训练集中提取所有标注框的宽度(w)和高度(h)
- 将每个标注框表示为二维坐标点
(w, h) - 使用 K-means 算法对这些点进行聚类(K=5)
- 计算每个簇的平均宽高作为先验框尺寸
距离度量
YOLOv2 采用 1 - IoU 作为聚类距离,而非传统的欧氏距离:
d(box, centroid) = 1 - IoU(box, centroid)
使用 IoU 作为距离度量,使得聚类结果更关注框的重叠程度,而非绝对尺寸,从而更适合目标检测任务。

3. 聚类框数量的确定
YOLOv2 通过实验确定 K=5 为最优选择------在模型复杂度和检测精度之间取得了最佳平衡。
4. 先验框分配策略
与 Faster R-CNN 不同,YOLOv2 的先验框不按固定长宽比和尺度预先设定,而是通过聚类直接从数据中学习得到,能更好地适配特定数据集的分布特征。
- 特征图尺寸为 13×13 ,每个网格分配 5 个先验框
- 总预测框数量:
13 × 13 × 5 = 845个(YOLOv1 仅为 98 个)
五、直接位置预测(Directed Location Prediction)
1. 概念
直接位置预测(Directed Location Prediction) 是 YOLOv2 引入的一种边界框位置微调方法,其核心目的是预测偏移量 而非绝对坐标,并对偏移量进行约束限制,防止训练过程中出现发散。
与 YOLOv1 直接回归坐标不同,YOLOv2 预测的是相对于网格单元边界的偏移值 ,同时通过 Sigmoid 函数将偏移量限制在 [0, 1] 区间内,确保预测框的中心点不会跑出所属网格的范围。
2. 计算公式
YOLOv2 的位置预测公式如下:
bx = σ(tx) + cx
by = σ(ty) + cy
bw = pw · exp(tw)
bh = ph · exp(th)
其中:
bx, by, bw, bh:最终预测框的中心坐标和宽高tx, ty, tw, th:模型预测的偏移量cx, cy:当前网格单元的左上角坐标(偏移量,取值为 0~12)pw, ph:先验框(Anchor Box)的宽高σ:Sigmoid 函数,将值压缩到(0, 1)区间
3. 示例说明
以输入图像 416×416 为例,经过 5 次降采样(32 倍缩放)后,特征图尺寸为 13×13。
- 特征图上的位置
(cx, cy)乘以 32 即可映射回原始图像坐标 - 使用 Sigmoid 将
tx, ty限制在[0, 1],确保预测框中心点落在当前网格内 - 通过
exp(tw)和exp(th)对先验框尺寸进行缩放调整

六、感受野与多尺度融合
1. 感受野概念
感受野(Receptive Field) 是指特征图上的每个点在原始图像中所对应的视野范围。特征图中的一个单元格,相当于上一层输入图像中多个像素点的"浓缩"。
感受野的作用
感受野决定了网络能够"看到"输入图像的多大区域,对目标检测任务至关重要:
- 深层网络:感受野大,能捕捉全局语义信息,但可能丢失小目标细节
- 浅层网络:感受野小,能保留局部细节信息,适合检测小目标

2. Fine-Grained Features(细粒度特征融合)
问题
随着网络不断加深,最后一层特征图的感受野过大,小目标的特征信息可能丢失。
解决方案
YOLOv2 引入细粒度特征(Fine-Grained Features) 融合策略:
- 在网络的中间层(尺寸为
512×26×26的特征图)额外复制一份特征 - 将该特征图分割成 4 份 ,重新排列为
4 × 13 × 13 × 512 - 将重排后的特征拼接到 最后一层
1024×13×13的特征图之后 - 最终得到
(1024 + 2048) × 13 × 13的融合特征图
这样既保留了深层的大感受野语义信息,又融入了浅层的细节信息,有效改善了小目标检测效果。

3. 多尺度训练(Multi-Scale Training)
策略
由于 YOLOv2 不含全连接层,输入图像的尺寸可以动态变化,只需保证尺寸能被 32 整除即可。
训练机制
- 每经过 10 个批次(batch),随机选择一个新的输入尺寸
- 可选范围:320×320 到 608×608(步长为 32)
效果
- 小尺寸(320×320):速度快,适合实时应用
- 大尺寸(608×608):精度高,适合高精度需求场景
这种多尺度训练策略使得 YOLOv2 在速度和精度之间实现了更好的平衡。