Fast R-CNN算法

  Fast R-CNN算法是作者Ross Girshick对R-CNN算法的一种改进。R-CNN虽然取得了不错的成绩,但是其缺点也很明显。Fast R-CNN同样使用VGG-16网络结构,与R-CNN相比训练时间快9倍,测试时间快213倍,准确率从62%提升至66%(再Pascal voc数据集上)。Fast R-CNN主要是解决R-CNN存在的问题:

  • 测试训练速度慢,主要是提取候选区域的特征慢:R-CNN首先从测试图中提取2000个候选区域,然后将这2000个候选区域分别输入到预训练好的CNN中提取特征。由于候选区域有大量的重叠,这种提取特征的方法,就会重复的计算重叠区域的特征。在Fast-RCNN中,将整张图输入到CNN中提取特征,在邻接时再映射到每一个候选区域,这样只需要在末尾的少数层单独的处理每个候选框。
  • 训练需要额外的空间保存提取到的特征信息:R-CNN中需要将提取到的特征保存下来,用于为每个类训练单独的SVM分类器和边框回归器。在Fast R-CNN中,将类别判断和边框回归统一的使用CNN实现,不需要再额外的存储特征。

  Fast R-CNN算法步骤

  1. 输入一张图像生成1K~2K个候选区域(使用Selective Search方法);
  2. 将图像输入网络得到相应的特征图,将Selective Search算法生成的候选框投影到特征图上获得相应的特征矩阵;
  3. 将每个特征矩阵通过ROI pooling层缩放为7x7大小的特征图,接着将特征图展平通过一系列全连接层得到预测结果。

Fast R-CNN算法_第1张图片
关于Fast R-CNN的几个点:

  1. 一次性计算整张图像特征:R-CNN依次将候选框区域输入卷积神经网络得到特征;Fast R-CNN将整张图像输入网络,紧接着从特征图像上提取相应的候选区域,这些候选区域的特征不需要再重复计算。
  2. ROI 池化层
  3. 分类器和边界框回归器
  4. Multi-task loss: L ( p , u , t u , v ) = L c l s ( p , u ) + λ [ u ⩾ 1 ] L l o c ( t u , v ) L(p, u, t^{u}, v)=L_{cls}(p, u)+ \lambda[u\geqslant 1]L_{loc}(t^{u}, v) L(p,u,tu,v)=Lcls(p,u)+λ[u1]Lloc(tu,v)

Fast R-CNN是对R-CNN的一种改进:

  1. 卷积不再是对每个候选区域进行,而是直接对整张图像进行,这样减少了很多重复计算;
  2. 用ROI pooling进行特征的尺寸变换,因为全连接层的输入要求尺寸大小一样,因此不能直接把候选区域作为输入;
  3. 将回归器放进网络一起训练,每个类别对应一个回归器,同时用softmax的全连接层代替原来的SVM分类器。

Fast R-CNN存在的问题:

  1. 依旧使用Selective Search算法提取候选区域,耗时较长;
  2. 无法满足实时应用,没有真正实现end-to-end训练测试;
  3. 利用了GPU,但是候选区域方法是在CPU上实现的。

你可能感兴趣的:(深度学习,目标检测,Fast,R-CNN,卷积神经网络,目标检测)