小白一枚 记录学习点滴
里面的“?”是我还没有太看懂的部分
1. RCNN
article: Rich feature hierarchiesfor accurate object detection and semantic segmentation(2014)
27th IEEE Conference onComputer Vision and Pattern Recognition (CVPR)
作者: Girshick, Ross; Donahue, Jeff; Darrell, Trevor; 等.
被引频次1161
code: http://www.cs.berkeley.edu/~rbg/rcnn
传统方法:HOG,DPM,LBP,SIFT,BoW
算法思路:
1) 候选区域选择
RegionProposal是一类传统的区域提取方法(selective search),可以看作不同宽高的滑动窗口(1-2k个),通过窗口滑动获得潜在的目标图像。然后进行归一化,作为CNN的标准输入
2) CNN特征提取(标准CNN过程,得到固定维度的输出)
提取图像的所有候选框(选择性搜索)
对于每个区域,修正大小以适合CNN的输入,将第五个池化层的输出(对候选框提取到的特征)存到硬盘
3) 分类与边界回归
实际包含两个子步骤,一是对上一步的输出向量进行分类(SVM);二是通过边界回归(bounding-boxregression) 得到精确的目标区域。
结果:
问题:
1) 多个候选区域对应的图像需要预先提取,占用较大的磁盘空间;
2) 针对传统CNN需要固定尺寸的输入图像,crop/warp(归一化)产生物体截断或拉伸,会导致输入CNN的信息丢失;
3) 每一个Proposal Region都需要进入CNN网络计算,上千个Region存在大量的范围重叠,重复的特征提取带来巨大的计算浪费。
附:
Ø Proposal Region(Selective Search和edge Boxes)
Selective search for objectrecognition. IJCV, 2013.
Ø Bounding Box Regression
对于窗口一般使用四维向量(x,y,w,h) 来表示,分别表示窗口的中心点坐标和宽高。红色的框 P 代表原始的Proposal, 绿色的框 G 代表目标的 Ground Truth,Bbox reg的目标是寻找一种关系使得输入原始的窗口 P 经过映射得到一个跟真实窗口 G 更接近的回归窗口。
article:Object Detection with Discriminatively Trained Part-Based Models(2010)
作者: Felzenszwalb,Pedro F.; Girshick, Ross B.; McAllester, David; 等.
IEEE TRANSACTIONS ON PATTERN ANALYSIS AND MACHINE INTELLIGENCE
被引频次: 2798
Ø SPPNet
思路:
1) 取消了crop/warp图像归一化过程,解决图像变形导致的信息丢失以及存储问题
2) 采用空间金字塔池化(Spatial Pyramid Pooling )替换了全连接层之前的最后一个池化层
3) 只对原图进行一次卷积得到整张图的feature map,然后找到每个候选框在feature map上的映射patch,将此patch作为每个候选框的卷积特征输入到SPP layer和之后的层。节省了大量的计算时间,比R-CNN有一百倍左右的提速。
问题:
1) 和RCNN一样,训练过程仍然是隔离的,提取候选框、计算CNN特征、SVM分类、Bounding Box回归独立训练,大量的中间结果需要转存,无法整体训练参数
2) SPP-Net无法更新空间金字塔池层以下的权重(FastRCNN2.3解释了?)
3) 在整个过程中,Proposal Region仍然很耗时
2. FastR-CNN
article: Fast R-CNN
作者: Girshick,Ross
会议: IEEE International Conference on Computer Vision
2015 IEEE INTERNATIONALCONFERENCE ON COMPUTER VISION (ICCV)
被引频次: 381
code: https://github.com/rbgirshick/fast-rcnn.
思路:
1) 生成region proposal(通过selective search),每张图片大约2000个候选框
2) Fast-RCNN把整张图片送入CNN,进行特征提取
3) Fast-RCNN把regionproposal映射到CNN的最后一层卷积feature map上
4) 通过RoI pooling层(其实是单层的SPP layer)使得每个建议窗口生成固定大小的feature map
5) 继续经过两个全连接层(FC)得到特征向量,得到两个输出向量(称为multi-task)
第一个是分类,使用softmax(比SVM效果好),第二个是每一类的boundingbox回归。利用SoftMax Loss和Smooth L1 Loss对分类概率和边框回归联合训练
cls_score层用于分类,输出K+1维数组p,表示属于K类和背景的概率