142、EIoU 在 YOLOv11 中的完整实现:分离纵横比惩罚为宽高独立惩罚的代码与理论
142、EIoU 在 YOLOv11 中的完整实现:分离纵横比惩罚为宽高独立惩罚的代码与理论从一次调参翻车说起去年秋天帮朋友调一个工业质检项目,YOLOv11s在钢材表面缺陷数据集上跑了200轮,mAP@0.5:0.95卡在0.723死活上不去。翻看验证集预测结果,发现模型对细长划痕的定位框总是偏大一圈,尤其是纵横比超过3:1的缺陷,CIoU的惩罚项几乎失效。当时盯着loss曲线,CIoU的纵横比惩罚项v在训练后期震荡得像心电图——这就是CIoU的经典问题:当预测框和真实框的宽高比相同但实际尺寸不同时,v=0,惩罚完全消失。后来换成EIoU,同样的超参数,mAP直接跳到0.761,定位误差下降了37%。这个案例让我意识到,CIoU的纵横比惩罚设计存在根本性缺陷。今天我们就从代码层面彻底拆解EIoU在YOLOv11中的实现,把那个“v=0但框不对”的坑填平。CIoU的纵横比惩罚为什么是伪命题先看CIoU的惩罚项公式:v = (4/π²) * (arctan(w_gt/h_gt) - arctan(w_pred/h_pred))²这个v只惩罚宽高比的差异,不惩罚宽高各自的绝对值差异。举个例子:真实框是(10, 20),预测框是(20, 40),宽高比都是0.5,v=0,但实际尺寸差了一倍。CIoU的梯度回传时,对w和h的梯度方向完全相反——增大w的同时减小h,导致收敛路径扭曲。EIoU的核心改进就是把v拆成两个独立项: