目录
代码下载链接:https://download.youkuaiyun.com/download/weixin_40723264/88011324
一、概述
(1)
通过YOLOv8-训练流程-正负样本分配的介绍,我们可以知道,经过预处理与筛选的过程得到最终的训练数据:
a. 网络输出值:pred_scores[bx8400xcls_num]、pred_bboxes[bx8400x4]
b. 训练标签值:
target_scores[bx8400xcls_num](one-hot类型),在计算损失时与预测结果pred_scores[bx8400xcls_num],计算交叉熵损失,该损失是对每个类别计算BCE Loss,因为类别预测采用的sigmoid分类器。
target_bboxes[bx8400x4](target_bboxes需要缩放到特征图尺度,即除以相应的stride),在计算损失时,分别与预测的pred_bboxes计算Ciou Loss, 同时与pred_regs(预测的anchors中心点到各边的距离)计算回归DFL Loss。
c. 训练mask值:fg_mask [bx8400],对8400个anchor进行正负样本标记,计算损失过程中通过fg_mask筛选正负样本。
二、损失函数
(1) 类别分类损失
在yolov8中,类别损失最终采用的是交叉熵损失,该方法是我们非常熟知的,不再赘述。
代码如下:

YOLOv8的训练中,损失函数包括类别分类损失(采用BCEWithLogitsLoss)和边框回归损失(结合DFLloss和CiouLoss)。类别损失基于交叉熵,而边框回归通过DFL的离散化概率分布和CiouLoss实现更精确的定位。DFLloss利用softmax将预测框转化为16类,通过交叉熵优化。CiouLoss进一步细化边框位置。
最低0.47元/天 解锁文章
3416





