我试图了解Yolo v2损失函数:
如果有人可以详细说明功能。
我试图了解Yolo v2损失函数:
如果有人可以详细说明功能。
Answers:
不同术语的解释:
请注意,对于每个bbox预测,我都使用了两个索引和,但本文中并非如此,因为总会有一个因子或因此没有模棱两可的解释:所选的是与该单元格中最高置信度得分相对应的。Ĵ 1 n o o b j 我j j
每个和项的更一般的解释:
B*(5+C)
吗?YOLO v3就是这种情况。
YOLOv2损失功能看起来并不可怕吗?实际上不是!它是周围最大胆,最聪明的损失函数之一。
首先让我们看一下网络实际预测的结果。
如果我们回顾一下,YOLOv2会在13x13的特征图上预测检测到的物体,因此总共有169个图/单元。
我们有5个锚框。对于每个锚点框,我们需要对象置信度得分(是否找到任何对象?),锚点框的4个坐标(和)以及20个顶级类。对于所有5个锚框预测,这可以粗略地看成20个坐标,5个置信度得分和100个类别概率。
我们没有什么可担心的:
除分类损失(使用交叉熵函数)以外,所有损失均为均方误差。
现在,让我们打破图像中的代码。
我们需要计算每个锚框的损失(总共5个)
我们需要对S = 12的13x13单元格中的每个单元格执行此操作(因为我们从0开始索引)
当单元格有一个对象时,为1 ,否则为0。
var1 | var2 | (var1-var2)^ 2 | (sqrtvar1-sqrtvar2)^ 2
0.0300 | 0.020 | 9.99e-05 | 0.001
0.0330 | 0.022 | 0.00012 | 0.0011
0.0693 | 0.046 | 0.000533 | 0.00233
0.2148 | 0.143 | 0.00512 | 0.00723
0.3030 | 0.202 | 0.01 | 0.01
0.8808 | 0.587 | 0.0862 | 0.0296
4.4920 | 2.994 | 2.2421 | 0.1512
没那么吓人吧!
在这里阅读更多信息。
您的损失功能适用于YOLO v1,而不适用于YOLO v2。我也对两个损失函数的区别感到困惑,似乎很多人都在:https : //groups.google.com/forum/#!topic/darknet/TJ4dN9R4iJk
YOLOv2论文解释了与YOLOv1的体系结构差异,如下所示:
我们从YOLO(v1)中删除了完全连接的图层,并使用锚定框预测边界框...当移到锚定框时,我们还将类预测机制与空间位置解耦,而是为每个锚定框预测类和对象。
这意味着以上的置信概率不仅应取决于和而且还取决于锚框索引,例如。因此,损失需要与上面有所不同。不幸的是,YOLOv2文件没有明确说明其损失功能。
我尝试猜测YOLOv2的损失函数并在此处进行讨论:https ://fairyonice.github.io/Part_4_Object_Detection_with_Yolo_using_VOC_2012_data_loss.html
这是我的学习笔记
损失函数:平方和误差
一个。原因:易于优化b。问题:(1)与我们实现平均平均精度最大化的目标不完全一致。(2)在每个图像中,许多网格单元都不包含任何对象。这会将这些单元格的置信度得分推向0,通常会超过确实包含对象的单元格的梯度。C。解决方案:增加边界框坐标预测的损失,并减少不包含对象的框的置信度预测的损失。我们使用两个参数和 = 0.5 d。平方和误差也同样权重大箱子和小箱子的误差
每个对象仅应负责一个边界框。我们分配一个预测变量来负责预测一个对象,根据该预测,当前预测的IOU最高且具有基本事实。
一个。边界框坐标(x,y)的损失请注意,损失来自一个网格单元的一个边界框。即使obj不在网格单元格中作为地面真理。
b。宽度w和高度h的损失。请注意,即使物体作为地面真相不在网格单元中,损失也来自一个网格单元的一个边界框。
C。每个边界框的置信度损失。并不是说损失是来自一个栅格单元的一个边界框,即使该对象不是作为地面真相的栅格单元。
仅当网格单元中存在obj时,损失函数才会惩罚分类。如果该框负责地面框(最高IOU),也会对边界框坐标进行惩罚