YOLOv1的原理:
1.划分成S*S个cell,物体落在哪个cell,哪个cell就负责预测这个物体:
解释:
训练阶段:在训练阶段,如果物体中心落在这个cell,那么就给这个cell打上这个物体的label(包括xywh和类别)。通过这种方式来设置训练的label的。换言之,我们在训练阶段,就教会哪个cell要预测图像中的哪个物体。
测试阶段:因为你在训练阶段已经教会了cell去预测中心落在该cell中的物体,那么cell自然也会这么做。
2.每个网格预测多个bounding box,预测内容包括bounding box和confidence。
bounding box预测:
左上角的坐标相对偏移量x、y,宽高w、h进行归一化到(0,1)方便损失函数收敛
confidence预测:
confidence指的是该cell有无目标的置信度A
和预测box的准确度B
的乘积。confidence=A*B=
训练阶段:给每个框的confidence打label。如果物体中心不在cell内,A=0,那么就没有必要算B了,confidence的label=0。如果在,A=1,此时confidence的label=1*B,其中B是不断训练计算得到的,因为每次预测得到的bounding box不一样,IOU也就不一样
测试阶段:每个cell输出一个confidence,隐含地表示了IOU。不需要分别计算A和B,也没法计算。因为训练的时候就是A*B,所以测试时候的输出也是这个值。
3.每个网格同时预