本文假设你已经看过yolo论文,故不在贴图原论文解释。
虽然都是框框(box),但是实际上区别还是很大的,在yolo算法中,Y的输出形式为
例如:
那么,在这里,ancher box(以下称为abox)的种类为2,而bounding box(以下称为bbox)的种类为3。
为什么要这么设计呢?
假如现在有一个任务,需要预测男人,女人,汽车,那么根据他们的形状,你会想到两种框来预测,(长条的,扁平的),这是在形状的角度来描述,而你还需要预测目标的类别,即c1=男人,c2=女人,c3=汽车。如果c1=1,那么这个框就是男人的bbox,这样,就出现了3个bbox,同理,如果你要预测狗,汽车,但是实际上狗的形状差距很大的,你不需要关心他是柯基还是阿拉斯加犬,但是你需要预测出来他们都是狗,人那么你根据形状,需要三个abox,结果c1=狗,c2=汽车。
总结一下:abox是根据预测的形状来设计的box,而bbox是根据预测的分类来设计的,对于上面的额Y,有两个pc,三个c=(c1,c2,c3),则有2个abox,3个bbox。
思考一下:对于任务1,预测男人,女人,汽车,会遇到什么问题?
答案:当同一个cell既负责男人也负责女人的时候,会出现无法完成任务,因为他们共用同一个abox,yolo算法无法处理这种任务
拓展:为了避免以上情况,在设计的时候,abox应该至少不少于bbox。如果行人与汽车同在一个cell,那么y[0]=y[8]=1即可(上图中的pc)