RCNN、SPP-net、Fast-RCNN算法比较

前言

最近在阅读目标检测方向的论文,遇到了很多困惑,尤其是Fast-RCNN算法里面一些细节,一直弄不明白,不禁发出感叹:都是认识的字,怎么放一起就看不懂了呢?所幸刚刚弄明白了,特做个梳理加深记忆。

一、RCNN

流程

一堆图片,对每一张图片都用Selective Search(选择性搜索)算法生成2000个region proposal(建议区域),调整到227*227的尺寸,然后让每一个region proposal,都经过若干卷积池化层提取出来feature map(特征图),最后通过一个全连接层整合成一个固定大小的feature vector(特征向量);再用SVM算法对它们分类;最后利用边框回归算法进行调整。

缺点

  1. 多阶段,包括提取特征,分类,边框回归
  2. 占用磁盘空间,SVM算法要对特征进行分类,所以这些特征都是要存下来的
  3. 计算冗余,1张图的2000个建议框很多事重叠的

二、SPP-net

流程

一堆图片,对每张图片用Selective Search算法生成2000个region proposal,让整张图片经过若干卷积池化层提取出来feature map,接下来是重点了,对于每个region proposal,我们都能在特征图里面找到相应的映射,这里画图解释一下(我当时就是这里没有搞懂)。

这个方法实在是太巧妙了,RCNN里面要对每一个region proposal进行卷积提取特征操作,这里只用对整张图进行提取,然后在整图产生的特征图里找到region proposal对应位置的映射就好了,减少了大量大量的计算。
当然,SPP-net还做了一个改进,即用SPP层代替最后一层池化层,它的作用是让不同size的特征图映射到固定的size,所以我们不需要让region proposal变形到227*227。其他的流程就跟RCNN一样啦。

缺点

  1. 依然是多阶段
  2. 依然要存储大量特征
  3. 新问题,SPP层之前的所有卷积层参数不能finetune

三、Fast-RCNN

流程

全连接层跟SPP-net基本一样,唯一区别是用RoI池化层替代SPP层(实际上是一种特殊的只有一层的SPP层),作用也是把不同size的特征图映射到同一size。下一步用若干全连接层生成固定尺寸的feature vector,接着全连接层之后产生两个分支,一边是用softmax分类器产生各类别概率,另一边是用边框回归模型,两者结合定义损失函数(之前都是先svm分类,再边框回归调整,现在把他们结合到一步,节省时间)。

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务