GFocal_loss简单总结
GFocal_loss简单总结
文章的主题很突出,针对一阶段目标检测领域的两个现存的表示问题进行分析,并提出合理的解决方案
问题1:
用法不一致,训练时分类与回归的head各自分开训练各自的,但是在推理的时候因为NMS的score,又把分类分数和框质量的分数相乘,或许会有一定的gap
对象不一致,训练分类时采用focal loss使用了负样本+正样本,但框相关的仅仅使用正样本来训练,这样会产生一种情况,即预测的框中存在负样本,这种类型在训练时未参与框质量的评估,但分数可能较高,甚至超过一些正样本,这样对结果会有影响
问题2:
框分布的表示问题,通常采用的dirac delta分布比较严格,后续的高斯分布也比较模糊,无法灵活的建模复杂场景下(例如下图大象的遮挡)真实框的分布。
问题1的解决方案:
联合分类分数和框质量分数,采用QFL(魔改版的Focal loss)。
式中σ为预测结果,y为标签,β为超参
作者原话:从物理上来讲,我们依然还是保留分类的向量,但是对应类别位置的置信度的物理含义不再是分类的score,而是改为质量预测的score
问题2的解决方案:
使用通用分布表示框的分布,并使用积分形式表示,可以内嵌到(smooth l1 loss、iou loss等中);
由dirac delta分布转为通用分布的形式:
原dirac delta:
现general : 离散化后
常见分布的各种指标对比如下表格:
注意的地方是推理目标,原先是x,现在是P(x)x的积分形式,具体实现时并把连续回归形式变为离散回归形式(使用softmax实现)
因同一目标的通用分布有很多中表示形式,如图,
为了尽快的拟合到真实分布,使用DFL(希望网络快速聚焦到邻近区域的分布中)
积分区域为y0到yn,y为标签点,yi以及yi+1为靠近真是位置的左右邻近,Si为softmax后的结果。
后续
把两个结合起来形成GFL:
最终检测任务的损失函数如下:
由QFL、DFL以及bbox的giou loss,加上权重组成。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步