【目标检测算法】IOU、GIOU、DIOU、CIOU与YOLOv5损失函数

1 YOLOv5损失函数

classification loss 分类损失
localization loss, 定位损失(预测边界框与GT之间的误差)
confidence loss 置信度损失(框的目标性 objectness of the box)

总的损失函数: classification loss + localization loss + confidence loss

YOLOv5使用二元交叉熵损失函数计算类别 概率和目标置信度得分 的损失。
YOLOv5使用 CIOU Loss作为bounding box回归的损失。

多标签分类:

  • 大多数分类器假设输出标签是互斥的。 如果输出是互斥的目标类别,则确实如此。 因此,YOLO应用softmax函数将得分转换为总和为1的概率。 而YOLOv3/v4/v5使用多标签分类。 例如,输出标签可以是“行人”和“儿童”,它们不是非排他性的。 (输出的总和可以大于1)
  • YOLOv3/v4/v5用多个独立的逻辑(logistic)分类器替换softmax函数,以计算输入属于特定标签的可能性。
  • 在计算分类损失进行训练时,YOLOv3/v4/v5对每个标签使用二元交叉熵损失。 这也避免使用softmax函数而降低了计算复杂度。

1.1 IOU(Intersection over Union)

【目标检测算法】IOU、GIOU、DIOU、CIOU与YOLOv5损失函数_第1张图片
【目标检测算法】IOU、GIOU、DIOU、CIOU与YOLOv5损失函数_第2张图片

这里有两个问题:

  • 如果两个物体不重叠,则IoU值将为零,并且不会反映两个形状彼此之间的距离;且将IoU用作损失,则其梯度将为零并且无法进行优化
  • IoU无法区分两个对象之间不同的对齐方式。 (如下图)

【目标检测算法】IOU、GIOU、DIOU、CIOU与YOLOv5损失函数_第3张图片

1.2 GIOU(Generalized-IoU)

【目标检测算法】IOU、GIOU、DIOU、CIOU与YOLOv5损失函数_第4张图片
C是包含A和B的最小的面积。
C【目标检测算法】IOU、GIOU、DIOU、CIOU与YOLOv5损失函数_第5张图片

GIOU作为loss函数时,Loss=1-GIOU,当A、B两框不相交时A∪B值不变,最大化GIOU就是就小化C,这样就会促使两个框不断靠近。

【目标检测算法】IOU、GIOU、DIOU、CIOU与YOLOv5损失函数_第6张图片

1.3 DIOU(Distance-IoU)

【目标检测算法】IOU、GIOU、DIOU、CIOU与YOLOv5损失函数_第7张图片根据GIoU损失(第一行)和DIoU损失(第二行)的边界框回归步骤。绿色和黑色分别表示目标框和锚框。蓝色和红色分别表示GIoU损失和DIoU损失的预测框。GIoU损耗一般增大Bounding box的尺寸以与目标框重叠,而DIoU损耗则直接使中心点归一化距离最小化
【目标检测算法】IOU、GIOU、DIOU、CIOU与YOLOv5损失函数_第8张图片
在这些情况 (C=A∪B) 下,GIoU损失降级为IoU损失,而我们的DIoU损失仍然是可区分的。绿色和红色分别表示目标框和预测框。

【目标检测算法】IOU、GIOU、DIOU、CIOU与YOLOv5损失函数_第9张图片

其中B_gt = (xgt, ygt, wgt, hgt) 为ground-truth,B = (x, y, w, h) 为预测框。
bounding box回归的DIoU损失,其中心点之间的归一化距离可以直接最小化。
C是覆盖两个盒子的最小围盒的对角线长度,d = ρ(b, b_GT) 是两个盒子中心点的距离。

【目标检测算法】IOU、GIOU、DIOU、CIOU与YOLOv5损失函数_第10张图片

【目标检测算法】IOU、GIOU、DIOU、CIOU与YOLOv5损失函数_第11张图片
IoU损失在非重叠情况下有很大的误差,GIoU损失在水平和垂直情况下有很大的误差,我们的DIoU损失在任何地方回归误差都非常小。

1.4 CIOU(Complete-IoU)

【目标检测算法】IOU、GIOU、DIOU、CIOU与YOLOv5损失函数_第12张图片
根据GIoU损失(第一行)和CIoU损失(第二行)优化的不同迭代后bounding box的更新。绿色和黑色分别表示目标框和锚框。蓝色和红色分别表示GIoU损失和CIoU损失的预测框。GIoU损失只考虑重叠面积,并倾向于通过增大预测框的尺寸来增加GIoU。

得益于这三种几何因素(中心点距离、重叠面积和高宽比),CIoU损失中归一化中心点距离的最小可以使算法快速收敛,重叠面积和高宽比的一致性有助于更好地匹配两个框。【目标检测算法】IOU、GIOU、DIOU、CIOU与YOLOv5损失函数_第13张图片
可以看到,对于非重叠情况,IoU损失有很大的误差。对于水平和垂直情况,GIoU损失有很大的误差。而我们的CIoU损失在任何场景下都有很小的回归误差
【目标检测算法】IOU、GIOU、DIOU、CIOU与YOLOv5损失函数_第14张图片【目标检测算法】IOU、GIOU、DIOU、CIOU与YOLOv5损失函数_第15张图片【目标检测算法】IOU、GIOU、DIOU、CIOU与YOLOv5损失函数_第16张图片
CIoU Loss定义为:
【目标检测算法】IOU、GIOU、DIOU、CIOU与YOLOv5损失函数_第17张图片

1.5 损失函数总结

IoU系列(IoU, GIoU, DIoU, CIoU)

下图为上面博客的引用! 博主总结的非常好!

【目标检测算法】IOU、GIOU、DIOU、CIOU与YOLOv5损失函数_第18张图片

你可能感兴趣的:(#,目标检测,目标检测,算法,计算机视觉)