您的位置:首页 > 移动开发 > Objective-C

论文笔记 《Rich feature hierarchies for accurate object detection and semantic segmentation》

2016-01-07 23:23 966 查看


论文笔记 《Rich feature hierarchies for accurate object detection and semantic segmentation》

项目地址:https://github.com/rbgirshick/rcnn

论文地址:http://www.cs.berkeley.edu/~rbg/#girshick2014rcnn

附上笔者seminar时候做的ppt
注:小标题中如果有序号,则对应原论文结构中的序号


系统简述





R-CNN概括起来就是selective search+CNN+L-SVM的检测器
很简(cu)单(bao)的框架:
用selective search代替传统的滑动窗口,提取出2k个候选region proposal
对于每个region,用摘掉了最后一层softmax层的AlexNet来提取特征
训练出来K个L-SVM作为分类器(每个目标类一个SVM分类器,K目标类个数),使用AlexNet提取出来的特征作为输出,得到每个region属于某一类的得分
最后对每个类别用NMS(non-maximum-suppression)来舍弃掉一部分region,得到detection的结果(对得到的结果做针对boundingbox回归,用来修正预测的boundingbox的位置)


2 Object detection with R-CNN

这部分对上面3个部分进行了更详细的介绍


2.1 Model design

Region proposals:这部分是用来替代传统的sliding windows的,文中提到的方法有objectness,selective search,CPMC等。作者说他最后选择了selective search是为了后面方便做对比试验。
Feature extraction:也就是使用CNN,具体来说是AlexNet来提取特征,摘掉了最后一层softmax,利用前面5个卷积层和2个全连接层来提取特征,得到一个4096维的特征。一个值得注意的细节是如何将region缩放到CNN需要的227*227,作者是直接忽略aspect ratio之间缩放到227*227(含一个16宽度的边框,原region向周围扩大16个像素,包含一些背景信息,超过的补色,然后再wrap到227*227,
见附录A),这样的好处是稍微扩大region,将背景也包括进来来提供先验信息。


2.2 Test-time detection



2.3 Training

Supervised pre-training:先用imagenet120w的cls数据训练一个模型(出来的效果比alex差2%)
Domain-specific fine-tuning:将上面训练出来的模型用到new task(dection)和new domain(warped region proposals)上,作者将最后一个softmax从1000路输出替换成了N+1路输出(N个类别+1背景)。然后将IoU(intersection-over-union-score)大于50%的region当成正样本,否则是负样本。将fine-tuning学习率设置成pre-train模型中的1/10(目的是为了既能学到新东西但是不会完全否定旧的东西)。batch为128,其中正负样本比例是1:3。
Object category classifiters:选择SVM对每一类都做一个二分类,在选择样本的时候,区分正负样本的IoU(intersection-over-union-score)取多少很重要,取IoU=0.5时候,mAP下降5%,取IoU=0,mAP下降4%,作者最后取了0.3,用的是grid
search(应该算是穷举逼近的一种)。


3.Visualzation, ablation, and modes of error


3.1 Visualzing learned feature

核心思想是在pool5中一个神经元对应回去原图的227*227中的195*195个像素(术语是pool5神经元的感受野是195*195)。

可视化的方法是将10M的region在训练好的网络中FP,然后看某个pool5中特定的神经元的激活程度并且给一个rank。出来的高分的图片如下图:




3.2 Ablation Studies




Performance layer-by-layer, without fine tuning,这里想说明的是,用pool5,fc6,fc7的特征做SVM分类,出来的效果都差不多。作者得到的结论是:CNN的特征表达能力大部分是在卷积层。
Performance lyaer-by-layer, with fine tuning,这里想说明的是,pool5经过finetuning之后,mAP的提高不明显,所以卷积层提取出来的特征是具有普遍性的,而fc7经过finetuning后得到很大的提升,说明finetuning的效果主要是在全连接层上。
Comparision to recent feature learning methods,这里主要说明CNN的特征学习能力比其他方法要好。


3.3 Detection error analysis

用了一个工具来分析错误


3.4 Boundary-box regression

作者最后还是用了regression的方法来进一步定位物体的,这样子使得mAP提高了4个点。


Appendix


A. Object proposal transformations





用了不同的缩放方法,最后作者用的是(d)的第二列的方法,准确率的差别大概是3-5个mAP


B. Positive vs. Negative examples and softmax

这里作者想讨论的是,为什么训练CNN时候和训练SVM时候,使用了不同的标准来定义正负样本。感觉还是调参调出来的。

另外作者讨论了为什么最后用SVM替代softmax,因为效果会提升4个点,作者认为原因在于softmax中的背景样本是共享的,而SVM的背景样本是独立的,更加hard,所以能够带来更好的分类效果。


C. Bounding-box regression

最后作者在region proposal中再次做了一个regression。(这是有道理的,因为当时生成样本时候加了一个16像素宽的padding,所以出来的detection bbox是偏大的,做regression刚好可以应付这个情况)


F. Analysis of cross-dataset redundancy

这里说明了VOC和imagenet数据的重叠是很小的,1%以下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  RCNN 深度学习