YOLOv10s训练代码解析8:Loss计算

本专栏会手把手带你从源码了解YOLOv10(后续会陆续介绍YOLOv8、RTDETR等模型),尽可能地完整介绍整个算法,这个专栏会持续创作与更新,大家如果想要本文PDF和思维导图,后台私信我即可(创作不易,不喜勿喷),大家如果发现任何错误和需要修改的地方都可以私信我,我会统一修改。

上一章在ultralytics/utils/loss.py中对GT进行处理,得到的target_bboxes维度为[16, 8400, 4]:每个图像中的锚点对应GT的GT边框;target_scores维度为[16, 8400, 80]:每个图像中的锚点对应GT的GT类别得分(归一化指标得分);fg_mask维度为[16, 8400]:每个图像匹配锚点的情况

接着就是计算分类损失,在ultralytics/utils/loss.py的第234行,分类损失用的是nn.BCEWithLogitsLoss

接着再计算目标边框损失(ultralytics/utils/loss.py的第239行),包括CIoU Loss和dfl Loss

调用ultralytics/utils/loss.py中的BboxLoss类的forward方法计算CIoU loss和dfl loss

第73行计算预测框对应GT类别的预测置信分;

第75行计算预测框与GT的CIoU

第80行计算GT的dfl分布

第82行计算dfl Loss

在ultralytics/utils/metrics.py的bbox_iou函数计算CIoU

在ultralytics/utils/loss.py的_df_loss函数中计算dfl Loss

最后返回的第一个值为总损失,第二个包含box、cls以及dfl loss

之后再one2many算好Loss之后,继续计算one2one的Loss

等Loss计算完成之后,继续在ultralytics/engine/trainer.py中执行Backward、打印指标、优化器参数更新、画图等

最后在ultralytics/engine/trainer.py中继续训练epoch剩下的batch

这部分关于的整体流程如下图所示,需要原图和思维导图的朋友关注我私信获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值