【RCNN系列】Fast RCNN目标检测模型

    上篇文章阐述了SPPNet网络模型,本篇文章详细阐述Fast RCNN目标检测模型。把Fast RCNN放在SPPNet之后不仅是遵循时间上前后顺序,更因为Fast RCNN也借鉴了SPPNet上面的一些技巧。

    Fast RCNN论文:https://arxiv.org/abs/1406.4729

    Fast RCNN论文翻译:https://alvinzhu.xyz/2017/10/10/fast-r-cnn/

一、概述

    Fast RCNN (Fast Regions with CNN features)一种快速的基于区域的卷积网络方法,用于目标检测。该模型是在RCNN模型的基础进行了优化,训练时间快9倍,测试时间快213倍,相对于SPPNet训练快3倍,测试快10倍。准确率方面mAP为66%,RCNN为62%(RCNN更换了特征网络结构,准确率较之Alexnet(53.3%)准确率提升了)。

【与图像分类相比,目标检测是一个更具挑战的任务,需要更复杂的方法来解决。复杂性的产生是因为检测需要目标的精确定位,这就导致了两个难点,首先必须处理大量的候选框目标位置(通常称为“提案”),其次相对于生成候选框的粗略定位,目标检测必须实现精确定位。这两点问题的解决方案经常会影响速度、准确性或简单性。】

二、Fast R-CNN网络模型 

    Fast RCNN物体检测系统由三个模块组成:

  • 卷积神经网络提取特征,搜索检测算法提取候选框集合以及特征映射
  • 区域归一化(ROI Pooling),得到固定维度的特征向量
  • Softmax类别概率估计与边框位置修正回归

1、提取特征、候选框集合、特征映射 

    Fast RCNN提取特征的主干网络是VGG16(ILSVRC 2014物体分类第二名),13层Conv+3层Fc,激活函数Relu。

       Fast RCNN候选框也是通过Selective Search算法选取的2000个候选框集合,候选框在特征图上的映射和SPPNet的模式是一样的。

2、ROI(Region Of Interest) Pooling

    ROI Pooling的作用也是为了适用用Fc网络要求的固定尺寸的输入特征向量,功能和SPP-layer的作用一样。

【ROI Pooling是SPP的一种特殊情况,SPP是采用多个尺度叠加,而ROI Pooling则是直接将特征图分成Fc层需要的7*7的网格,然后获取每个cell里面最大的那个值,组成7*7*512的特征向量。】

3、Softmax分类和线性回归 

【Fast RCNN使用了一个精细的训练过程,对比R-CNN或者SPPNet分别在三个独立阶段训练特征提取、SVM和回归器,其在微调阶段联合优化Softmax分类器和检测框回归。Fast R-CNN网络具有两个同级输出层。 第一个输出在k+1个类别上的离散概率分布(每个RoI),p=(p0, ...,pk)。 通常,通过全连接层的k+1个输出上的Softmax来计算p。第二个输出层输出检测框回归偏移, t^k = (t_x^k ,t_y^k, t_w^k, t_h^k),通过目标的真实目标框v,来计算t^k指定相对于候选框的尺度不变转换和对数空间高度/宽度移位。】

【卷积神经网络分为前向传播算法和反向传播算法,前向传播主要是评分函数(一系列的特征向量与权重的积加上偏置,再经过激活函数最终得到的结果),而反向传播算法主要依据损失函数,损失函数是用来量化评分函数和真实标签之间的一致性的,越大则说明预测的情况越差】

   下面简短介绍下SVM和Softmax的loss函数,如下图前向传播评分类别1的得分最高,但是正确的类别是2(三个类别按0,1,2)。

   右上角通过Hinge loss来演示SVM的损失计算过程。Hinge loss通常被用于最大间隔算法(maximum-margin),而最大间隔算法又是SVM用到的主要算法。。

 

 【Hinge loss专用于二分类问题。标签值 y = \pm 1,预测值 y^ ∈ R。该二分类问题的目标函数要求如下:当y^大于等于+1或者小于等于-1时,都是分类器确定的分类结果,此时的损失函数loss为0;而当预测值y^∈(−1,1)时,分类器对分类结果不确定,loss不为0。显然,当y^=0时,loss达到最大值。此处这只1为阈值。】

    右下角是利用cross-entropy loss来演示Softmax的损失计算过程。

【交叉熵损失函数Cross Entropy Loss】描述了两个概率分布之间的距离,当交叉熵越小说明二者之间越接近。尽管交叉熵刻画的是两个概率分布之间的距离,但是神经网络的输出却不一定是一个概率分布。为此我们常常用Softmax回归将神经网络前向传播得到的结果变成概率分布。

     对比两个loss函数,当改变得值不大时,对svm可能没有影响,此时改变点没有超过边界,但是对softmax而言,无论大小的改变,结果都会发生相应的变化。【上面介绍了关于svm和softmax损失函数是为了下面阐述Fast rcnn的多任务损失做铺垫】

 Fast RCNN对于每个标记的ROI区域使用多任务联合分类和检测框回归损失函数L:

这里是分类和边框回归2个计算损失,后面的Faster RCNN4个计算损失,yolov1的5个计算损失等。

三、创新与挑战

1、创新(没有再提可以训练不同尺度的图片,因为这个已成为后面的标配)

  • 训练使用多任务损失的单阶段训练,RCNN、SPPNet是多阶段训练;
  • 训练可以更新所有的网络参数,RCNN、SPPNet因为是分阶段,后面的loss函数不能更新前面特诊提取网络的参数;
  • 不需要磁盘空间缓存大量的特征。
  • 截断SVD加速训练

2、挑战

    区域提取成为影响目标检测性能的瓶颈,RCNN、SPPNet、Fast RCNN都选用搜索选择算法产生2000个候选区域集合;

    训练和测试耗时,0.3秒一张的检测图片不能满足实时的需求。

总结:Fast RCNN将在RCNN和SPPNet上面的分阶段训练这一弊端,转成多任务单阶段的训练,并且可以更新所有的网络参数,这个在提高精度的同时,节省了很多预训练等很多繁琐的步骤,这个是Fast RCNN相对于以往的目标检测模型的创新点。总的来说,Fast RCNN在RCNN系列中提供的最大可借鉴的地方可能就是就是多任务但阶段训练,以及softmax loss的引进,而候选区域提取借鉴的RCNN,ROI Pooling借鉴的是SPP。

发布了31 篇原创文章 · 获赞 35 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/bingjia103126/article/details/103710109