r-cnn:https://arxiv.org/pdf/1311.2524.pdf
fast r-cnn: https://arxiv.org/pdf/1504.08083.pdf
faster r-cnn : https://arxiv.org/pdf/1506.01497.pdf

起源

目标检测问题的起源:最初受到传统计算机视觉方法启发,使用滑动窗口检测器+SVM等分类器。但是有个问题:窗口的大小难以确定,因为物体是大小多样的。使用深度学习做目标检测的比较早期的方法就是R-CNN。

R-CNN(Region convolutional neural network)

流程

输入一张图片,使用selective search(根据图像特征) 方法来提取region proposal (区域建议窗口),大约2000个左右,然后将 提取出来的2000个窗口 resize到统一尺寸,来符合CNN的输入,分别丢入CNN网络,然后用设计好的CNN的网络来提取特征,然后在最后加上SVM分类和BBox回归。
-w628

缺点

需要对2000个proposal region逐个做CNN提取、分类、预测,很慢,而且有大量重复计算.

可以考虑的改进方案:

  • 从窗口角度: 合理地选择窗口,减少运算量,提高运算效率
  • 从网络结构的角度: 比如使用VGG16 ,resnet inception 等网络,来提高特征提取的精度和速度

Fast R-CNN

流程

先做SS,选出2000个窗口,但是不切出来,然后对原图整个做CNN提取特征,然后在CNN输出的特征图中按照2000个窗口的位置来切割,与之前先提取窗口,然后对每个窗口做CNN特征提取的效果是一样的。但是Fast-Rcnn只需要对大图做一次CNN,而RCNN需要对2000个小图分别做CNN,运算量比较大。另一个是用softmax来替换SVM,然后最后训练是使得multi-loss下降,multi-loss 包括bbox回归损失和分类损失。
-w826

改进(相对于R-CNN)

  • 先使用卷积网络对图像进行特征提取,然后共享这个提取出来的feature map
  • 因为使用SS提取的区域大小是不固定的,所以经过特征抽取网络后提取出来的feature map大小是不相同的,所以在特征抽取到分类回归层中间加上了ROI pooling网络结构,用于将不同大小的feature map分解成统一尺寸的特征(ROI pooling 的思想借鉴于 SPP-Net)。
  • 使用softmax替换了SVM多分类器

缺点

  • 使用SS的方法来提取2000个region开销太大,成为优化瓶颈,能否使用神经网络来寻找目标

Faster R-CNN

-w816

流程

提出RPN网络(region proposal network)用于提取region,先在每个点找9个如图所示的anchor box
-w422

-w396

完整流程图
-w703

优点

  • 使用RPN网络代替传统SS(Selective Search)提取region proposal的策略,大量缩短时间

Mask R-CNN

改进

  • 使用ROI Align 代替 ROI Pooling,使得检测更加精确
  • 使用更强的特征提取网络ResNeXt替换VGG
  • 在分类和回归分支加一个pixel级别的K(K是类别数)个feature map,用于预测原来图片每个pixel属于哪些类别