157、PolyLoss 在 YOLOv11 中的实现:用多项式系数统一多种损失函数的工程方案
157、PolyLoss 在 YOLOv11 中的实现:用多项式系数统一多种损失函数的工程方案从一次诡异的mAP震荡说起去年秋天我在调试一个工业质检项目,YOLOv11s在自建数据集上训了200个epoch,mAP@0.5:0.95从0.72爬到0.78之后开始剧烈震荡,每5个epoch上下跳3个点。换Focal Loss、换CIoU、调学习率,该试的都试了,震荡依旧。后来翻PolyLoss论文时突然意识到:我一直在"选"损失函数,但从来没想过能不能"组合"它们。PolyLoss的核心思想其实很暴力——把交叉熵、Focal Loss这些看似不同的损失函数,统一写成多项式形式,然后通过调整多项式系数来自由组合它们的特性。这个思路在YOLOv11的分类分支上尤其好用。今天我们就手撕这个实现,代码全部基于YOLOv11官方源码(ultralytics v8.3+),不依赖任何第三方魔改库。PolyLoss的数学直觉:别被公式吓到先看最朴素的交叉熵损失:CE = -log(pt)其中pt是模型对正确类别的预测概率。Focal Loss长这样:FL = -(1-pt)^γ * log(pt)PolyLoss的作者发现,如果把-log(pt)做泰勒展开:-log(pt) = (1-pt) + (1-pt)^2/2 + (1-pt)^3