关键见解
- 将CNN应用于自下而上的候选区域,对目标进行定位和分割
- 当缺少标签训练数据是,对辅助任务进行有监督的预训练,再对特定领域进行微调,即迁移学习
结果
- 比先前VOC 2012上的最好的评价指标mAP提升了30%,达到了53.3%
思路
- 对输入图像提取大概2000个自底向上的候选区域
- 使用CNN对每个候选区域计算特征向量
- 根据特征向量,使用具体类别的线性SVM判断每个候选区域属于该类的可能性(每个类别对应一个SVM分类器)
难点
- 使用深度网络对目标进行定位
- 使用少量的标注数据训练一个高性能的模型
与图像分类不同,目标检测需要在一张图片中对物体进行定位。本文采用的是滑动窗口方法。
实现细节
模型设计
候选区域:
现在有很多生成候选区域的方法:
- objectness
- selective search
- category-independent object proposals
- constrained parametric min-cuts(CPMC)
- multi-scale combinatorial grouping
- Ciresan
本文采用的方法是selective search.
特征提取:
使用Krizhevsky等人描述的CNN的基于Cafe的实现(Alexnet),从每一个候选区域总提取一个
4096
4096
4096 维的特征向量.
为了与CNN的格式相兼容,需要先将图像转换成
227
×
227
227\times227
227×227 大小,此处本文采用的方法是:
不管候选区域的大小和长宽比,we warp all pixels in a tight bounding box around it to the required size. Prior to warping, we dilate the tight bounding box so that at the warped size there are exactly p pixels of warped image context around the original box(本文取p=16)
测试阶段
思想
- 在测试图像上使用selective search 提取大约2000个候选区域。
- 对每个候选区域变形并通过CNN前向传播,从所需层中获取特征向量。
- 对每一个类别,我们使用为这个类别训练的SVM为每一个提取的特征向量打分。
- (该步骤每个类别单独的执行)根据图片中每个候选区域的分数,本文使用非极大值抑制方法,如果某个区域与得分最高的候选区域的IoU大于某个阈值,就舍弃它。
分析
使得检测效率高的原因有两个:
- 所有类别的CNN参数是共享的
- 相比于其它的方法,CNN计算得到的特征向量维度更低
训练阶段
有监督的预训练
使用大型的标注数据集ILSVRC 2012(没有边框标签)对CNN进行预训练
特定领域的微调
为了将刚刚训练的CNN应用于新的任务(识别)和新的领域(VOC),继续使用VOC转化好的候选区域,使用SGD对CNN的参数进行训练。除了用21个类别层(VOC包括20个类别+1个背景类别)替换CNN的ImageNet的1000个类别外,CNN的结构没有改变。
如果候选区域与ground-truth box的IoU>0.5,则该候选区域是positive;其它的为negative.
SGD的学习率初始值为0.001,在每一个SGD迭代中,统一采样32个positive窗口(包括所有类)和96个背景窗口,构建一个大小为128的mini-batch。
目标类别分类器
本文设定了IoU阈值,与ground truth重叠区域小于这个阈值的区域被判定为negative.
一旦特征抽取成功并且应用了训练标签,会对每个类优化一个线性SVM.
由于训练数据太大无法存储时,本文使用standard hard negative mining method.
需要学习
- selective search
- mini-batch 梯度下降
利用一部分样本数据来近似的计算整体,就是用随机选择的小批量数据(mini-batch)作为全体训练数据的近似值。 - 阅读后半篇可视化以及其它方面的分析内容
如有问题 请多多指正