引言
YOLOv1当中没有采用Anchor,YOLOv1把整张图划分成7*7网格,每个Grid预测出两个Bounding Box,这两个Bounding Box谁与Ground Truth的IoU大,谁负责拟合那个Ground Truth
上图是YOLOv1中的Bounding Box,每个Grid中的两个BB野蛮生长,意思就是长宽随意。但是在YOLOv2当中,给这BB哥俩先验的初始框,即规定两个BB的长宽比,如下图所示,一个BB是瘦高(专门用于检测高瘦物体,如行人),一个BB是矮胖(专门用于检测矮胖物体,如汽车),并且规定只需在原有位置上进行微调,预测偏移量即可,无需大的变动。
仍然是谁和GT的IoU大,谁负责预测GT。这样矮胖BB天生适合预测矮胖物体,高瘦BB天生适合高瘦物体上。 各自都有较明确分工,模型训练会更加稳定。每个预测框只需要预测出相较于Anchor的偏移量即可。预测偏移量比从头套简单多了。
YOLOv2把每张图像划分成13*13个Grid Cell,每个Grid Cell预测5个Anchor,也就是事先制定了5种长宽大小尺度不同的先验框。
人工标注框的中心点落在哪个Grid Cell里面,就由哪个Grid Cell产生的5个Anchor中与Ground Truth IoU最大的Anchor来负责预测,预测框只需要预测出相较于自己Anchor的偏移量即可。
上面两个图所示,YOLOv1当中,每个Grid Cell产生一个30维的向量,2个BB分别包含5个参数,此外还包括20个条件类别的概率,因此总共又30个数(30维的向量)。在YOLOv2,模型复杂一些,原来类别是归Grid Cell管,现在归Anchor管,每张图片被划分为13*13的Grid Cell,每个GD产生5个Anchor,每个Anchor除了定位参数、置信度,还包括20个类别的条件概率。所以在YOLOv2当中,一个Grid产生一个125维的向量。3维空间里就是一个13*13*125的张量。