145、EIoU 到 SIoU 的替换对比:角度惩罚对旋转和倾斜目标的增益分析
145、EIoU 到 SIoU 的替换对比:角度惩罚对旋转和倾斜目标的增益分析一、从一次翻车调试说起去年秋天我在做遥感图像检测项目,数据集里全是密密麻麻的倾斜船只和旋转的停车场车辆。用YOLOv8默认的CIoU跑了50个epoch,mAP@0.5:0.95卡在0.523死活上不去。当时我盯着验证集里那些被漏检的斜着停的卡车,突然意识到一个问题:CIoU虽然考虑了宽高比,但它对旋转目标的边界框回归几乎没有任何角度感知能力。我试着把损失函数换成EIoU,mAP涨了1.2个点,但那些倾斜严重的样本依然漏检。直到某天凌晨,我翻到一篇SIoU的论文,看到它引入了角度惩罚项,直觉告诉我这可能是突破口。替换后mAP直接跳到0.561,倾斜目标的召回率提升了将近8个点。这个经历让我决定把EIoU和SIoU的对比单独拿出来写一篇。不是简单罗列公式,而是从代码实现和实际调试的角度,把这两个损失函数在旋转和倾斜目标上的表现差异讲清楚。二、EIoU 和 SIoU 的核心差异:角度惩罚到底在惩罚什么先别急着看公式,我们用一个直观的例子理解。假设你有一个预测框和一个真实框,它们中心点重合,宽高也完全一致,但预测框相对于真实框旋转了30度。CIoU和EIoU在这种情况下都会给出一个非常高的IoU值,因为它们的惩罚项只关注中心点距离和宽高比,完全不关心角度偏差。SIoU的厉害之处在于它显式地引入了角度惩罚项。这个惩罚项的计算方式很巧妙:它先计算预测框和真实框中心点连线与水平轴之间的夹角,然后根据这个夹角的大小动态调整惩罚力度