154、VFL 不对称焦点损失的 YOLOv11 代码:对正负样本采用不同降权策略的 IoU-Aware 设计

📅 2026/7/8 21:33:56
154、VFL 不对称焦点损失的 YOLOv11 代码:对正负样本采用不同降权策略的 IoU-Aware 设计
154、VFL 不对称焦点损失的 YOLOv11 代码:对正负样本采用不同降权策略的 IoU-Aware 设计从一次诡异的mAP抖动说起去年年底帮一个自动驾驶项目调YOLOv11的检测头,客户反馈说夜间场景下小目标召回率突然掉了8个点。我翻了两天日志,发现罪魁祸首是正负样本的loss权重分配——YOLOv11默认的BCE Loss对正负样本一视同仁,但夜间图像里负样本(背景)的梯度噪声被放大了,导致正样本的IoU预测分支被带偏。当时我就在想:能不能让Loss自己学会“看人下菜碟”?正样本和负样本用不同的降权策略,同时把IoU预测的置信度也揉进去。这就是VFL(Varifocal Loss)不对称焦点损失的设计初衷。它不是简单的Focal Loss变体,而是专门针对YOLO系列中正负样本极度不平衡(1:1000+)的场景,让正样本的梯度主导训练,负样本只负责“纠正边界”。下面直接上代码,我会把踩过的坑都标出来。核心思想:正负样本的“双标”降权VFL的核心公式长这样:VFL(p, q) = -q * (q * log(p) + (1 - q) * log(1 - p)) # 正样本 -alpha * p^gamma * log(1 - p) # 负样本注意这里的q是目标IoU值(0~1),不是二分类标签。正样本的权重由q动态调节:当q接近1(完美框)时,loss主要惩罚分类错误;当q接近0(烂框)时,loss更关