YOLOv2 相比 YOLOv1 的核心改动(精简版)
目标一句话:YOLOv2 通过引入 anchor、改进坐标参数化与训练策略,显著提升了定位稳定性与召回率,同时保持实时性。
I. 从“直接回归框”到“Anchor-based 预测”(最核心变化)¶
YOLOv1¶
- 每个 grid cell 直接回归 bounding box:
\((x, y, w, h)\) - 回归空间大,
- 大物体:单 cell 压力过大
- 小物体:易冲突
YOLOv2¶
- 引入 Anchor Boxes(先验框)
- 网络不再预测 box 本身,而是预测 相对于 anchor 的偏移量:\((t_x, t_y, t_w, t_h)\)
最终 box 由:
\[\begin{aligned} b_x &= \sigma(t_x) + c_x \\ b_y &= \sigma(t_y) + c_y \\ b_w &= p_w \cdot e^{t_w} \\ b_h &= p_h \cdot e^{t_h} \end{aligned}\]
- \((p_w, p_h)\):anchor 宽高
- \((c_x, c_y)\):grid cell 左上角
📌 效果:
- 回归难度显著降低
- Recall 明显提升(v2 论文明确指出)
II. Anchor 的来源:K-means 聚类(数据驱动)¶
- 对训练集 GT box 的 \((w, h)\) 做 K-means
- 距离度量:\(d(box, centroid) = 1 - IOU\)
📌 Anchor ≈ 数据集中最常见的物体形状(先验)
III. “责任分配”机制的变化¶
YOLOv1¶
- 一个 cell 的 B 个 predictor 动态竞争
- IOU 最大者负责 GT
YOLOv2¶
- 每个 predictor 绑定一个 anchor
-
一个 GT box 分配给:
-
中心点所在 cell
- IOU 最大的 anchor
📌 predictor 具有了“形状语义”
IV. Bounding box 参数化改进(稳定训练)¶
- 使用 \(\sigma(t_x), \sigma(t_y)\):
- 限制中心点在 cell 内(0,1)
-
使用 \(e^{t_w}, e^{t_h}\):
-
保证宽高为正
- 相对缩放更稳定
📌 减少数值发散,训练更稳
V. 从 FC 到 Fully Convolutional¶
- 移除 YOLOv1 中的全连接层
- 网络变为 全卷积结构(FCN)
📌 带来的好处:
- 可变输入尺寸(multi-scale training)
- 更好的泛化能力
Enjoy Reading This Article?
Here are some more articles you might like to read next: