113、YOLOv8改进实战:MPDIoU损失函数——基于最小点距离的边界框回归优化与代码实现

📅 2026/7/31 14:46:34
113、YOLOv8改进实战:MPDIoU损失函数——基于最小点距离的边界框回归优化与代码实现
113、YOLOv8改进实战:MPDIoU损失函数——基于最小点距离的边界框回归优化与代码实现上个月调一个工业缺陷检测模型,遇到个让人头疼的问题:小目标召回率死活上不去,尤其是那些长宽比极端的细长缺陷。CIoU用了,GIoU也试了,损失曲线看着收敛得挺好,可mAP就是卡在0.72不动。后来翻论文看到MPDIoU,抱着试试看的心态改了一版,没想到直接干到0.81。今天就把这个坑填上,聊聊MPDIoU到底解决了什么问题,以及怎么在YOLOv8里落地。为什么CIoU在某些场景下不够用先说说CIoU的痛点。CIoU在IoU基础上引入了中心点距离和宽高比惩罚项,理论上已经考虑得挺周全了。但实际调试时你会发现,当预测框和真实框的宽高比差异很大时,CIoU的惩罚项会变得不稳定。比如检测细长裂缝,预测框稍微偏一点,宽高比惩罚项就开始剧烈震荡,导致梯度方向混乱。更关键的是,CIoU的惩罚项是基于框的几何属性计算的,但几何属性本身对坐标偏移的敏感度不一致。两个框中心点距离相同,但一个在左上角一个在右下角,CIoU给出的惩罚值可能差异很大——这其实违背了损失函数应该平滑的直觉。MPDIu的思路很直接:既然问题出在几何属性的非线性响应上,那就用最小点距离来替代。具体来说,MPDIoU计算的是预测框和真实框四个角点之间的最小欧氏距离,然后把这个距离作为惩罚项加到IoU上。这样做的好处是,角点距离对坐标偏移的响应是线性的,梯度更稳定,收敛路径更直接。MPDIoU的数学原理(用大白话讲)公式其实不复杂,但网上很多文章写得云