YOLO-v1第二节:正样本制作方法

由于YOLOv1是预测物体的中心点,并给出矩形框,包含中心点的网格,我们就认为这里是有物体的,即这一网格的objectness的概率为1:Pr(objectness) = 1,如下图所示 :包含中心点的网格被视为训练过程中的正样本,其余为负样本黄颜色代表这个网格有物体,Pr(objectness) = 1也就意味着,物体的中心点落在了这个网格中,如图中的红点所示,也就是一个正样本。

在上图中我们很容易发现这个中心点相对于它所在的网格的四边是有偏距,这其实就是由于降采样带来的量化误差,因此,我们只要获得了这个量化误差,就能获得中心点的准确坐标了,下面我们学习YOLOv1中是如何计算这个量化误差的。

首先对于给定的真实的bbox坐标(Xmin、Xmax、Ymin、Ymax),我们先算得它的宽高及中心坐标
宽w、高h
中心点坐标

获得了中心点坐标后,我们就可以直接用下式就能确定出它落在了网格的哪个位置:
stride是降采样的倍数,[]表示向下取样
到这里,量化误差就出来了
在这里插入图片描述
这里的cx、cy便是YOLOv1关于中心点坐标所要学习的目标,显然他们的取值区间在 (0,1)。
在这里插入图片描述
总结为下图
在这里插入图片描述
在这里插入图片描述
于是确定了bbox的未知参数,接下来是框的置信度:

具体来说,在训练过程中,对于正样本处(gridx,gridy)处

第一步:YOLOv1网络输出B个bbox;

第二步:计算这B个bbox与此处的真实bbox之间的交并比(Intersection over Union,IoU),得到B个IoU值;
交并比

第三步:选择其中最大的IoU值来作为置信度 C 的学习目标;

第四步:同时,对于bbox的位置信息参数(即中心点和框的宽高),也只让这个IoU最大的那个bbox去反向传播,其他B-1个bbox就忽略了。可见,B个bbox之间是有“竞争”关系的。但这种竞争关系不是显式的,因为彼此之间没有进行建模约束。

举例来说,假设当前预测的B个矩形框和真实的矩形框的最大Iou = 0.28,对应的预测bbox为 Bi,那么网络就会将这个 Bi 作为置信度[公式]的学习目标,同时只有Bi 会去计算regression部分的loss,然后反向传播,其他的bbox就都被忽略了。

可见,倘若bbox都学得不好,那么算出的IoU也就都不高,网络预测的置信度学出来的也就偏低。但换个角度来看,这个置信度直接就能衡量定位的好坏。

总结一下,网络的最后输出中,每个正样本 (gridx,gridy)位置处的每个bbox都包含如下参数:
在这里插入图片描述
最后再加上类别:
在这里插入图片描述
这些就是网络输出的内容,有了这些输出内容,我们要计算出相应矩形的位置在这里插入图片描述
明确了学习目标见,制作训练标签也就清楚了。在制作标签时,遵循如下步骤:

一、首先计算,中心点落入的网格位置参数:gridx、gridy

二、对于网格处(gridx,gridy),我们认为此处有物体,因此Pr(objectness) = 1,此处就是正样本,计算出矩形框的参数信息:cx、cy、w、h

三、确定类别标签

Guess you like

Origin blog.csdn.net/weixin_44894550/article/details/120767361