yolo-yolo v1损失函数理解

Loss函数
Yolo里的每个格点,是怎么知道该预测哪个物体的?这就是神经网络算法的能力。首先拿到一批标注好的图片数据集,按照规则打好标签,之后让神经网络去拟合训练数据集。训练数据集中的标签是通过人工标注获得,当神经网络对数据集拟合的足够好时,那么就相当于神经网络具备了一定的和人一样的识别能力。

神经网络结构确定之后,训练效果好坏,由Loss函数和优化器决定。Yolo v1使用普通的梯度下降法作为优化器。这里重点解读一下Yolo v1使用的Loss函数:
yolo-yolo v1损失函数理解_第1张图片yolo-yolo v1损失函数理解_第2张图片yolo-yolo v1损失函数理解_第3张图片

  1. 预测框的中心点(x, y) 。造成的损失(即对损失函数有贡献)是图中的第一行。其中 在这里插入图片描述为控制函数,在标签中包含物体的那些格点处,该值为1;若格点不含有物体,该值为 0。也就是只对那些有真实物体所属的格点进行损失计算若该格点不包含物体则不进行此项损失计算,因此预测数值不对此项损失函数造成影响(因为这个预测数值根本不带入此项损失函数计算)
  2. 预测框的高度(w, h)。造成的损失(即对损失函数有贡献)是图中的第二行。其中 在这里插入图片描述为控制函数,含义与预测中心一样。1、2项就是边框回归
  3. 第三行与第四行,都是预测框的置信度C。当该格点不含有物体时,该置信度的标签为0;若含有物体时,该置信度的标签为预测框与真实物体框的IOU数值(IOU计算公式为:两个框交集的面积除以并集的面积)。其中第三行函数的在这里插入图片描述依然为控制函数,在标签中包含物体的那些格点处,该值为1;若格点不含有物体,该值为 0。也就是只对那些有真实物体所属的格点进行损失计算若该格点不包含物体则不进行此项损失计算,因此预测数值不对此项损失函数造成影响(因为这个预测数值根本不带入此项损失函数计算)。第四行的在这里插入图片描述也控制函数,只是含义与第三项的相反,在标签中不含物体的那些格点处,该值为1;若格点含有物体,该值为 0。也就是只对那些没有真实物体所属的格点进行损失计算若该格点包含物体(包含物体置信度损失已经在第三项计算了)则不进行此项损失计算,因此预测数值不对此项损失函数造成影响(因为这个预测数值根本不带入此项损失函数计算)
  4. 第五行为物体类别概率P,对应的类别位置,该标签数值为1,其余位置为0,与分类网络相同。其中此项在这里插入图片描述也为控制函数,在标签中包含物体的那些格点处,该值为1;若格点不含有物体,该值为 0。也就是只对那些有真实物体所属的格点进行物体类别损失计算若该格点不包含物体则不进行此项损失计算,因此预测数值不对此项损失函数造成影响(因为这个预测数值根本不带入此项损失函数计算)

此时再来看 在这里插入图片描述在这里插入图片描述,Yolo面临的物体检测问题,是一个典型的类别数目不均衡的问题。其中49个格点,含有物体的格点往往只有3、4个,其余全是不含有物体的格点。此时如果不采取点措施,那么物体检测的mAP不会太高,因为模型更倾向于不含有物体的格点。[公式]在这里插入图片描述的作用,就是让含有物体的格点在损失函数中的权重更大让模型更加“重视”含有物体的格点所造成的损失。在论文中, [公式]在这里插入图片描述 的取值分别为5与0.5。

References

  1. https://zhuanlan.zhihu.com/p/70387154
  2. https://zhuanlan.zhihu.com/p/139713442
  3. https://mp.weixin.qq.com/s?__biz=MzA4Nzk3MTE5OQ==&mid=2247484090&idx=1&sn=a5b37bef469cf2f35bb82c859ee69980&chksm=903006aaa7478fbc450ae2a8736a8c50d7e370a81d5df02065c52450e965123d697746768175&scene=21#wechat_redirect

你可能感兴趣的:(CV)