Yolov5 损失函数

正负样本匹配策略

  • 本文的正负样本指的都是预测框而不是groundtruth框。正负样本是根据groundtruth框和anchor的匹配情况来确定的。

  • yolov3/4采用的都是基于IOU的匹配策略,而 Yolov5采用的是基于宽高比例的匹配策略。具体而言,对每一个groundtruth框,分别计算它与9种anchor的宽与宽的比值、高与高的比值,在宽比值、高比值这2个比值中,取最极端的一个比值,作为groundtruth框和anchor的比值,具体实现的伪代码为:max( anchor / groundtruth, groundtruth / anchor )。
    在这里插入图片描述

  • 得到groundtruth框和anchor的比值后,若这个比值小于设定的比值阈值(anchor_t=4),那么这些anchor(可能有多个)就负责预测groundtruth框,这些anchor的预测框就被称为正样本,所有其它的预测框都是负样本,yolov5中没有忽略样本。

正样本个数的增加策略

  • Yolov5共有3个预测分支(三个检测头),共有9种不同大小的anchor,每个预测分支上有3种不同大小的anchor。
  • Yolov5算法通过以下3种方法大幅增加正样本个数:
  • (1) 跨预测分支预测:假设一个groundtruth框可以和2个甚至3个预测分支上的anchor匹配,则这2个或3个预测分支都可以预测该groundtruth框,即一个groundtruth框可以由多个预测分支来预测。
  • (2) 跨网格预测:假设一个groundtruth框落在了某个预测分支的某个网格内,则该网格有左、上、右、下4个邻域网格,根据groundtruth框的中心位置,将最近的2个邻域网格也作为预测网格,也即一个groundtruth框可以由3个网格来预测;
  • (3) 跨anchor预测:假设一个groundtruth框落在了某个预测分支的某个网格内,该网格具有3种不同大小anchor,若groundtruth可以和这3种anchor中的多种anchor匹配,则这些匹配的anchor都可以来预测该groundtruth框,即一个groundtruth框可以使用多种anchor来预测。

损失函数

  • 分为坐标损失(loss_ciou)、目标置信度损失(loss_obj)和分类损失(loss_cls)三部分。其中目标置信度损失和分类损失采用BCEWithLogitsLoss(带log的二值交叉熵损失),坐标损失采用CIoU损失。虽然代码里面损失的变量名字写的是giou,但是通过看代码可以发现,其损失的代码实现中写了GIOU/DIOU/CIOU三种方法,默认情况下使用的是CIOU损失。
  • 3个预测分支上的分类损失、坐标损失直接相加,得到总的分类损失和坐标损失,而3个预测分支上的目标置信度损失需要进行加权再相加,得到总的目标置信度损失,权中分别为[4.0, 1.0, 0.4],其中4.0是用在大特征图(预测小目标)上,所以,这里的加权,我认为是旨在提高小目标的检测精度。
  • 最后将分类损失、坐标损失、置信度损失直接相加,得到一个总损失(每张图像的平均总损失),再乘以batch的大小,得到用于更新梯度的损失。

参考:https://blog.csdn.net/chocv/article/details/117398749

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值