You Only Look Once: Unified, Real-Time Object Detection
论文:https://arxiv.org/abs/1506.02640
代码:https://pjreddie.com/darknet/yolo/
Unified Detection
YOLO 将目标检测的各个部分统一为一个单一的神经网络。网络使用整个图像的特征来预测每个边界框。它还可以同时预测图像中所有类的所有边框。
将输入图像划分为 S × S 网格。如果一个目标的中心落在一个网格单元格中,该网格单元格负责检测该物体。每个网格单元格预测B个边界框和这些框的置信度得分。这些置信度得分反映了模型对框中包含目标的概率,以及它认为框预测的准确性。形式上,我们将置信度定义为 Pr(Object) ∗ IOU pred truth \text{Pr(Object)}∗\text{IOU}^{\text{truth}}_{\text{pred}} Pr(Object)∗IOUpredtruth。如果该单元格中不存在目标,则置信度得分应为零。否则,我们希望置信度得分等于预测框和 ground truth 之间的交并比(IOU)。
每个边界框包含5个预测:x, y, w, h和置信度。(x, y)坐标表示相对于网格单元格边界的框的中心。相对于整个图像的宽度和高度进行了预测。最后,置信预测表示预测框与任何ground truth框之间的IOU。每个网格单元还预测C条件类的概率, Pr(Class i ∣ Object ) \text{Pr(Class}_i|\text{Object}) Pr(Classi∣Object)。这些概率取决于包含对象的网格单元格。我们只预测每个网格单元的一组类别概率,而不管B的框数量如何。
在测试时,我们将条件类的概率和单个框的置信预测相乘,
Pr(Class i ∣ Object ) ∗ Pr ( Object ) ∗ IOU pred truth = Pr(Class i ) ∗ IOU pred truth \text{Pr(Class}_i|\text{Object}) ∗ \text{Pr}(\text{Object})∗\text{IOU}^{\text{truth}}_{\text{pred}}= \text{Pr(Class}_i) ∗\text{ IOU}^{\text{truth}}_{\text{pred}} Pr(Classi∣Object)∗Pr(Object)∗IOUpredtruth=Pr(Classi)∗ IOUpredtruth
这就给了我们每个框的特定类别的置信度。这些置信度编码了该类别出现在框中的概率,以及预测的框与目标的匹配程度。
对于PASCAL VOC的YOLO,我们使用S = 7, B = 2。PASCAL VOC有20个等级,所以C = 20。我们最后的预测是一个7 × 7 × 30张量(30=(4个坐标信息+1个置信度)*2个边界框+20个类别)。
Network Design
网络的初始卷积层从图像中提取特征,而全连接层预测输出概率和坐标。网络的灵感来自于用于图像分类的GoogLeNet模型,它有24个卷积层,其次是2个全连接层。与GoogLeNet使用的初始模块不同,我们简单地使用1×1简化层,然后是3×3卷积层,完整的网络如下图所示。
我们还训练了一个YOLO的快速版本,旨在推动快速目标检测的边界。Fast YOLO使用更少卷积层(9而不是24)的神经网络,这些层中更少的过滤器。除了网络的大小,YOLO和Fast YOLO之间的所有训练和测试参数是相同的。
我们的网络的最终输出是7 × 7 × 30张量的预测。
训练
最后一层预测类概率和边界框坐标。我们根据图像的宽度和高度使边界框的宽度和高度归一化,使它们在0和1之间。我们将边界框的x和y坐标参数化,使其成为特定网格单元格位置的偏移量,因此它们也被限定在0和1之间。
YOLO 预测每个网格单元格有多个边界框。在训练时,我们只希望一个边界框预测器负责每个对象。我们指派一名预测者“负责”预测一个目标,该目标基于哪个预测具有最高的实际 IoU。这导致了边界框预测器之间的专门化。每个预测器都能更好地预测物体的特定大小、长宽比或类别,从而提高整体的回忆能力。
坐标损失:
λ coord ∑ i = 0 S 2 ∑ j = 0 B 1 i j obj [ ( x i − x ^ i ) 2 + ( y i − y ^ i ) 2 ] + λ coord ∑ i = 0 S 2 ∑ j = 0 B 1 i j obj [ ( w i − w ^ i ) 2 + ( h i − h ^ i ) 2 ] \lambda_{\text {coord }} \sum_{i=0}^{S^{2}} \sum_{j=0}^{B} \mathbb{1}_{i j}^{\text {obj }}\left[\left(x_{i}-\hat{x}_{i}\right)^{2}+\left(y_{i}-\hat{y}_{i}\right)^{2}\right] \\ \qquad \begin{aligned} +\lambda_{\text {coord }} \sum_{i=0}^{S^{2}} \sum_{j=0}^{B} \mathbb{1}_{i j}^{\text {obj }}\left[\left(\sqrt{w_{i}}-\sqrt{\hat{w}_{i}}\right)^{2}+\left(\sqrt{h_{i}}-\sqrt{\hat{h}_{i}}\right)^{2}\right] \end{aligned} λcoord i=0∑S2j=0∑B1ijobj [(xi−x^i)2+(yi−y^