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

时间:2017-02-01 09:32:41

标签: machine-learning computer-vision object-detection

众所周知,更快 - RCNN有两个主要部分:一个是区域提议网络(RPN),另一个是快速RCNN。

我的问题是,现在区域提案网络(RPN)可以输出类别分数和边界框并且可以训练,为什么我们需要Fast-RCNN?

我认为RPN足以进行检测(红圈),而Fast-RCNN现在变得多余(蓝圈)?

enter image description here

5 个答案:

答案 0 :(得分:2)

简短回答:不,他们不是多余的。 R-CNN文章及其变体推广了我们曾经称之为级联的用法。 当时为了检测,通常使用不同的探测器通常在结构上非常相似,因为它们具有互补的功能。

如果检测部分正交,则可以在此过程中消除误报。

此外,根据定义,R-CNN的两个部分都有不同的作用,第一部分用于区分对象与背景,第二部分用于区分细粒度的对象类别(以及背景)。

但如果只有1个类而不是背景,那么你是正确的,只能使用RPN部分进行检测,但即使在这种情况下,也可能更好地将结果链接到两个不同的分类器(或者看不到例如{{3 }})

PS:我回答是因为我想,但这个问题绝对不适合stackoverflow

答案 1 :(得分:1)

我认为蓝色圆圈是完全多余的,仅添加一个类别分类层(为包含对象的每个包围盒提供类别)就可以了,这就是单发检测器在精度下降时的作用。

答案 2 :(得分:1)

如果仅将班级负责人添加到RPN网络,您的确会获得检测结果以及分数和班级估计。

但是,第二阶段主要用于获得更准确的检测盒。

Faster-RCNN是两阶段检测器,例如Fast R-CNN。 在那里,“选择性搜索”被用来生成对象位置的粗略估计,然后第二阶段对其进行优化或拒绝。

现在为什么RPN需要这样做?那么为什么它们只是粗略的估计?

一个原因是接受领域有限: 输入图像通过CNN转换为空间分辨率有限的特征图。对于特征图上的每个位置,RPN磁头估计该位置上的特征是否对应于对象,并且磁头向检测盒后退。 框回归是基于CNN的最终特征图完成的。特别是由于CNN,图像上正确的边界框可能会大于相应的接收场。

示例:假设我们有一张描绘人的图像,并且在特征图的一个位置上的特征表明该人的可能性很高。现在,如果相应的接收字段仅包含身体部位,则回归者必须估计一个包围整个人的盒子,尽管它只能“看到”身体部位。

因此,RPN将对边界框进行粗略估计。 Faster RCNN的第二阶段使用了预测边界框中包含的所有功能,并且可以校正估计值。

在该示例中,RPN创建了一个太大的包围框,该包围框将人包围起来(因为它无法看到人的姿势),并且第二阶段使用该框的所有信息来对其进行整形,以使其成为紧。但是,由于可以通过网络访问对象的更多内容,因此可以更精确地完成此操作。

答案 3 :(得分:0)

fast-rcnn是一个两阶段方法,比较像yolo,ssd这样的单阶段方法,更快rcnn准确的原因是因为它的两阶段架构,其中RPN是提案生成的第一阶段,第二阶段分类和本地化阶段根据RPN的粗粒度结果学习更精确的结果。

是的,你可以,但你的表现不够好

答案 4 :(得分:0)

根据我的理解,RPN仅用于二进制检查bbox中是否有对象,而最后的Detector部分用于对汽车,人,电话等类别进行分类