yolo理解

yolo训练

yolo损失函数

首先解释损失函数中1_{ij}^{obj}的意义:

1^{obj}是一个矩阵,只有0和1两个值,在这个矩阵中ij分别代表

所以每个cell会预测j个bbox,其中与truth标签框IOU最大的bbox会被标注成1

另一方面,公式(4)中的1_{ij}^{noobj}1_{ij}^{obj}的含义相反,两者理论上是互斥的

公式(5)中的1_{i}^{obj}代表第i个cell中有没有物体中心点,有物体中心点则为1,没有则为0(没有物体中心点的cell这一项为0,不要计算类别损失)

注意:

总的来说,就是公式(1),(2),(3)中都包含1_{ij}^{obj},所以这三项只有和真实标签IOU最大的那个bbox才计算损失,其他bbox不计算这三项损失(或者是真实标签中心点所在的cell中IOU最大的bbox,不是全部cell中IOU最大的bbox,这个地方不确定,还要看一下源代码才能清楚)

公式(4)包含1_{ij}^{noobj},代表对其他不存在对象的bbox计算损失

公式(5)包含1_{i}^{obj},代表不包含物体中心点的cell不计算类别损失

生成训练的标签:

xml文件不能直接用,要把真实框从xml文件中提取出来,把真实框变成和网络输出大小一样的标签。生成样本标签和网络输出的形状大小是一样的7*7*30或(h*w*c),其中30维通道的生成方式如下:

1.20维的类别概率

根据标签框得到框中心坐标,中心坐标在哪个grid(即cell)中,那么,那个grid对应的类别概率的维度填写1,其他维度填写0(代码上,可以初始化都是0,然后进行判断,把中心所在的grid的类别变成1)

注意:一个grid只预测一个目标,所以类别概率一定只有1维是1,其他维度都是0,定义为P\left (C _{i} \mid object\right ),代表在cell存在物体(物体中心点)的情况下,属于第i类的概率,作者是这么人为设定的,没有什么道理可讲。

2.标签的2个bbox生成

bbox是在训练过程中动态生成的,根据网络输出的bbox和实际的bbox之间的IOU来确定将实际的bbox填写到哪个bbox中

具体来说,在网络输出的bbox与真实标签的IOU最大的位置上填入真实标签的x,y,h,w,置信度confidence=1,confidence=P\left ( object \right )*IOU_{pred}^{truth},作者人为定义的,只能说作者牛逼

在较小的IOU的bbox2位置上填写网络输出的bbox2的x,y,h,w,置信度confidence=0

根据上述过程生成的置信度confidence,在损失函数中表现为公式(3)的\widehat{C_{i}}=1,公式(4)中\widehat{C_{i}}=0

3.没有物体的grid

对于没有包含真实目标框中心的grid,其所有bbox的confidence=0,真实标签bbox坐标为网络输出的bbox坐标。没有物体的grid应该只在公式(4)中计算损失,因为只有公式(4)中的1_{ij}^{noobj}不为0(在第i个cell的第j个bbox中没有物体时为1)。而在其他几个损失函数中,因为1_{ij}^{obj}1_{i}^{obj}在没有物体的grid中均为0,所以不计算损失。

 

 

 

yolo预测过程

yolo预测过程是通过计算得分score和使用NMS非极大值抑制来选择使用哪个bbox,步骤如下:

1.先计算得分score,score=P\left ( C_{i} \mid object\right )*confidenceP\left ( C_{i}\mid object \right )就是网络预测的第i个类别概率,confdence就是置信度,每个cell有2个bbox,每个bbox可以预测20个类别,所以一共有7*7*2*20=1960种得分情况,每个bbox有20种得分情况。又因为有98个bbox,每种类别有98中得分情况

2.NMS非极大值抑制

(1)先设置一个阈值,将小于阈值的score=0

(2)遍历每一个类别,找到这个类别得分最高的bbox添加到输出列表,然后计算其他bbox和这个bbox的IOU,将IOU大于阈值的score=0,然后再在剩下的bbox中选择得分最高的bbox添加到输出列表,重复删除IOU高的bbox,直到剩下的bbox的score全部为0,然后遍历下一个类别

(3)得到的输出列表里的所有bbox为输出

yolov2中的anchor机制

anchor是预先设定的先验框,分别计算网络输出的bbox和真实框相对于anchor的偏差,然后对比这两个偏差计算损失。详情请看:【论文理解】理解yolov3的anchor、置信度和类别概率_DLUT_yan的博客-CSDN博客_yolo置信度

1.这里的b_{x}b_{y}b_{w}b_{h}是预测框的x坐标,y坐标,宽w和高h相对于网络预测图的大小的,b_{x}/13*W,b_{y}/13*H,b_{h}/13*H将这四个值除以网络输出大小,在乘以原图的高宽,才能得到预测的坐标

2.图中的t_{x}t_{y}t_{w}t_{h}是网络一个cell的一个bbox输出,t_{x}经过归一化sigmoid函数得到\sigma \left ( t_{x} \right ),代表预测bbox的x坐标相对于这个cell左上角坐标c_{x}的偏移量,同理t_{y},这样就可以保证预测框bbox的中心坐标落在这个cell内。

3.计算误差的时候是将真实框进行计算得到真实框相对于cell和anchor的偏差t_{x}^{g}t_{y}^{g}t_{w}^{g}t_{h}^{g},然后根据\sigma \left ( t_{x} \right )\sigma \left ( t_{y} \right )t_{w}t_{h}t_{x}^{g}t_{y}^{g}t_{w}^{g}t_{h}^{g}计算误差

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值