R-CNN缺点

  • 训练是个multi-stage pipeline(CNN提取特征、通过log loss 微调网络、训练SVMs、bounding-box regression)
  • 训练费时间和空间
  • 目标检测很慢  

SPPnet 缺点

  • 训练是个multi-stage pipeline(CNN提取特征、通过log loss 微调网络、训练SVMs、bounding-box regression)
  • 不同于R-CNN,微调算法不能更新空间金字塔池化层前面的卷积层

Fast R-CNN优点

  • 高的监测质量(准确率+速度)
  • 训练是single-stage,采用一个多任务损失multi-task loss
  • 训练可以更新网络的所有层
  • 不需要将提取的特征写入硬盘中,节省空间

Fast R-CNN

Fast R-CNN算法流程

  • 输入图片和(2000左右个)RoI(最开始提取出的RoI区域只是为了最后的Bounding box regression时使用,用来输出原图中的位置。)
  • 对图片用CNN进行处理
  • 通过selective search算法在feature map上寻找region proposal
  • 对每个候选区域采用RoI pooling,提取出固定长度的特征向量,并送入后面全连接层
  • softmax层用于判断属于每个类别的概率,bounding box regression用于微调每个目标的边界框

一些细节说明 

  • RoI pooling layer 其实是 spatial pyramid pooling layer的特例,即只采用一层金字塔等级。
  • RoI pooling 输出的尺寸H*W是个超参数,与RoI(候选区域)的大小无关。H和W的数值根据所用CNN网络的第一层全连接层确定,(如VGG16采用H=W=7)
  • bounding box regression输出是四元元组(r,c,h,w),其中(r,c)为左上角点坐标,h,w为长和宽,共输出4*K个数值(K为类别数)
  • softmax输出K+1个概率值(K个类别+背景)

用预训练好网络初始化Fast R-CNN(迁移学习)需方法

  • 用RoI pooling layer代替原网络最后一层最大池化层

  • 原网络最后一层全连接层和softmax层被上述的softmax和BB Regression代替

  • 将原网络调整为接受两种输入:batch个图片以及这些图片的RoIs

相关文章: