为什么Faster R-CNN要使用anchor boxes?
计算机/软件
1 335
1
该提问暂无详细描述
收藏
2021-01-28 04:38 更新 🍊小桔子 •  1572
共 1 个回答
高赞 时间
0

在图像分类中,我们感兴趣的是不受位置影响的对象的类别,然后可以通过定位它们来进一步扩展这一点,这被称为对象检测。

让我们从一个基本的例子开始,来说明如何实现这一点。我们可以在卷积神经网络(CNN)的最终卷积(conv)特征映射上添加一个回归头。

回归头可以是一个只有四种输出(x,y,w,h)的浅层全连接神经网络(NN),其中,(x,y)=边框中心,w=宽度,h=高度。

我们可以使用基于梯度的优化算法优化回归头。但是,存在一个局限性,这仅适用于存在一次的一个已知对象。如果我们在场景中有两个或更多的对象,就会对边界框的回归产生干扰,因为每个对象不管它们在场景中的什么位置,都会影响到回归头。

虽然我们可以通过每个对象类具有一个回归头来局部解决这个问题,但是,同一个类的多个对象的同时出现仍然是一个问题,这仍然会引起干扰。

因此,解决方案是约束每个回归头只考虑图像上的一个有限区域,这样他们就不会干扰。但如果物体非常接近,仍然会有干扰。所以,当同一个类的两个对象强烈重叠时,这个方法仍然不能很好地工作。

为了约束每个回归头,我们使用anchor boxes。

当一个对象的ground真值边界框与特定锚点的并集(IoU)有很高的交集时,与该锚点相关的回归头将负责回归最终的边界框。因此,在优化过程中,与地面真相相关的任何正确/不正确的边界框预测都会受到表扬/批评。

这种方法训练后,每个回归头是空间独立的,很少受到其他的干扰。因此,即使同一个类的多个对象可用,只要这些对象之间不严重重叠,它们也不会相互干扰。

因此,锚点作为参考和空间约束,限制了回归头的空间范围,使锚点以外的区域不会干扰回归过程。这就是为什么在损失中使用带有相应地面真值框的锚点的IoU来确保每个回归头在空间上受到约束的原因。

收藏
2021-01-28 04:42 更新 Lisa •  1167