Grid Cells机制

虽然YOLO中设置了两个Predictor(这里记为Predictor A和Predictor B),但是YOLO并没有让一个Grid Cell去预测多个Object,它的机制是通过计算Grid Cell与不同Object的IOU,让这个Grid Cell去负责IOU最大的哪个Object,也就是说两个Predictor都去预测这个Object。

就以下图为例(请暂时忽略其中的两个紫色框,他们并非“车”与“人”的Ground Truth Box),“车”与“人”的中心都位于8号Grid Cell(图中的黑点,本例中二者重合)。

fasterrcnn后处理_Anchor Box


这时候需要分别计算8号Grid Cell与“车”Ground Truth Box的IOU和8号Grid Cell与“人”Ground Truth Box的IOU,如果8号Grid Cell与“车”Ground Truth Box的IOU > 8号Grid Cell与“人”Ground Truth Box的IOU,那么8号Grid Cell就负责预测“车”这个Object,Predictor A和Predictor B都不会再去管“人”这个Object,而是专注于将Predict Box回归到“车”的Ground Truth Box上。

Predict Box机制

在YOLOv1的文章中,作者提到了YOLO的一个缺陷,正是其无法对中心位于同一个Grid Cell上的多个Object进行预测。究其原因,正是因为Grid Cell机制舍弃了对多个Object的中心位于同一个Grid Cell上这种情况的考虑。因此,有些人提出了这样的想法,姑且称之为Predict Box机制:不计算Grid Cell与不同Object的IOU,而是分别计算两个Predict Box与两个Ground Truth Box的IOU,假设有结果:Predictor A的Predict Box与“车”Ground Truth Box的IOU > Predictor B的Predict Box与“车”Ground Truth Box的IOU;Predictor B的Predict Box与“人”Ground Truth Box的IOU > Predictor A的Predict Box与“人”Ground Truth Box的IOU,那么就由Predictor A来负责预测“车”,而由Predictor B来负责预测“人”。不能排除对不同Object的IOU,Predictor A都要大于Predictor B的可能性,这时候无法做出完美的决策;如果假设Predictor A的Predict Box与“车”Ground Truth Box的IOU > Predictor A的Predict Box与“人”Ground Truth Box的IOU,那么就使Predictor A预测“车”,Predictor B预测“人”。
乍看之下可能感觉Predict Box机制还不错,可以解决原有问题。可是仔细分析一下,就能发现问题了。
首先,由于Predict Box都是随机初始化的,其与Grid Cell并没有相关性,何谈用其来指定Predictor到底应该用于回归中心落于这个Grid Cell上的哪个Object呢?举个例子,Predictor A的初始化Predict Box可能是在1号Grid Cell,Predictor B的初始化Predict Box可能是在2号Grid Cell,用其来确定应该回归中心落于8号Grid Cell上的哪个Ground Truth Box显然是不妥的。
其次,从结果来看,这样得到的结果似乎与直接指定Predictor A预测Ground Truth Box A,Predictor B预测Ground Truth Box B没有差别,因为大家都是随机的。
或许有人想每一步都重新计算相应的IOU,然后调整更新方向。这个也显然是不合适的,一方面,重复计算正负样本,这是对计算资源的浪费;另一方面,前面Predictor A还在朝着“车”的Ground Truth Box优化loss function,后面如果又要求其朝着“人”的Ground Truth Box优化loss function,不断调整更新的方向极易造成收敛问题,至少也有延长了收敛时间的问题。

Anchor Boxes机制

我们回到图n的例子:现在我们知道,这两个紫色的框就是两个预设的Anchor Boxes,如果计算IOU,横的Anchor Box与“车”Ground Truth Box的IOU大于其与“人”Ground Truth Box的IOU,因此横的Anchor Box将用于预测车;竖的Anchor Box与“人”Ground Truth Box的IOU大于其与“车”Ground Truth Box的IOU,因此竖的Anchor Box将用于预测人。

小结

YOLO的Grid Cell与Faster RCNN的Anchor Box实际上作用都是相同的,其作用都是通过计算其与一个或者多个Object的Ground Truth Box的IOU,来确定相应的正负样本。