【YOLOv5】损失函数源码解析

参考笔记:

yolov5源码解析(10)--损失计算与anchor_yolov5损失计算-优快云博客

前置知识:

【YOLO系列】YOLOv5分析与总结-优快云博客

 【YOLOv5】梳理正样本匹配流程和源码讲解


目录

1.YOLOv5损失函数

2.损失函数源码

3.代码讲解

3.1 代码入口

3.2 准备工作

3.3 分类损失

3.4 置信度损失

3.5 定位损失


1.YOLOv5损失函数

YOLOv5的损失函数由三个部分组成:

  • Location loss,定位损失,采用的是CIoU loss,只计算正样本的定位损失。
  • Objectness loss,置信度损失,采用的依然是BCE loss,正样本的置信度标签为正样本anchor对应的网络预测的bboxGT框CIoU。负样本的置信度标签为0
  • Classes loss,分类损失,采用的是BCE loss,只计算正样本的分类损失

\text { Loss }=\lambda_{1} \mathrm{~L}_{\mathrm{loc}}+\lambda_{2} \mathrm{~L}_{\mathrm{obj}}+\lambda_{3} \mathrm{~L}_{\mathrm{cls}}

 \lambda_{1} ,\lambda_{2},\lambda_{3}为损失项权重系数 

另外,指针对三个预测特征层(下采样8倍、16倍、32倍)上的置信度损失采用不同的权重。在源码中,针对预测小目标的预测特征层(下采样8倍)采用的权重是4.0,针对预测中等目标的预测特征层(下采样16倍)采用的权重是1.0,针对预测大目标的预测特征层(下采样32倍)采用的权重是0.4

\mathrm{L_{obj}}=4.0\cdot\mathrm{L_{obj}^{small}}+1.0\cdot\mathrm{L_{obj}^{medium}}+0.4\cdot\mathrm{L_{obj}^{large}}

具体设计:

损失函数(注:上图没把针对每个特征层的权重画出来) 

K x K:网格数量

M:每个网格的anchor数量

I_{ij}^{obj}:正样本为1,负样本为0

I_{ij}^{noobj}:正样本为0,负样本为1

正样本定位损失

2-w_i\times h_i小框损失惩罚项,简单来说就是让小框的损失系数变大。主要原因是如果该没有惩罚项,大框的损失会很轻易大于小框,因此当框越大,这个惩罚项越小;框越小,这个惩罚项越大。该惩罚项可以使得大框与小框的损失尽量保持平衡

CIoU:正样本anchor对应的预测框bboxanchor匹配到的GT框

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值