148、Focal-EIoU 联合损失:Focal Loss 加 EIoU 的高质量框优先策略与代码
148、Focal-EIoU 联合损失:Focal Loss 加 EIoU 的高质量框优先策略与代码一个让我失眠三天的调试问题去年年底做智慧交通项目,车流密集场景下YOLOv11的mAP死活卡在78.3%上不去。翻看验证集预测结果,发现大量低质量预测框——那些IoU在0.5到0.7之间的半吊子框占了总预测数的40%以上。更头疼的是,这些框的置信度还特别高,NMS死活滤不掉。当时我盯着TensorBoard上的损失曲线,CIoU loss已经收敛到0.02以下了,但检测效果就是差口气。直觉告诉我:问题出在损失函数对高质量框和低质量框的“一视同仁”上。为什么CIoU/GIoU不够用CIoU考虑了重叠面积、中心点距离和宽高比,理论上很完美。但实际训练中,大量低质量预测框(IoU0.5)贡献了绝大部分损失梯度。模型被迫花大量精力去优化这些“废框”,反而忽略了那些IoU0.7的高质量候选框。更坑爹的是,CIoU的宽高比惩罚项在anchor和GT宽高比差异极大时,梯度会爆炸。我曾在训练日志里看到过loss突然跳到inf,排查半天发现是某个极端长宽比的GT框导致的。EIoU(Efficient IoU)解决了这个问题——它把宽高比惩罚拆成独立的宽惩罚和高惩罚,避免了梯度爆炸。但EIoU依然没有解决“低质量框主导梯度”的问题。Focal-EIoU的设计思路核心思想很简单: