我们知道像faster-rcnn和mask-rcnn这样的对象检测框架有一个roi pooling layer或roi align layer。但是为什么ssd和yolo框架没有这样的层呢?
发布于 2019-04-09 10:11:10
首先,我们应该理解roi pooling的目的是什么:在功能地图上使用来自提议区域的固定大小的特征表示。因为所提议的区域可能有不同的大小,如果我们直接利用这些区域的特征,它们是不同的形状,因此不能提供给完全连接的层进行预测。(我们已经知道,完全连接的层需要固定的形状输入)。对于进一步的阅读,这里是一个很好的答案。
因此,我们理解roi池本质上需要两个输入,提议的区域和功能映射。正如在下面的图中明确描述的那样

。
那么为什么YOLO和SSD不使用roi pooling呢?仅仅因为他们不使用区域建议书!它们的设计与R-CNN、快速R-CNN、快速R-CNN、YOLO和SSD等模型本质上不同,而R-CNN系列(R-CNN、快速r-cnn、快R CNN)被称为two-stage检测器,因为它们首先提出区域,然后进行分类和回归。
对于one-stage检测器,直接从特征映射执行预测(分类和回归)。他们的方法是在网格中分割图像,每个网格将预测出一个固定数量的边界框,其中有置信度和等级分数。原始的YOLO使用单比例尺特征映射,而SSD使用多尺度特征映射,如下面的图2所示

我们可以看到,用YOLO和SSD,最终输出是一个固定形状的张量。因此,它们的行为非常类似于像linear regression这样的问题,因此它们被称为one-stage检测器。
https://stackoverflow.com/questions/55587129
复制相似问题