R-CNN阅读重点
R-CNN原论文地址 https://arxiv.org/pdf/1311.2524.pdf
Introduction
R-CNN在自下而上的候选区域上应用大型卷积神经网络,以此来定位和分割目标。当标记的训练数据稀缺时,R-CNN先对一个辅助任务进行有监督的预训练,再进行域特定微调,并作非极大值抑制处理,论文里在ISLVRC2012上监督预训练,再在Pascal VOC上微调,这么做使性能有比较好的提升。
R-CNN Detection System
rcnn的检测流程如上图所示,(1)先输入一张图片,(2)通过选择性搜索(将图片划分成多个子区域,然后通过颜色,纹理等进行合并迭代。)方法选取约2000个候选区域,然后将每个候选区域都缩放到227*227的维度,(3)再输入到卷积神经网络中,得到一个固定长度的特征向量(4096维),(4)之后在将得到的2000个4096维特征向量输入到特定类的线性支持向量机(有21个,Pascal VOC有20个类别+背景)进行打分,并作非极大值抑制处理。
Network
R-CNN的网络结构沿用AlexNet的结构,但在微调之后去掉了最后一个全连接层。
Module design
R-CNN模块设计包括候选区域生成、特征提取、特定类的线性支持向量机。
Bounding-box regression
在经过误差分析之后,为了减少定位错误,训练了一个边界框回归器,提取pool5的特征预测一个新的边界框。
回归器训练的输入:一组(P, Q)训练对,P是指候选区域的框,Q是指真实框,Q-hat是指新预测的边界框。
回归器的学习目标是P映射到Q的转换,用d*将转换参数化,d*是指从P映射到Q-hat的转换。
回归器的损失函数如图右上所示,计算的是t*和d*差的平方,t*其中t*是指从P映射到Q的转换。
Different object proposal transformations
关于缩放,论文中提了几种方法,首先是论文中使用的暴力缩放(D),先给图片(A)填充一些padding,然后直接缩放到227*227,使得没加padding缩放的边界到加padding缩放的边界是16个像素点,这种方法是各向异性缩放。还有各向相向缩放,先将图片填充成正方形再缩放到227*227,这又分为用图片信息填充(B)和用灰度填充(C)。
Visualizing learned features
论文中提出了一种将学到的特征可视化的方法,pool5的维度是6*6*256,在输入的227*227的候选区域上对应256个195*195的感受野。
特征可视化步骤:
(1)在pool5中取一个特定的6*6单元,
(2)计算每个候选区域到这个单元的激活值,
(3)按激活值从大到小的顺序排序,并作非极大值抑制处理。
如上图所示的示例结果,论文作者也由此得出了前5层卷基层提取的是基础特征,后2层全连接层提取的是一些特定的特征。
Innovation
首先,cnn参数在所有类别中共享。
其次,cnn计算的特征向量是低维的,比之前的算法低2个数量级。
Results
Test on VOC2007
前3行是微调之前的结果,之后的4行是微调之后的结果,微调之前全连接层的存在并不是很必要,微调之后全连接层的必要性就显露出来了。
Test on VOC2010
加了边界框回归后,精度提升了3、4个百分点。
Test on ILSVRC2013
R-CNN的检测精度在当时处于领先的位置。
Error analysis
Loc:定位错误
Sim:相似类别混淆
Oth:不相似类别混淆
BG:背景误检
第一行是对animals的错误分析,第二行是对furniture的错误分析。微调之后不相似类别混淆和背景误检率明显降低,加了边界框之后定位错误则大幅减少,但是相似类别混淆也有所增加。
注:本页面绝大多数图片来自原论文,小部分图片来自网络博客,引用本博文请注明出处。