锚框/先验框
什么是先验框
先验框是提前设定好的一系列检测框(大小和尺寸都是提前定好了的)
为什么要设置先验框?之前目标检测基本概念中介绍了目标检测的一个基本思路:先确立众多候选框,再对候选框进行分类和微调,从而完成目标检测。这就是设置先验框的原因。
设置不同尺度的先验框
为了覆盖更多可能的情况,在图中的同一个位置,会设置几个不同尺度的先验框,这里的不同尺度指大小与长宽比
显然,设置不同尺度的先验框,出现与目标物体较为匹配(高IoU)的先验框的概率更高
先验框与特征图对应
另外,先验框要设置在图片中不同位置上。
如果遍历原图所有像素,假设一个224x224的图片,每个像素位置设置3个先验框,一共需要设置224x224x3=150528个先验框。如果是遍历原图下采样得到的feature map,则会大大减少先验框的数量。
先验框类别信息的确定
要给出设置的先验框的类别信息,才能让模型学着去预测每个先验框是否对应着一个目标物体。
对于类别信息的确定,方法是设置一个IoU阈值,与目标框IoU小于阈值的先验框类别设置为背景;大于等于阈值的设置为目标先验框。这样就得到了ground truth的类别信息。
先验框的生成
VGG16得到的特征图大小为7*7,每个位置设置三种尺度与三种长宽比共9种候选框,以代码为例:
"""
设置细节介绍:
1. 离散程度 fmap_dims = 7: VGG16最后的特征图尺寸为 7*7
2. 在上面的举例中我们是假设了三种尺寸的先验框,然后遍历坐标。在先验框生成过程中,先验框的尺寸是提前设置好的,
特征图上每一个cell定义了共9种不同大小和形状的候选框&#x