目标检测算法Fast R-CNN详解

前面我们一起学了SPP-NetR-CNN的相关知识,如下:
目标检测算法SPP-Net详解
目标检测R-CNN通俗详解
由于每期都是逐步改进,重复的不在赘述,所以建议先阅读前面的,这期我们继续改进,学习一下Fast-RCNN都做了哪些改进?

上期,我们知道SPP-Net主要对R-CNN做了两点改进:

  • 特征映射,只需要做一次卷积池化操作。

  • 金字塔池化层,可以适应任意尺寸的输入。

但是由于SPP-Net仍采用SVM训练分类器和边框回归的方式,无法实现端到端的操作。那么Fast RCNN借鉴了SPP-Net算法的思想,改进了这3点:

  • 利用softmax代替了svm进行分类器训练

  • 利用神经网络代替了边框回归

  • 简化了SPP-Net的金字塔池化层

我们先来直接看看Fast RCNN的总体框架。

Fast RCNN框架

Fast RCNN借鉴了SPP-Net的思想,保留了SPP-Net的特征映射和简化了金字塔池化层,如下图:
目标检测算法Fast R-CNN详解_第1张图片
我们一起看一下Fast RCNN的流程:

  1. 对输入图像利用SS算法进行候选框选取,记录下来候选框的位置。

  2. 将原始输入图像输入到卷积网络进行特征提取,得到特征图。

  3. 利用SPP-Net中学的特征映射的方法将候选框的位置映射到特征图相应位置,并提取特征。

  4. 将提取的特征经过ROI Pooling层来固定特征数量。

  5. 将经过ROI Pooling的的特征输入到共享全连接层。

  6. 最后将共享全连接层的输出分别经过各自的全连接层利用softmax进行分类以及进行边框回  归。

从上面的步骤,我们可以看出,Fast RCNN算法通过将softmax分类器替换掉svm,以及利用神经网络代替之前的边框回归,实现了目标检测端到端的操作。至于softmax分类器和这里的边框回归,这里不再赘述,可公众号回复【深度学习】进行学习。

这里我们看一下ROI Pooling是如何实现的。

ROI Pooling

我们知道前面学的SPP-Net中关于金字塔池化的原理,是经过3个级别的金字塔网格池化。这里Fast RCNN将其简化为只用一个3x3的网格,如下图:
目标检测算法Fast R-CNN详解_第2张图片
这里将候选区域对应的特征图区域经过一个3x3的网格进行最大值池化,每张候选框对应的特征图区域得到9个特征,这样讲特征数量固定之后,就可送到全连接层进行分类和回归训练。

总的来说,Fast RCNN最大的改进就是将svm分类器和边框回归都集成到了一起,实现了端到端操作。那么Fast RCNN的性能怎么样呢?

性能分析

这里,通过对比前面我们学过的R-CNNSPP-Net来看下Fast RCNN的性能如何,如下表:

目标检测算法Fast R-CNN详解_第3张图片
上表中的S,M,L分别表示网络的大小,以大的网络为例,可以看到R-CNNtraining时间为84小时,SPP-Net25小时,而Fast RCNN训练时间为9.5小时,总体速度与R-CNN相比提高了8.8倍。
而测试阶段,在大网络情况下,R-CNN单张图像测试用时为47.0秒,SPP-Net用时为2.3秒,而Fast RCNN用时为0.32秒。测试速度在利用SVD降维的情况下与R-CNN相比更是提高了213倍。而在mAP指标上Fast RCNNR-CNN相差不大。来看一下R-CNNFast RCNN在不同分类器上的性能比较,如下表:

目标检测算法Fast R-CNN详解_第4张图片
从上表中可以看到R-CNNFast RCNNSVM分类器上,在小网络和中网络情况下R-CNN稍好一些,在大网络情况下,则Fast RCNN要高一些;而Fast RCNNSVMSoftmax之间发现三种网络下Softmax都要比SVM稍高一些。

总体来说,Fast RCNNR-CNN相比在mAP指标上相差不大,但是在检测速度和训练速度上都有了大幅度的提升。虽然速度提升了不少,但是还是无法达到实时检测的需求,那么要如何改进?我们下期一起学习Faster RCNN.
目标检测算法Fast R-CNN详解_第5张图片

好文章,我在看

你可能感兴趣的:(目标检测算法Fast R-CNN详解)