人和动物的区别之一是人能使用工具,而在人开始使用磨制石器时人类进入新石器时代。在目标检测领域,也有一个划时代的算法,在它之后目标检测开始进入深度学习的时代——它就是今天的主角:R-CNN。在RCNN之后,出现了更多优秀的CNN算法:Fast-RCNN,Faster-RCNN,YOLO等。
作为时代的分水岭,RCNN利用了CNN提取特征的强大之处,同时利用了传统方法和机器学习的方法,最终达到了不错的效果。RCNN大致分为以下几个步骤:
1.候选区域生成;
2.CNN特征提取;
3.SVM分类;
4.回归器特征box位置;
候选区域生成
目标检测的核心就是分类classification+定位location,定位就是用矩形框选定目标物体。候选区域生成其实就是一个粗定位:得到一些大概率是目标的区域。具体的方法有滑窗,分割等。R-CNN使用的是Selective Search。在特征上,SS利用了纹理,颜色等信息;在多样性上,SS尝试了多种起始点,多种相似度策略,多种色彩空间;在流程上,SS使用Hierarchical Grouping Algorithm,这是一种自下而上的思想,不断地合并细小的区域,得到整幅图像时停止。最终SS会得到约2000张候选区域。
与sliding windows相比,得到的regions数量少,且具有一定的语义。
CNN特征提取
以往的特征提取方法都是手动设计,如方向梯度直方图(Histogram of Oriented Gradient, HOG),SIFT等,而CNN强大之处就在于可以提取到深层次的特征。可以直接使用ILSVRC训练好的模型,然后再在PASCAL VOC上进行迁移学习。这一阶段是依靠监督学习分类来学习特征。Alexnet精度是58.5%,VGG16精度是66%。VGG这个模型的特点是选择比较小的卷积核、选择较小的跨步,这个网络的精度高,不过计算量是Alexnet的7倍。RCNN使用的是AlexNet的finetuning版本。(Alexnet是CNN五大经典模型(Lenet1986,Alexnet2012,Googlenet2014,VGG2014,DeepResidual learning2015)之一,也是最经典的算法,赢得了当年的ImageNet比赛冠军,使CNN成为图像分类中的核心算法模型。相关论文出自NIPS2012,作者是大神Alex Krizhevsky,属于多伦多大学Hinton组。《ImageNet Classification with Deep Convolutional Neural Networks》)
在迁移学习中有三点需要注意:1.预训练分类模型是1000类,VOC中是20类(加上背景是21类),所以需要调整全连接的大小;2.输入是第一步中得到的候选区域,而因为全连接的存在,需要将输入归一化到尺寸相同;3.VOC的类别标签是针对定位框的,只有当候选区域的框位置与标签的定位重合到一定程度时才认为是正样本。
关于第二点的归一化方法有几种可选的方法,分别是直接各向异性缩放warp和crop。第二种又分先扩充后裁剪和先裁剪后填充。经过最后的试验,作者发现采用各向异性缩放、padding=16的精度最高。
关于第三点,如何量化重合度需要引入IoU的概念,其含义是两个区域的交集和并集之比。大于0.5则认为该region的label与GT一致。
SVM分类器
之前使用的CNN表面是在分类,但真正目的其实只是提取特征,提取特征之后,每个候选框可以得到一个4096维的特征向量,使用得到的CNN特征再输入线性SVM中训练分类器。为什么要“画蛇添足”般地使用SVM呢?因为CNN容易过拟合,所以期望样本数目多一些,所以在判断正样本的时候条件比较松,IoU>0.5就认为是正样本。而SVM本身是结构风险最小,以SVM为分类器时改变了正负样本的判定条件:候选框完全包含GoundTruth的定位框才是正样本,当IoU<0.3时是负样本。
SVM支持向量机其实是可以支持多分类的,即SVMs分类器。但是论文不是对21个类(别漏了background类哦)使用一个SVM,而是使用了One-Versu-All的方法,对每个类别都使用个SVM(这里只需要20个SVM,想想为什么?)。方法很简单,对于每个类别来说,一个Region如果不是该类别,那就是背景。由于负样本很多,使用hard negative mining方法。每个SVM判断候选框是否属于这一类。对于2000个候选框,属于第i类的得分进行降序排列,可以使用NMS去除重叠的候选框。
(非极大值抑制(NMS)先计算出每一个bounding box的面积,然后根据score进行排序,把score最大的bounding box作为选定的框,计算其余bounding box与当前最大score与box的IoU,去除IoU大于设定的阈值的bounding box。然后重复上面的过程,直至候选bounding box为空,然后再将score小于一定阈值的选定框删除得到这一类的结果(然后继续进行下一个分类)。
回归器
即便得到了概率相对较大的候选框,它的定位仍然可能不准确,这里可以使用回归器进行位置的微调。输入仍然是4096维的特征向量,输出是x,y方向上的缩放和平移,这意味着可以改变候选框的大小和位置。当IoU>0.6时认为是正样本。
黄色框口P表示建议框Region Proposal,绿色窗口G表示实际框Ground Truth,红色窗口G^表示Region Proposal进行回归后的预测窗口,现在的目标是找到P到G^的线性变换【当Region Proposal与Ground Truth的IoU>0.6时可以认为是线性变换】,使得G^与G越相近,这就相当于一个简单的可以用最小二乘法解决的线性回归问题。
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.实训周报实训周报2--RCNN论文解读_LiemZuvon的博客-CSDN博客
5.问题https://blog.csdn.net/wopawn/article/details/52133338
6.IOU http://shartoo.github.io/RCNN-series/