3.9 YOLO 算法(Putting it together: YOLO algorithm)

假设要在图片中检测行人、汽车,同时使用两种不同的Anchor box

训练集:

  • 输入X:同样大小的完整图片

  • 目标Y:使用3×33\times3网格划分,输出大小3×3×2×83\times3\times2\times8,或者3×3×163\times3\times16

  • 对不同格子中的小图,定义目标输出向量Y

编号2目标向量y=[0???????1bxbybhbw010]Ty =\begin{bmatrix} 0 & ? & ? & ? & ? & ? & ? & ? & 1 & b_{x} & b_{y} & b_{h} &b_{w} & 0 & 1 & 0 \end{bmatrix}^{T},假设训练集中对于车子有一个边界框(编号3),水平方向更长一点,红框和anchor box 2的交并比更高,车子和向量的下半部分相关

模型预测:

输入与训练集中相同大小的图片,然后训练一个卷积网络,遍历9个格子,得到每个格子中不同的输出结果:3×3×2×83\times3\times2\times8

运行非最大值抑制(NMS):

  1. 假设使用了2个Anchor box,每一个网格都会得到预测输出的2个bounding boxes,其中一个PcP_{c}比较高

  2. 抛弃概率PcP_{c}值低的预测bounding boxes

  3. 对每个对象分别使用NMS算法得到最终的预测边界框

如果有三个对象检测类别,希望检测行人,汽车和摩托车:对于每个类别单独运行非极大值抑制,处理预测结果所属类别的边界框,用非极大值抑制来处理行人类别、车子类别、摩托车类别,运行三次来得到最终的预测结果

Last updated