目录
引言
本人研0小白,最近在苦学YOLOV8,为了加深记忆,在学习过程中做了学习笔记,这篇主要将YOLOV8的损失函数,但目前只学了一点,后面如有发展会继续更新。
【2023-8.12第一次更新,yolov8分类损失函数】
YOLOv8的损失函数由多个部分组成,包括分类损失(VFL Loss)、回归损失为CIOU Loss+DFL的形式。
一、分类损失
分类损失函数采用VFL Loss(改进交叉熵损失),先了解一下交叉熵损失。
1.交叉熵损失
交叉熵损失(Cross-Entropy Loss),也称为对数损失(Logarithmic Loss),是一种在分类问题中常用的损失函数。它衡量了模型预测的概率分布与实际标签之间的差异,用于衡量模型预测的准确程度。
在分类问题中,每个样本都有一个真实标签,通常表示为一个one-hot Encoding,这个网址是讲述为啥标签都用One-hot Enconding:深入浅出 one-hot - 知乎 (zhihu.com)
一个位置是1,表示真实类别,其他位置都是0。交叉熵损失通过计算模型预测的概率分布与真实标签的概率分布的交叉熵来衡量模型的性能。
(1) 二分类
(2)多分类
我们利用以上的表达式来举一个例子,下面分别用one-hot编码对应了三个类别。
上表我们竖着看,黄色的代表是猫的编码 [1, 0, 0],浅绿色代表的是狗的编码 [0, 1, 0],粉色代表的人的代码[0,0,1]
解释如下:如果一个标签是猫,那么猫对应的位置就是1,狗和人对应的位置就是0,得到一个编码[1, 0, 0]。这样得到的编码都是独立的。
然后我们假设有两个模型用于此分类训练,然后分布得到预测分(softmax)和对应的编码。
模型1:
类别 | 预测(softmanx) | 真实(编码) | 是否正确 | ||||
猫 | 0.3 | 0.3 | 0.4 | 1 | 0 | 0 | 错误 |
狗 | 0.3 | 0.4 | 0.3 | 0 | 1 | 0 | 正确 |
人 | 0.1 | 0.2 | 0.7 | 0 | 0 | 1 | 正确 |
模型2:
类别 | 预测(softmax) | 真实(编码) | 是否正确 | ||||
猫 | 0.1 | 0.2 | 0.7 | 1 | 0 | 0 | 错误 |
狗 | 0.1 | 0.7 | 0.2 | 0 | 1 | 0 | 正确 |
人 | 0.3 | 0.4 | 0.3 | 0 | 0 | 1 | 正确 |
然后我们根据上面的公式计算LOSS值:
模型1:
Sample 1 loss = -(1×log0.3+0×log0.3+0×log0.4)=0.52
Sample 2 loss = -(0×log0.3+1×log0.4+0×log0.3)=0.40
Sample 3 loss = -(0×log0.1+0×log0.2+1×log0.7)=0.15
对所有样本求平均Loss:
模型2:
Sample 1 loss = -(1×log0.1+0×log0.2+0×log0.7)=1.00
Sample 2 loss = -(0×log0.1+1×log0.7+0×log0.2)=0.15
Sample 3 loss = -(0×log0.3+0×log0.4+1×log0.3)=0.52
上述计算可以使用python的sklearn库
from sklearn.metrics import log_loss
y_true = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
y_pred_1 = [[0.3, 0.3, 0.4], [0.3, 0.4, 0.3], [0.1, 0.2, 0.7]]
y_pred_2 = [[0.1, 0.2, 0.7], [0.1, 0.7, 0.2], [0.3, 0.4, 0.3]]
print(log_loss(y_true, y_pred_1))
print(log_loss(y_true, y_pred_2))
____________
0.36
0.56
可以发现,交叉熵损失函数可以捕捉到模型1和模型2预测效果的差异。
2.VFL LOSS函数
YOLOV8的VFL LOSS函数公式如下:
q为bbox(预测框)和gt(真实框)的IoU(交并比),IoU即预测框和真实框的交集除以两个框的并集,然后p为得分,即概率,这个公式的改进之处是把基本公式的除以N改成乘以q,在此还不知道这个含义,后面了解会在此补充;然后两个框相交,即q>0,是正样本,两个框无相交,则令q=0,为负样本。
这里详细讲解一下IoU《YOLOv5全面解析教程》三,IoU深入解析 - 知乎 (zhihu.com),。
Yolov8的IOU损失函数与YOLOV5的一致,即下面公式:
在这个公式中,IoU是交并比,b和bgt表示两个矩形框的中心点,ρ表示两个矩形框之间的欧式距离,c表示两个矩形框闭合区域的对角线距离,v用于测量两个矩形框相对比例的一致性,α是权重系数,具体详细看极市开发者平台-计算机视觉算法开发落地平台-极市科技。
以上就是今天学习的内容了,每天学的会在里面继续补充,有什么意见大家评论区提。