背景:2014年在经典的voc数据集上,目标的检测性能趋于稳定。最好的方法就是通过融合多个低级图像特征从而得到高级特征的系统(一个融合了多个有高级上下文的低级图像特征的系统)。
重点:1.在候选框上应用了CNN网络来定位和分割目标。 2.当有标注数据有限时,先对辅助任务进行有监督地预训练,然后再在特定任务上微调,会得到明显的性能提升。
RCNN设计之初:是应用recognition in region策略,应用CNN提取图片的区域特征,用来分类(区分前景背景,以及具体的类别)。实验中发现,检测误差主要来源于定位不准,增加了一个简单的box regression后检测精度大大提高。
用CNN作为特征提取器的优点:
1. 不同分类别共享权值,节省计算时间,节省内存,简化后面的分类模型参数量。
2.可以很容易地扩展类别数目,而不用借助哈希之类的近似技术。
阅读
Introduction:常用的方法是建立一个滑窗检测器。在过去二十年,这种方法也采用了CNN。为了保持较高的空间分辨率,这些CNN一般只有两层卷积和池化。我们也考虑使用滑窗策略。但是由于我们的CNN网络较深,使得滑窗方法中的精确定位成为了一个挑战。
因此我们选择使用“recogniton using regions”策略解决这一问题。这种方法在检测和分割上都是可行的。
模型设计:
- 使用选择搜索给出proposal的原因是:便于与之前的方法进性比较。
- 特征提取:使用一个5层卷积,两层全连接的网络,提取4096维特征向量。图片减去平均值,图片尺寸227x227, wrap images,忽略了图片的宽高比。
- 用voc分类数据进行分类模型finetune训练:
-
-
- 在ImageNet数据集上训练一个1000类别的CNN网络。lr=0.01
- 再将网络输出改成N+1,在wrap图片上进行微调。用SGD进行参数更新。lr=0.001.
- treat所有的region proposal策略:如果与GT的Iou >= 0.5,则认为是正样本,否则为负样本。
- 每一次迭代,均匀采样128个样本,其中32个正样本,96个负样本。之所以这么设计是因为现实中正样本本来就少于负样本。
-
- 目标类别分类器:提取完特征后,对每一个类优化一个线性的SVM分类器。
-
-
- Iou == 0,backgroud
- iou > ? , foreground 也就是对于部分包含目标的box如何界定其属于背景还是前景。最后通过在验证集上对[0,0.5]之间的值进行试验,得到一个最合适的iou threshold = 0.3 iou <= 0.3, backgroud
- Positive examples are defifined simply to be the ground-truth bounding boxes for each class.
- 由于训练数据太大,采用了标准的困难负样本挖掘方式。该方式收敛很快,map也在所有样本完成一次训练后就停止增长。
-
- ??对于训练CNN模型和SVM时对正负样本的定义不同的解释:
在训练分类SVM时使用与训练CNN模型一样的定义,发现效果很差。iou在(0.5,1)之间的proposals,但却不是gt,使得正样本是现在新策略的将近30倍之多。我们猜想这么大的数据集在微调CNN时可以避免过拟合。然而,对于网络精确定位却不是最佳选择。
??为甚不用CNN模型出来的softmax分类器直接判断目标类别。我们做过实验,发现直接用softmax分类,map为50.9%(svm 54.2%)。我们推断可能是:finetune时正负样本的定义没有强调精确定位,而softmax分类在随机采样的负样本上训练,而不是在(svm的)困难负样本上。
- ILSVRC2013数据集的使用
- 该数据集的train里的数据并没有并完全标记,val和test被完全标记了,而且两者具有相同的分布。而且该数据集的分布很不均衡。train数据集里大部分图片是目标位于中心的单目标图片。train中的每一个类都有一个额外的负样本集,该集是通过仔细挑选的,保证里边没有该类的目标。
- train数据集不能用作困难负样本挖掘,因为里边有未标记的数据。
- 将val数据集均分成两份,一份用于训练,一份用于验证。用搜索聚类算法分出一些不同的数据集,选择类别平衡度好一些的split数据集。
- finetune : 正样本:val1和trainN的gt, 负样本:从val1随机采样的图片。bb regression是用val1训练的。
- box regression 该模块可以提高定位精度
在训练过程中发现有两点很重要:
-
- 正则化很重要, λ=1000
- 选择那些训练数据来训练(P,G)。 由于选择一个离G很远的P来回归没有意义。因此我们选择与P的iou最大的一个G, 并且iou>0.6。没有被选中的P舍弃。每一种类别都回归一次,最后得到一个与类别相关的bounding-box regressor。