生成锚框
假设输入图像高为 ,宽为
。我们分别以图像的每个像素为中心生成不同形状的锚框。设大小为
且宽高比为
,锚框的宽和高分别为
和
。当中心位置给定时,已知宽和高的锚框是确定的。
下面我们分别设定好一组大小 和一组宽高比
。如果以每个像素为中心时使用所有的大小与宽高比的组合,输入图像将一共得到
个锚框。虽然这些锚框可能覆盖了所有的真实边界框,但计算复杂度容易过高。因此,我们通常只对包含
或
的大小与宽高比的组合感兴趣,即
也就是说,以相同像素为中心的锚框数量为 。对于整个输入图像,我们将一共生成
个锚框。
训练
假设图像中锚框分别为 ,真实边界框分别为
,且
。定义矩阵
,其中第
行第
列的元素
为锚框
与真实边界框
的交并比。
首先,我们找出矩阵 中最大元素,并将该元素的行索引与列索引分别记为
。我们为锚框
分配真实边界框
。显然,锚框
和真实边界框
在所有的“锚框—真实边界框”的配对中相似度最高。接下来,将矩阵
中第
行和第
列上的所有元素丢弃。找出矩阵
中剩余的最大元素,并将该元素的行索引与列索引分别记为
。我们为锚框
分配真实边界框
,再将矩阵
中第
行和第
列上的所有元素丢弃。此时矩阵
中已有两行两列的元素被丢弃。
依此类推,直到矩阵 中所有
列元素全部被丢弃。这个时候,我们已为
个锚框各分配了一个真实边界框。
接下来,我们只遍历剩余的 个锚框:给定其中的锚框
,根据矩阵
的第
行找到与
交并比最大的真实边界框
,只有当该交并比大于预先设定的阈值时,才为锚框
分配真实边界框
。
NMS输出
对于一个预测边界框 ,模型会计算各个类别的预测概率。设其中最大的预测概率为
,该概率所对应的类别即
的预测类别。我们也将
称为预测边界框
的置信度。在同一图像上,我们将预测类别非背景的预测边界框按置信度从高到低排序,得到列表
。从
中选取置信度最高的预测边界框
作为基准,将所有与
的交并比大于某阈值的非基准预测边界框从
中移除。这里的阈值是预先设定的超参数。此时,
保留了置信度最高的预测边界框并移除了与其相似的其他预测边界框。
接下来,从 中选取置信度第二高的预测边界框
作为基准,将所有与
的交并比大于某阈值的非基准预测边界框从
中移除。重复这一过程,直到
中所有预测边界框都曾作为基准。此时
中任意一对预测边界框的交并比都小于阈值。最终,输出列表
中的所有预测边界框。
- 来源,
网友评论