知方号

知方号

yolov5的loss和正样本采样代码解析

yolov5的loss和正样本采样代码解析

前言

YoloV5中loss由正样本和负样本两部分loss组成,负样本对应着图像的背景,如果负样本远多于正样本,则负样本会淹没正样本的损失,从而降低网络收敛的效率与检测精度。这就是目标检测中常见的正负样本不均衡问题,解决方案之一是增加正样本数。

Yolo anchor_based 系列使用的loss公式如下:

公式中:

 

正样本采样

Yolov5算法使用如下3种方式增加正样本个数:

(1) 跨anchor预测

假设一个GT框落在了某个预测分支的某个网格内,该网格具有3种不同大小anchor,若GT可以和这3种anchor中的多种anchor匹配,则这些匹配的anchor都可以来预测该GT框,即一个GT框可以使用多种anchor来预测。

具体方法: 不同于IOU匹配,yolov5采用基于宽高比例的匹配策略,GT的宽高与anchors的宽高对应相除得到ratio1,anchors的宽高与GT的宽高对应相除得到ratio2,取ratio1和ratio2的最大值作为最后的宽高比,该宽高比和设定阈值(默认为4)比较,小于设定阈值的anchor则为匹配到的anchor。

计算例子:

anchor_boxes=torch.tensor([[1.25000, 1.62500],[2.00000, 3.75000],[4.12500, 2.87500]])gt_box=torch.tensor([5,4]) #注意此处是具体值,不是5行4列ratio1=gt_box/anchor_boxesratio2=anchor_boxes/gt_boxratio=torch.max(ratio1, ratio2).max(1)[0]print(ratio)anchor_t=4res=ratio

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。