可以从一个基本的例子对其进行解释。比如,我们可以在卷积神经网络(CNN)的最终卷积(conv)特征图上添加一个回归头。回归头可以是具有四个输出(x,y,w,h)的浅层全连接神经网络(NN)。一般来说,回归头可以使用基于梯度的算法进行优化,达到获取待检测对象位置的目的。
但是使用回归头有一个极大的限制,就是当图像中只有一个对象时才管用。如果场景中有两个或多个对象,则可能会干扰边界框的回归,因为每个对象都会影响回归头,无论它们在图片中的位置如何。我们可以通过每个对象类有一个回归头来部分解决这个问题。但是仍然存在一个问题,即同一类的多个对象同时存在时,这仍然会造成干扰。
因此,解决方案是限制每个回归头只考虑图像上的有限区域,这样它们就不会干扰。但如果物体彼此非常接近,仍然会有干扰。因此,当同一类中的两个对象彼此强烈重叠时,此方法仍然不能很好地工作。
为了约束每个回归头,我们使用anchor boxes。当对象的地面真值边界框与特定的anchor有高IOU时,与该anchor关联的回归头负责回归最终边界框。
这样训练后,每个回归头在空间上是独立的,不受其他头的干扰。因此,即使同一类的多个对象可用,只要这些对象没有严重重叠,它们也不会相互干扰。
因此,anchor boxes 作为参考以及空间约束,用于限制回归头的空间范围,以便anchor 外部的区域不会干扰回归过程。这也就是为什么使用anchor和对应的地面真值框的IoU的原因,因为使用IOU我们可以确保每个回归头在空间上受到约束。 欢迎提问!
参考:https://www.quora.com/Why-does-Faster-R-CNN-use-anchor-boxes#
详解anchor boxes:为什么Faster R CNN要使用关于anchor boxes?
最新推荐文章于 2022-01-07 17:06:11 发布