Object Detection Networks on Convolutional Feature Maps
2015-11-29 22:46
441 查看
免责声明:本文仅代表个人观点,如有错误,请读者自己鉴别;如果本文不小心含有别人的原创内容,请联系我删除;本人心血制作,若转载请注明出处
摘要1、所有的特征提取器包括两个重要部分:特征提取器和目标分类器。
2、特征提取受到巨大关注,产生了深度卷积网等优秀特征提取方法,但是目标分类器木有受到同等关注,如R-CNN只 是用了多层感知器等目标分类器;
3、本文重点:设计深度网络用来分类也非常重要;
4、我们从之前经典部分可变模型(DPM),具有局部相似滤波器和对隐层单元探究的深层网络上得到灵感。
5、发现 1> 预训练的卷积特征图,哪怕是随机初始化的深层分类器产生较好效果,微调在其中占得重要性并不是最高 的;
2> 对于 HOG(方向梯度直方图) 特征,深度分类器比DPM表现好,不依赖外部数据也得到了最好的HOG-only 结果。
6、本文方法:Networks on Convolutional features maps (NoC)
7、平均正确率均值(Mean Average Precision)。
介绍
1、之前的特征提取往往是手工模型,如HOG,分类器往往是线性分类器如SVM,在后来就是核SVM;
2、近些年,深度卷积网取得重大成功,如:R-CNN,从预训练好的Imagenet分类网络,接下来,为了检测目标从头到尾微调,
3、尽管这些方法模糊了特征提取和分类器之间的界限,但是一个逻辑划分还是可以被提出;
4、R-CNN可以看做是一个卷及特征提取器,最后面是一个下采样曾,接一个多层感知器
5、为了弥补传统检测和深度卷积网之间的差异,提出了两个方法之间的混合模型:特征提取器用预训练好的深度卷积网,但是分类器还是之前的模型,例如DPM或者改进的模型,这些方法确实比HOG/SIFT/LBP-based等方法要好,但是还是木有R-CNN的性能好,即使DPM用深度卷积网提取出来的特征进行end-to-end训练,但是这个正确率很接近R-CNN的分类器是线性SVM时,(不是全连接的时候);
6、SPPnet取了一个假设模型和R-CNN模型之间的折中,但是它更接近混合模型,用一个预训练好的深度卷积网作为特征提取器,但是从分类器角度来说,用了一个微调的多层感知器,更像R-CNN,SPPnet的性能更接近R-CNN,比混合模型要好很多;
7、现在的基本策略就是:用一个预训练好的深度卷积网(有或者木有微调)提取特征,用调整好的MLP(多层感知器)作为分类器,基于此:我们提出了,两个问题1> 我们能够找到一种比多层感知器更好的分类器;2> 对于区域化分类说,微调到底有多重要?
8、我们通过卷及特征图(实验框架),(Networks on convolutional feature maps),NoCs(简写),我们提出了融合的,预训练好的深度卷积网作为特征提取器,实验不同的NoC框架,每个都实现了一个目标分类
9、是否有一个更好的分类器?我们设计和测试了三种Noc框架:不同深度的多层感知器,不同深度的卷积网,使用maxout策略的隐藏尺度选取;
分类器微调到底有多重要? 我们训练了NoCs从随机初始化和从预训练好的ImageNet的权重,我们认为在mAP上面的相对提高来自于NoC设计为已调整好的(微调)
10、毫无疑问,与训练加上微调肯定效果好,但是一个设计很好的NoC(ConvNet with maxout)性能也很好当随机初始化的时候,来自NoC设计的提高要比来自微调的提高更重要(就是使用maxout这种策略更重要);
11、这些结果揭示具有新的检测特性的分类网络,例如增加在部分模型增加卷积层,maxout策略用来隐藏尺度选取;
12、这些发现说明:在特征提取器的顶端加上深度分类网络是一个很好的策略。
13、一个很鼓舞人心的假设:一个设计好的NoC分类器,使用HOG特征,要比之前的HOG分类器要性能优异。为了验证这个假设:我们基于HOG特征。做了实验,得到了39%mAP,只训练PASCAL数据集,至今最高,说明了我们方法的通用性;
14、这些结果说明了:混合模型和分类器之间的真正性能差异在于分类器;
15、最后,实验很深的卷积网通过NoCs,使用这种方法,工作的更为良好。
相关工作
1、传统的目标检测方法:HOG特征,线性SVM分类器;DPM使用可变图模型,隐藏SVM作为滑窗分类器;SIFT矢量的空间金字塔特征,核SVM 分类器;HOG,LBP,卷及特征的组合。
2、卷积特征图:overfeat,SPPnet
实验设定
1、数据集 PASCAL VOC 2007,2012。
PASCAL VOC 2007 有20类,用mAP作为性能参考,测试集:5K images
训练图像:1> 原始的训练图像(5K images)在VOC2007
2> 16Kimages。包括 PASCAL VOC 2007VOC2007 和 VOC 2012 训练图像
测试图像测试NoC性能在VoC2012测试集上,使用评估方法。
2、预训练模型 采用在1000类的ImageNet数据集上训练得到的深层CNNs作为特征提取器,我们探讨了ZFmodel 和 VGG model,ZF
model有五个卷积层和三个全连接层,我们使用了有一个SPP 层的ZF model,VGG 16/19 model 有13/16卷积层和3个全连接层。
方法
1、区域提取:给定一个图片,使用预训练的模型来计算整个图像的卷积特征图,我们从多尺度图里面提取特征图,这些特征图是固定的,预训练的卷积层不会进一步调整了,我们也提取出了2000个待选区域,每个提议的矩形框边
界投射到卷积特征图;空间特征区域可以是任意空间尺寸,我们产生了一个固定分辨率的特征图区域通过一个有固定输出分辨率的区域池化操作;我们定义了一个期望输出分辨率m*m,即在预训练模型的最后一个池化层的输出空 间尺寸。对于一个任意特征图区域尺寸w*h,我们产生了m*m的的输出,通过做大池化,大小为w/m
* h/m,这个操作是SPP的一个特殊情况。在这里,金字塔只有一个空间分辨率 m*m,池化特征图区域可以被认为tiny多通道图像 的;
2、训练和推理:
我们认为特征图区域的小图作为新数据源,设计不同的NoC区域来验证数据,NoC结构有多层,最后一层是分类器,每个NoC训练BP和SGD,使用由检测训练集产生的小图像,在网络训练阶段后,我们使用second-to-last 全连接层从区域提取特征,为每一类训练一个线性分类器作为特征,就像R-CNN,作为参考,特征图区域的小图像提取到NoC直到一个线性分类器的最后一层,然后SVM分类器去为每一个区域打分。
卷积特征图的网络
1、Noc作为一个MLP
我们使用2-4个全连接层 ,例如 f4096-f4096-f21,(前两层为修正线性单元,最后一层为softmax)f 代表全连接层,21代表VOC的种类数,当使用ZF时,在第一个全连接层前面我们使用了多尺度池化,在m*m=6*6的特征图区域,我们使用了空间尺寸{3*3,2*2,1*1},6*6和池化的得到的特征图连接起来输入到第一个全连接层
file:///media/root/0CFCB657FCB63B32/1.png
Table1
show:使用MLP作为NoC通过高斯分布随机初始化权重,所以Noc 架构可以公平比较, NoC并木有预训练,结论:多层网络模型要比单层SVM性能要好;
2、NoC
as a ConvNet
多层感知器的第一个全连接层可以被看做多个元素的集合,就像DPM的root filter,从part-filter这里得到灵感,我们试着往Nocs添加卷积层,所有的全连接层后面都跟着RELU。
In table2 show: 没有卷积层和多个卷积层之间的性能比较。
分析:加卷积层确实比不加性能要好,因为VOC 07的训练集很小,所以卷积层数变多时,性能并没有提高,但是在VOC 07+12 的训练集上,性能得到提升,所以如果有足够庞大的数据集,多个卷积层的性能应该是越来越好的。
3、Maxout for Scale Selection
我们的卷积特征图是从多个不相连的尺度上提取得到,也就是特征金字塔,接下来,我们使用一个局部竞争操作到NoCs上来提高特征金字塔的选取尺度。一个区域特征从单一尺度池化,为了增强尺度和之间的差异性,对每一个区域我们选择两个想进尺度的特征图,两个固定分辨率(m*m)的特征被池化,NoC模型有两个数据源。maxout操作可以被加在任何一个中间层,在maxout之前有两个路径,我们让这两个路径共享权值。
由Table3 可以看出,用上maxout策略后,性能确实有所提升。
4、Fine-tuning
使用预训练好的模型来微调NoCs,我们初始化两个全连接层是通过预训练模型的两个相对应的全连接层来初始化的,对于新增加的卷积层要被初始化为大小与特征图恒等的map,这样的话初始化的网络就与预训练的3个全连接结构相同
微调对于分类起来说到底有多重要?
毫无吃惊,maxout 2-conv NoC mAP 62.9%,但是随机初始化的NoCsdn性能液非常优异,与SVM相比,使用相同特征,随机初始化提升13.0%,加上微调后,只是又提升了2.2%而已,这说明,对于分类器而言,通过网络得到的性能提升要比微调要大。
我们的实验揭示一个精心设计的深度分类器是目标检测的一个不可或缺的元素,受限于训练集的大小,我们并没有做到很深的网络,但是性能已经比SVM好很多了。
不过,我们并没有轻视微调的作用,不管什么时候,只要可行,我们都会做微调和end-to-end训练,也期望可以得到更好的效果,不过这个很难,我们还没有做这个问题,但是我们的整个流程可以由图1表示,正向传播和反向传播都可以实现,我们打算接下来做这个工作。
5、Using very deep Pre-trained Models
我们发现NoCs可以受益于深层预训练模型,与预训练的深度特征是互补的。
可以看到深度网络确实性能又有所提升,而且结果也跟之前的结论一一对应。
错误分析
分析可以看出一个深层网络NoC可以有效地减小局部错误,但是识别错误更多是靠深层预训练模型减小的。
卷积特征图的网络
分析可以看出一个深层网络NoC可以有效地减小局部错误,但是识别错误更多是靠深层预训练模型减小的。
HOG
特征,31维,对于每个区域空间分辨率 24*24,24*24*31的特征作为NoCs的输入,没有使用其他特征,池化为空间金字塔特征,分辨率为:{6*6,3*3,2*2,1*1},输送到全连接层,NoC随机初始化,使用VOC 07训练集,不使用其他数据。
这个实验揭示了混合模型DPM+CNN和R-CNN/SPPnet之间的性能差异,DPM在分类性能上讲木有多层网络性能好,不管是深度卷及特征或者千层HOG特征。
实现
Results
Table
7 show:PASCAL VOC 2007,使用VGG-16 模型
结论和下一步工作
1、深度分类器与深度特征提取器一样重要;
2、微调并不是设计目标检测器的唯一手段;
3、深度分类器收益于训练数据的增大;
4、我们推测end-to-end训练+深度特征可以产生更好的效果(下一步工作)。
相关文章推荐
- WebKit之addToJavaScriptWindowObject()分析
- Page Object Model (Selenium, Python)
- 黑马程序员——Java笔记——Object类
- Objective-C 继承和多态
- 自学objective-c,靠什么坚持?
- 黑马程序员--eclipse和Object类(day08)
- Objective-C(一)面向对象
- 熟悉Objective—C
- Object-C,循环语句for,while,do-while
- Object-C,循环语句for,while,do-while
- Object-C,循环语句for,while,do-while
- Objective-C:swift、objective-c、C++、C混合编程
- RegAsm注册DLL组件使用jacob调用的问题com.jacob.com.ComFailException: Can't co-create object
- (一)Course Learning Objectives【The Arduino Platform and C Pro】
- Object-C,文件路径API
- Object-C,文件路径API
- Object-C,文件路径API
- 从今天开始学习ios,入门第一天(Object-C学习笔记)自动引用计数和为类添加属性
- Object-C,遍历目录
- Object-C,遍历目录