PVANET论文阅读笔记

论文地址:https://arxiv.org/pdf/1608.08021.pdf
项目地址:https://github.com/YgRen/TFFRCNN
注:本文是我在2017年6月读的一篇文章,这篇文章最初开源的代码是这个地址: https://github.com/CharlesShang/TFFRCNN ,估计不是原作者,后来在测试时,发觉有问题我直接fork了一下,重写了demo测试页面,然后这个项目的PVANet的Train和Test部分网络结果都存在问题,我在本地进行了重写,如果有需要的话我近期会传到Github上去。具体的使用实现可参见
PVANET的配置安装及使用
本文是发表于 NIPS 2016上的一篇文章,PVANET是韩国研究者(Intel Imaging and Camera Technology)结合了最新的技术,在TITAN X上实现了轻量级模型的实施目标检测任务,在PASCAL VOC上取得了第二名的成绩。 PVAnet是RCNN系列目标方向,基于Faster RCNN进行改进,Faster-RCNN的基础网络可以使用ZF、VGG、Resnet等,但精度与速度难以同时提高。PVAnet的含义应该是Performance Vs Accuracy,意为加速模型性能,同时不丢失精度的含义。

摘要

本文提出的方法通过调整和结合最近的技术创新来最小化计算代价(cost)在多类目标检测任务中取得了state-of-the-art的准确率。采用“CNN Feature Extraction + Region Proposal +ROI Classification”的结构,主要对特征提取(feature Extraction)部分进行重新设计。主要是因为Region Proposal部分计算量并不太大,而Classification部分可以常见的技术(如 truncated SVD)进行有效压缩。本文的设计原则是采用“less channels with more layers” 和采用一些building blocks,包括 concatenated ReLU、Inception、HyperNet。设计的网络是deep且thin的,在BN(batch normalization)和残差连接(residual connections)和基于plateau detection的laerning rate的调整的帮助下进行训练。在VOC2007上获得83.8%的mAP,在VOC2012上获得82.5%的mAP(第二名),而每张图片在单核Intel I7-6700K CPU上耗时750ms,在NVIDIA Titan X GPU上每张图只需要46ms。理论上,本文采用的方法,比较于VOC2012比赛的冠军ResNet-101之需要花费12.3%的计算代价。

1.引言

近几年CNNs在目标检测领域获得了巨大的提升。由于一些突破性的工作,现在的目标检测系统已经满足了自动驾驶和监控等商业领域的精度要求。然而,就检测速度而言,即使是最好的算法仍然需要较大的计算代价(heavy computational cost)。近来网络压缩和量化技术在网络设计层减少计算代价比较重要。
本文提出了针对目标检测任务名为PVANET的轻量级特征提取网络结果,能够在比较其他state-of-the-art方法上不丢失准确率的前提下获得实时的目标检测性能。
(1)计算代价(Computational Cost):输入1065*640大小的图像在特征提取时需要7.9GMAC(ResNet-101:80.5GMAC)
(2)运行时性能(Runtime performance):750ms/image (1.3FPS) 在 Intel i7-6700K CPU (单核);46ms/image (21.7FPS) on NVIDIA Titan X GPU
(3)准确率(Accuracy): 83.8% mAP on VOC-2007; 82.5% mAP on VOC-2012 (2nd place)
设计的关键原则是“less channels with more layers”(即更多的网络层数,更少的通道数,也就是通过减少特征维度,来减少计算量),同时,本文的网络结构采用了一些最近提出的网络块结构(building blocks),其中的一些在目标检测任务中的性能还没有得到证明:
(1)Concatenated rectified linear unit (C.ReLU)[2] 被用在我们的CNNs的初期阶段来减少一半的计算数量而不损失精度。
(2)Inception[3] 被用在剩下的生成feature的子网络中。一个Inception模块产生不同大小的感受野(receptive fields)的输出激活值,所以增加前一层感受野大小的变化。我们观察叠加的Inception 模块可以比线性链式的CNNs更有效的捕捉大范围的大小变化的目标。
(3)采用multi-scale representation的思想(像HyperNet[4] 中)结合多个中间的输出,所以,这使得我们可以同时考虑多个level的细节和非线性。
本文展示了thin且deep的网络能够在BN(batch normalization)[5]和残差连接(residual connections)[1]和基于plateau detection[1]的laerning rate的调整的帮助下非常有效地进行训练。
本文剩下的部分,在第二部分简洁的对网络结构设计机械能介绍,并在第三部分对PVANET的结构细节进行了总结,最后在第四部分详细的描述了训练和测试过程,提供了在VOC2007和VOC2012伤的实验结果。

2.网络设计细节

2.1C.ReLU: Earlier building blocks in feature generation

C.ReLU来源于CNNs中间激活模式引发的。在初期阶段,输出节点倾向于是”配对的”,一个节点激活是另一个节点的相反面。根据这个观察,C.ReLU减少一半输出通道(output channels)的数量,通过简单的连接相同的输出和negation使其变成双倍,即达到原来输出的数量,这使得2倍的速度提升而没有损失精度。
C.ReLU的实现细节如下。比较于原始的C.ReLU,本文在concatenation(串联)之后,增加了scaling and shifting(缩放和移动),这样的操作允许每个channel(通道)的斜率和激活阈值与其相对的channel不同
Alt text

2.2 Inception: Remaining building blocks in feature generation

对于目标检测任务来说Inception没有广泛的使用在现存的网络中,也没有验证其有效性。我们发现Inception是用于捕获输入图像中小目标和大目标的最具有cost-effective(成本效益)的building blocks之一。为了学习捕获大目标的视觉模式,CNNs的输出特征应该对应于足够大的感受野,这可以很容易的通过叠加 33或者更大的核(kernel)卷积实现。在另外一方面,为了捕获小尺寸的物体,输出特征应该对应于足够小的感受野来精确定位小的感兴趣区域。
Alt text
图二所示的Inception可满足以上需求。最后面的1
1的conv通过保留上一层的感受野(receptive field),扮演了关键的角色。仅仅通过增加输入模式的非线性,它减慢了一些输出特征的感受野的增长,使得可以精确地捕获小尺寸的目标。图三展示了Inception的实现细节,采用了2个顺序的3x3卷积来取代5x5的卷积。
Alt text

2.3 HyperNet: Concatenation of multi-scale intermediate outputs (连接多尺度的中间输出,也集考虑到层次的特征)

多尺度表示和它们的结合在最近的许多深度学习任务中[4] [6] [7] 被证明是有效的。细粒度细节与高度概括的语义信息的结合有助于随后的region proposal网络和分类网络检测不同尺度的目标。然而,因为直接连接所有的abstraction layers也许产生有很多计算需要求的冗余信息(redundant information),我们需要仔细设计不同 abstraction layers和layers的数量。如果选择的层对于object proposal和分类太早的话,当我们同时考虑增加计算复杂度的话帮助很小。
本文的设计选择不同于ION[6]和HyperNet[4],它结合了1)最后一层和2)两个中间层,它们的尺寸分别是最后一层的2倍和4倍。本文采用了中等大小的层作为参考尺度(= 2x),并且分别concatenate(串联)4x尺寸的层和采用缩小(pooling)的层和采用放大(linear interpolation,线性插值)的层。

2.4深度网络训练

普遍认为,随着网络的越来越深,网络的训练变得越来越困难。本文同采用残差结构[1]来解决这个问题。与原始的残差训练方法不同的是,我们将残差连接到Inception layers以稳定深度网络框架的后半部分。
在所以的ReLU激活层之前采用BN[5],mini-batch样本统计用于pre-training阶段,并且随后moving-averaged统计作为固定的尺度和移动的参数。
学习率策略对网络成功训练也很重要。本文的策略是:基于plateau detection动态地控制学习率。我们采用移动平均数(moving average)损失并且如果在某次的迭代周期期间,其改进低于一个阀值,则将其确定为on-plateau。无论何时plateau被检测到,学习率减少一个常数因子。在实验中,我们的学习率策略对准确率有一个显著的结果。

3 Faster R-CNN with our feature extraction network

Alt text
表一展示了PVANET的整个网络结构。在初期阶段(conv1_1,…,conv3_4),C.ReLU用在卷积层来减少一半KK conv的计算消耗。11conv layers添加在KK conv的前面和后面,目的是减少输入的大小然后分别表示的能力。
三个中间输出conv3_4(with down-scaling)、conv4_4和conv5_4(with up-scaling)结合到512-channel多尺度输出特征(convf),之后被送到Faster R-CNN模型:
(1)为了提高计算效率。仅convf的前128通道被送到region proposal network(RPN)。我们的RPN是一系列”3
3conv(384channels- 1x1 conv(25x(2+4) = 150 channels)”层来生成regions of interest(RoIs)。
(2)R-CNN采用convf中的全部512 channels。对于每一个RoI,RoI pooling 生成 66512 tensor(张量),之后通过一系列的”4096-4096-(21+84)”的输出节点的全连接层。

4.实验结果

4.1.训练和测试

PVANET 在1000类别的 ILSVRC2012 训练图像上进行预训练。所有的图像被调整到256256大小,之后随机裁剪成192192的patches被作为网络的输入。学习率的初值设为0.1,之后只要检测到plateau时就以因子减少。若学习率小于1e-4就终止预训练,这个过程大约需要2M次迭代。
之后,PVANET在联合的数据集(MS COCO trainval,VOC2007 trainval 和 VOC2012 trainval)训练。之后用VOC2007 trainval 和 VOC2012 trainval进行fine-tuning(微调)也是需要的,因为在MS COCO和VOC竞赛的类别定义是稍有不同。训练数据被随机的调整大小,图像较短的边的长度在416和864之间。
对于PASCAL VOC评价,每个输入图像调整大小使其短的一边为640。所有有关Faster R-CNN的参数被设置在原始的work中,除了在极大值抑制(NMS:non-maximum suppression)(=12000)前的proposal boxes的数量和NMS的阈值(=0.4)。所有的评估在单核的Intel i7-6700K CPU和 NVIDIA Titan X GPU 上完成。

4.2.VOC2007

Table2展示了我们的模型在不同配置下的准确率。由于Inception和多尺度feature,我们的RPN产生的initial proposals非常的准确。因为结果表示超过200个proposals没有对检测的准确率起到显著的帮助,我们在剩下的实验中把proposals 的数量固定在200个。我们也测量了当迭代回归不使用时用带有bounding-box voting的性能。
Faster R-CNN包含的FC layer,它容易压缩并且准确率没有显著的下降。我们通过the truncated singular value decomposition (SVD)把”4096-4096”的FC layer压缩成”512-4096-412-4096”,之后进行一些微调。这个压缩的网络达到了82.9%mAP(-0.9%)而且运行达到了31.3FPS(+9.6FPS)
Alt text

4.3.VOC2012

Alt text
Table3总结了PVANET+和一些先进的网络在PASCAL VOC2012排行榜上的比较。我们PVANET+达到了82.5%mAP,位列排行榜的第二名,超过其他竞争者除了”Faster R-CNN + ResNet-101”。然而第一名使用的ResNet-101比PVANET大很多同时一些耗时的技术,例如global contexts(全局上下文)和多尺度测试,导致至少比我们慢40倍。在表3,我们也比较computation cost。在所有超过80%mAP的网络中,PVANET是唯一一个运行时间小于50ms的。考虑精度和计算cost,PVANET+是排行榜中最有效的网络。

5.总结

本文展示了当前的网络是高度冗余的,并且设计了一个轻量级的网络能够有足够能力应对复杂的视觉任务。精心的采纳和结合最近的深度学习中的创新成功是我们能够重新设计Faster RCNN框架的特征提取部分从而最大化计算效率。即使我们提出的网络是为目标检测任务设计的,当我们相信本文的设计原则能够广泛应用于诸如人脸识别、语音分析的任务中。

评注

这篇论文发表于NIPS 2016上的一篇关于目标检测的论文,在这篇论文之前效果最好的是Faster RCNN++和R-FCN,二者各有利弊,Fast RCNN ++在精度上有提升,但是速度还是比较慢,R-FCN解决了速度问题,精度却稍逊一筹。目标检测的Baseline基本沿袭了这一思路: CNN Featue Extract + Region Rroposal + RoI Classification。本文作者从CNN Feature Extract入手,改进了特征提取网络结果,最终达到了非常好的效果。从文章内容来上说本文的主要工作就是在思路上对CNNN Feature Extract这一角度的优化处理,从而取得了较好的性能,从理论上来说,只是对现有的C.ReLU、Inception、HyperNet的多层特征融合的思路的一个整合,借鉴了比较有突破性的结果,结合BN和各种学习调参策略。从工程的角度来说,这是一篇不错的文章,在工程上取得了较好的性能,纯粹从学术角度上,亮点并不多。同时,该网络训练存在训练不好收敛的问题。

本文标题:PVANET论文阅读笔记

文章作者:Y.G Ren

发布时间:2018年01月07日 - 00:01

最后更新:2018年01月07日 - 14:01

原始链接:https://ygren.github.io/2018/01/07/PVANET论文阅读笔记/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。