参考笔记:
yolov5源码解析(10)--损失计算与anchor_yolov5损失计算-优快云博客
前置知识:
目录
1.YOLOv5损失函数
YOLOv5的损失函数由三个部分组成:
- Location loss,定位损失,采用的是CIoU loss,只计算正样本的定位损失。
- Objectness loss,置信度损失,采用的依然是BCE loss,正样本的置信度标签为正样本anchor对应的网络预测的bbox与GT框的CIoU。负样本的置信度标签为0
- Classes loss,分类损失,采用的是BCE loss,只计算正样本的分类损失
为损失项权重系数
另外,指针对三个预测特征层(下采样8倍、16倍、32倍)上的置信度损失采用不同的权重。在源码中,针对预测小目标的预测特征层(下采样8倍)采用的权重是4.0,针对预测中等目标的预测特征层(下采样16倍)采用的权重是1.0,针对预测大目标的预测特征层(下采样32倍)采用的权重是0.4
具体设计:
损失函数(注:上图没把针对每个特征层的权重画出来)
K x K:网格数量
M:每个网格的anchor数量
:正样本为1,负样本为0
:正样本为0,负样本为1
正样本定位损失
:小框损失惩罚项,简单来说就是让小框的损失系数变大。主要原因是如果该没有惩罚项,大框的损失会很轻易大于小框,因此当框越大,这个惩罚项越小;框越小,这个惩罚项越大。该惩罚项可以使得大框与小框的损失尽量保持平衡
:正样本anchor对应的预测框bbox与anchor匹配到的GT框的