[yolov5_face]源码阅读

Yolov5_face源码阅读

Dadaload

作用:一次提供一个Batch的imgs,targets。
targets [N, 16],N表示此Batch中包含的所有人脸数目,维度16构成如下图,黄色表示此人脸所在图像在batch中的id(索引),绿色表示类别id(只有人脸这一类,所以都是0),红色表示人脸框box所在的位置,构成xywh(左上角坐标,框的宽高,值范围0~1,相对于图像大小),紫色表示人脸的5个landmark关键点坐标x1,y1,x2,y2,x3,y3,x4,y4,x5,y5(值范围0~1,相对于图像大小)。
在这里插入图片描述

Model

作用:1. 输入一个batch的imgs,输出pred。
      2. 将anchor由相对于原图的大小转为相对于每层输出特征的大小。
假设输入imgs的h, w均为800,那么pred的构成为:
pred[0] [B, 3, 100, 100, 16]
pred[1] [B, 3, 50, 50, 16]
pred[2] [B, 3, 25, 25, 16]
其中维度16的构成如下图,蓝色表示有目标的置信度,绿色表示是人脸的置信度,其余和targets同样颜色的含义是一样的。可以看出,pred维度16的顺序和targets不一样,其实pred维度16中的顺序是由定义loss的时候决定的,完全可以更改这个顺序。
在这里插入图片描述

Loss

作用:输入targets([N, 16]),pred (3*[B,3,H,W,16]),计算分类损失classes loss,obj损失objectness loss,以及定位损失location loss。

  1. 匹配正样本
    由于输出特征层一个位置有3个anchor,先repeat targets 3次,再加上anchor id信息,新的targets维度为[3, N, 17],如下图所示。
    在这里插入图片描述
    然后将根据4.4匹配正样本介绍,判断targets中box的宽ww,高与anchor的宽高比是否在0.25~4之间,图中的1表示匹配成功,0表示未匹配成功。
    在这里插入图片描述
    取出targets中匹配成功的样本(假设总共有M个成功匹配的样本),匹配成功的targets的维度为[M, 17]

  2. 扩充正样本
    yolov5之前都是仅将gt box中心落入的grid作为正样本,为了扩充正样本的数量,yolov5根据gt box中心坐标位于grid的不同象限进行不同的扩充,具体可参考4.4匹配正样本。代码的做法是,首先判断targets中box的左上角坐标位于的象限(比如红框中的1,1,0,0则表示该box的左上角位于grid的第2象限,因此位于该grid上,左的两个grid为可扩充的正样本),得到可扩展的mask(维度[5,M])。
    在这里插入图片描述
    然后将匹配成功的targets复制5次,并将可扩展mask作用在它上面,即可得到扩展后的targets,其维度为[K,17]K表示扩展后的正样本数目。
    在这里插入图片描述

  3. 计算损失函数
    box回归损失
    将偏移矩阵[[0,0], [0.5, 0], [0, 0.5], [-0.5, 0], [0, -0.5]]复制M份,并将可扩展mask作用在它上面,即可得到扩展正样本x,y的偏移量。
    在这里插入图片描述
    将偏移量(深绿色)作用到扩展后的targets的维度17中的x,y上,即做差,并向下取整,可得到扩展后的grid的左上角坐标(深紫色)。
    在这里插入图片描述
    再用扩展后的targets中的x,y 与 扩展后的grid左上角坐标做差,得出targets中的x,y与扩展后的grid左上角坐标的偏移量(蓝色)。虽然深绿色和蓝色表示的向量都叫偏移量,但它们不是一回事,深绿色中的值只可能是0,-0.5,0.5,但蓝色中的值范围为-0.5~1.5,这个范围也是yolov5为了消除grid敏感度做的调整(yolo系列之前回归范围一般是0~1)。
    在这里插入图片描述
    根据扩展的grid的左上角坐标(深紫色表示的向量),扩展后的targets中的image id, anchor id,对pred进行索引,得到K*16的向量。下图表示当image_id=0, anchor_id=1, x=50,y=50时,对pred[0](输出第一层)进行索引,得到一个1*16的向量(黄色立方体).
    在这里插入图片描述
    用索引后的pred的x,y回归参数(浅蓝色),以及wh回归参数(浅红色)经过下图中的公式处理得到pred_box,然后对pred_box和gt_box做CIOU计算定位损失。gt_box中蓝色部分表示gt_box x,y 相对于grid左上角坐标的偏移量,淡紫色表示扩展后的targets中的w,h。
    在这里插入图片描述
    obj置信度损失
    将pred_box和gt_box计算的iou作为obj置信度(将其还原到pred维度上,位于下图中绿色长方体上的黄色立方体,绿色长方体其余位置值为0),计算其与索引后的pred的obj置信度参数(位于下图中红色长方体)的BCE。
    在这里插入图片描述
    分类损失
    由于只有face这一类,obj置信度损失可以表示分类损失了。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值