YOLO V1

YOLO 模型是一种 one-stage 的目标检测方法,相较于 two-stage 的 R-CNN 目标检测方法速度更快,更加适合实时物体检测场景。我们通过以下几个方面来了解下算法思想:

  1. YOLO V1 模型的输入输出
  2. YOLO V1 模型的损失函数

1. YOLO V1 输入和输出

YOLO V1 输入图像大小是 448×448,输出则是 7x7x30 的结果,这个结果怎么理解?

我们可以理解为,模型将输入的 448×448 分割成了 7×7 个网络,每个网格中就包含了模型的预测结果,这些信息都存储在长度为 30 的张量中,具体如下图所示:

  1. 前 10 个位置存储了两组预测的边框参数,每一组边框参数为: \((C, c_x, c_y, w, h)\)
  2. C 表示置信度,用于判断边框内是否包含物体,该值越大越说明模型认为该边框内越可能存在物体;
  3. \(c_x、c_y\) 表示相对于网格位置的偏移量
  4. \(w、h\) 表示相对于原图像的比例。假设:输入图像是 100×200,w=0.3, h=0.4,则预测的边框宽高为 30×80
  5. 后 20 个位置表示是 20 个类别的预测分数,如果我们有 40 个类别,这地方就可以有 40 个值

2. YOLO V1 模型的损失函数

损失函数中包含三部分的损失计算,分别是:边框损失、置信度损失、以及预测类别的损失。这三项都是计算的平方损失。

Part.1 只计算包含物体的边框的损失,对于那些不包含物体的边框直接忽略。我们知道一个物体对应输出了 2 个边框,这里由与真实边框 IOU 最大的边框来反向传播。

Part.2 计算置信度损失时,作者考虑了包含物体、不包含物体的边框置信度。这里包含仍然指的是 IOU 最大的那个边框。模型尽量提升包含物体边框的置信度,降低不包含物体的边框的置信度。作者设置 \(λ_{noobj}=0.5\)

Part.3 计算的是包含物体的网格的概率平方和损失,正确类别的概率往 1 的方向学,不正确的类别概率往 0 方向学。

未经允许不得转载:一亩三分地 » YOLO V1
评论 (0)

4 + 3 =