更快的RCNN,为什么我们不只使用RPN进行检测?

10
我们知道, faster-RCNN 有两个主要部分:一个是区域提议网络(RPN),另一个是快速RCNN。
我的问题是,既然区域提议网络(RPN)可以输出类别分数和边界框并且可训练,为什么我们还需要Fast-RCNN?
我认为 RPN 对于检测(红色圆圈)已经足够了,而 Fast-RCNN 现在变得多余了(蓝色圆圈)吗?

enter image description here

5个回答

6
简短回答:它们不是多余的。 R-CNN文章及其变体普及了我们曾经称之为级联的使用方式。当时,为了检测,通常使用不同的探测器进行检测,这些探测器在结构上非常相似,因为它们具有互补的作用。
如果检测部分有一定的正交性,则可以逐步消除误报。
此外,根据定义,R-CNN的两个部分具有不同的作用,第一个部分用于将对象与背景区分开来,而第二个部分用于将对象的细粒度类别与它们自身(以及背景)区分开来。
但是,如果只有1个类与背景不同,那么可能仅需要使用RPN部分进行检测,但即使在这种情况下,链式两个不同的分类器也可能会更好地改善结果(或者不如见此文章)。
PS:我回答了这个问题,因为我想这么做,但这个问题绝对不适合stackoverflow。

1
为什么这个问题不适合在SO上提问? - deadcode
1
我认为SO规则并没有考虑到神经网络和其他最新研究领域的最新进展,也没有得到更新。尽管如此,这并不属于任何“离题”的类别,而是属于“通常涵盖软件算法或实际可回答的软件开发问题”的范畴。 - deadcode

2
如果只是在RPN网络中添加一个head类,您确实可以得到检测结果,包括分数和类别估计。然而,第二阶段主要用于获取更准确的检测框。
Faster-RCNN是一种两阶段的检测器,就像Fast R-CNN一样。在那里,选择性搜索用于生成对象位置的大致估计,第二阶段会对它们进行修正或拒绝。
现在为什么RPN需要这样做呢?为什么只有粗略的估计?
原因之一是有限的感受野:输入图像通过CNN转换成空间分辨率有限的特征图。对于特征图上的每个位置,RPN头部会估计该位置的特征是否对应于一个对象,并回归检测框。检测框回归是基于CNN的最终特征图完成的。特别是由于CNN的原因,正确的图像边界框可能比相应的感受野更大。
例如:假设我们有一幅描绘人物的图像,特征图上的一个位置表示该位置存在高概率的人物。现在,如果相应的感受野仅包含身体部位,则回归器必须估计将整个人物包围起来的框,尽管它只“看到”了身体部位。
因此,RPN创建一个较粗略的边界框估计。 Faster RCNN的第二阶段使用预测边界框中包含的所有特征来纠正估计值。
在上述示例中,RPN创建了一个太大的边界框,它将人物囊括其中(因为它无法看到人物的姿势),而第二阶段使用该框中包含的所有信息来调整它以使其更紧密。然而,由于网络可以访问对象的更多内容,因此可以更准确地进行调整。

1

faster-rcnn是一种两阶段的方法,相比于像yolo、ssd这样的单阶段方法,它更准确的原因在于其两阶段架构。其中,RPN是提议生成的第一阶段,第二阶段的分类和定位阶段则基于RPN的粗略结果学习更精确的结果。

所以,是的,你可以,但你的性能还不够好。


0

我认为蓝色圆圈是完全多余的,只需添加一个类别分类层(为包含对象的每个边界框提供类别)就可以正常工作,这就是单次检测器以牺牲准确性的方式所做的。


“添加一个类别分类层(为包含物体的每个边界框提供类别)应该可以正常工作” - 这正是蓝色部分所做的。它还会对边界框进行微调以更好地适应。蓝色部分并不冗余,它是区分类别的部分。 - user3263338

-1
根据我的理解,RPN仅用于二进制检查,以确定bbox中是否有对象,而最终的检测器部分则用于分类类别,例如汽车、人类、手机等。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接