YOLOv4是一种先进的目标检测算法,它在YOLO系列的基础上进行了多项改进和优化。
一、损失函数改进
IOU损失表示预测框A和真实框B之间交并比的差值,反映预测检测框的检测效果。在目标检测任务中,通常使用1-IOU作为优化目标,即最大化预测框与真实框的重叠程度,也就是最小化IOU损失。
当预测框与真实框没有相交时,IOU损失为0,无法梯度计算,且相同的IOU有时也并不一定能反应真实情况。
为了克服传统IOU损失的局限性,研究者们提出了多种优化和改进方法,如GIOU、DIOU和CIOU等。
1.GIOU损失
计算公式: L G I O U = 1 − I O U + ∣ C − B ∪ B g t ∣ C L_{GIOU}=1-IOU+\frac{|C-B∪B^{gt}|}{C} LGIOU=1−IOU+C∣C−B∪Bgt∣
GIoU在IOU的基础上增加了一个惩罚项,用于度量预测框和真实框之间的非重叠区域。GIoU的取值范围在[-1,1]之间,当预测框与真实框完全重合时取值为1,当两者无交集且无限远时取值为-1。GIoU损失能够更好地反映预测框与真实框之间的重合度,且解决了IOU损失在检测框不重叠时出现的梯度问题。
但是如果预测框在真实框内部,会导致惩罚项全部为0,导致最终GIOU损失全部一致,如下:
2.DIOU损失
DIOU在IOU的基础上考虑了预测框和真实框之间的距离信息,使得目标框回归更加稳定。
计算公式为:
L D I O U = 1 − I O U + ρ 2 ( b , b g t ) C 2 L_{DIOU }= 1-IOU+\frac{ρ²(b, b^{gt})}{C^2} L