http://www.rossgirshick.info/作者主页
从名字我们就可以看出来,一个是region-based,一个是CNN
Region-based
Region-based是基于区域的意思,对应于图中的第二步,利用selectivesearch(SS)方法可以得到约2000个候选区域。他把相近的像素点归类到一起,因为一般的物体是连续的,与sliding windows相比,得到的regions数量少,且具有一定的语义。SS得到的区域不能直接使用,RCNN的策略是利用与Ground Truth(GT)的IoU(intersection-over-union)作为阈值,大于0.5则认为中国region的label与GT一致。IoU指两个区域的交集和并集之比。
在SS方法中,合并像素块的原则是优先合并颜色相近的、纹理相近的,合并后总面积最小,合并后总面积在BBox中最大。为尽可能不遗漏候选区域,上述操作在多个颜色空间中同时进行(RGB,HSV,Lab等)候选区域和后续步骤相对独立,实际可使用其他方法。
CNN
而RCNN中的CNN自然指convolution Neural Networks.注意要把RCNN和RNN区分开来,就像赵大哥看的北大的张志华和南京大学的周志华一样。
RCNN使用的是AlexNet的finetuning版本。Alexnet是CNN五大经典模型(Lenet1986,Alexnet2012,Googlenet2014,VGG2014,DeepResidual learning2015)之一,也是最经典的算法,赢得了当年的ImageNet比赛冠军,使CNN成为图像分类中的核心算法模型。相关论文出自NIPS2012,作者是大神Alex Krizhevsky,属于多伦多大学Hinton组。《ImageNet Classification with Deep Convolutional Neural Networks》https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf
也可以选择VGG16,Alexnet精度是58.5%,VGG16精度是66%。VGG这个模型的特点是选择比较小的卷积核、选择较小的跨步,这个网络的精度高,不过计算量是Alexnet的7倍。
不管选择哪种神经网络模型,运用神经网络的目的都是提取region图像的特征。传统我们利用HoG或者SIFT得到特征点的表示,是经验驱动的。在机器学习中是由机器利用已有的标签,“自主”地得到样本的表示,是数据驱动的。在师兄那里看到他做的人脸识别,我一开始还不理解,以为是有一个高维向量,比如包含眼睛距离、鼻子高度等信息来比较当前摄像头捕捉的画面和本地带标签的图像的向量来比较,事实上也确实应该是这么比较的,只不过是机器自己决定用哪些数据构成高维向量。
训练的过程又分为预训练和调优训练。预训练的数据使用的是ILVCR 2012,提取的特征为4096维,之后送入一个4096->1000的全连接(fc)层进行分类。输入一张图片,输出1000维的类别标号。调优训练(fine-tuning),同样使用上述网络,最后一层换成4096->21的全连接网络,采用随机梯度下降法SGD。使用PASCAL VOC2007的训练集,输入一张图片,输出21维的类别标号,表示20类+背景。
有监督预训练也叫迁移学习。比如说已经训练了CNN网络用于人脸年龄识别,当我们需要进行人脸性别识别的时候就可以将最后一层或者几层更换,而保留之前几层的参数。这样可以解决小样本数据训练造成的网络过拟合的问题。ILSVRC样本集上用于图片分类的含标注类别的训练集有1millon之多,总共含有1000类;而PASCAL VOC 2007样本集上用于物体检测的含标注类别和位置信息的训练集只有10k,总共含有20类,直接用这部分数据训练容易造成过拟合,因此文中利用ILSVRC2012的训练集先进行有监督预训练。
但是,CNN要求输入的图像是固定大小的,227*227,而第一步提取的候选区域大小不一,所以我们需要对其进行缩放。各向异性缩放是直接进行插值,会造成在水平或者垂直方向被拉长。各向同性缩放又分两种,当region小于227*227时,我们可以扩张bounding box的边界,也可以用均值填充成正方形的。
SVM
在得到特征的表示(4096维,由神经元个数决定)之后,我们需要将特征送入SVM分类器。这个时候的样本分为正样本和负样本(和本类所有标定框的重叠都小于0.3)。
SVM支持向量机其实是可以支持多分类的,即SVMs分类器。但是论文不是对21个类(别漏了background类哦)使用一个SVM,而是使用了One-Versu-All的方法,对每个类别都使用个SVM(这里只需要20个SVM,想想为什么?)。方法很简单,对于每个类别来说,一个Region如果不是该类别,那就是背景。由于负样本很多,使用hard negative mining方法。
回归器
第四步是使用回归器精细修正候选框的位置,我们目标不仅仅是识别正确,还要加大重叠面积,加大精度。
黄色框口P表示建议框Region Proposal,绿色窗口G表示实际框Ground Truth,红色窗口G^表示Region Proposal进行回归后的预测窗口,现在的目标是找到P到G^的线性变换【当Region Proposal与Ground Truth的IoU>0.6时可以认为是线性变换】,使得G^与G越相近,这就相当于一个简单的可以用最小二乘法解决的线性回归问题。
回归对象是最大IOU的候选区域,20个类别构造20个样本对。每种类型的回归器单独训练。
Reference:
1.下载链接http://islab.ulsan.ac.kr/files/announcement/513/rcnn_pami.pdf
2.http://xueshu.baidu.com/s?wd=paperuri:%286f32e0834ddb27b36d7c5cda472a768d%29&filter=sc_long_sign&tn=SE_xueshusource_2kduw22v&sc_vurl=http://arxiv.org/abs/1311.2524&ie=utf-8&sc_us=2810736414368325775
3.https://blog.csdn.net/shenxiaolu1984/article/details/51066975
4.实训周报https://blog.csdn.net/u012767526/article/details/51849102
5.问题https://blog.csdn.net/wopawn/article/details/52133338
6.IOU http://shartoo.github.io/RCNN-series/