论文:Lightweight Deep Neural Networks for Real-time Object Detection
Github:PVANet
C++ Demo :PVANet_CPP
Abstract
许多目标检测问题中,算法的运行速度和精度同等重要。本文主要针对的就是算法的运算速度提升问题。作者提出了一个轻量级的网络,取得了state-of-the-art的效果。网络基于基本的设计原则:more layers with less channels. 此外,作者利用C.ReLU和Inception structure减少网络的冗余。
Introduction
Network compression and decomposition of convolution 表明:现在的网络结构是高度冗余的,所以减少冗余就成为了一种提升网络运行速度最直接的方式。作者提出的网络结构概要:
- 基于more layers with less channels的基本原则。
- 在网络初始几层采用C.ReLU,在后面几层采用Inception structure.
- 应用多尺度特征级联maximize the multi-scale nature of object detection tasks.
- 权重衰减策略采用plateau detection(一定迭代次数内loss不再下降,则将学习速率降低常数倍)
PVANet通过batch normalization, residual connections可以实现高效的训练。
PVANet结构介绍
PVANet网络可以分成两部分来看:特征抽取网络和检测网络。
1. 特征抽取网络
网络的总体结构如下所示,KxK的C.ReLU表示1x1 - KxK - 1x1的卷积层的堆叠:
特征提取网络由两个building block组成,即mC.ReLU和Inception structure:
特征抽取网络有以下三个关键点:
- Modified C.ReLU
C.ReLU的设计思路来源于对CNN中的activation patterns的观察。具体什么意思没太看懂。总之作者在C.ReLU的基础上添加了一个bias layer,这使得两个相关的滤波器可以有不同的bias value。 - Inception structure
作者发现Inception structure在捕获图像中的小目标,大目标方面是最高效(计算方面高效)的手段之一。
为了捕获图像中的大目标,需要足够大的感受野,这个可以通过堆叠3x3的滤波器来达到。但是为了捕获小目标,则需要小一点的感受野,1x1的卷积核正好合适。可以避免大卷积核造成的参数冗余问题。基于上述两点,Inception structure用于目标检测是非常合适的。 - Deep network training
网络训练用了以下几个技巧:
1.在Inception模块加入残差连接(residual structures with pre-activation)
2.Batch normalization
3.权重衰减策略采用plateau detection
2.目标检测网络
在这部分,作者基本沿用了Faster R-CNN的框架,PVANet总体结构如下所示:
![PVANet网络结构](http://upload-images.jianshu.io/upload_images/1794530-b92f7ff18335b393.png?
imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
值得一提的是,作者输入RPN的feature maps只有128个,因为作者发现用128个效果和用512个是一样的,精度并没有损失。但是作者没有给出为什么,个人觉得应该是特征图冗余的原因吧,大部分网络都是有很多优化空间的。
此外,feature map 经过ROI之后产生一个6 x 6 x 512的张量。之后通过4096-4096-(21 + 84)的全连接层输出结果。正是因为这里用的是全连接层,所以给后面模型进一步压缩(且不损失精度)提供了机会。这也是Github所提供的compressed模型的由来。
实验结果
模型训练
模型在ImageNet 2012分类数据库预训练,中间有一些裁剪啦,学习速率调整之类的,此处不再赘述。
模型的fintuning训练在目标检测数据库上训练,具体可以看论文。
此外,作者还利用了Bounding box投票得到了PVANet+模型,以及优化前面所说的全连接层得到了PVANet compressed。
实验结果
mAP基本上和state of art的网络差不多啦,而且还是像题目所说的,轻量级,实时的网络!
结论
本文提出了一个轻量级的网络,取得了state of art的结果。此外,本网络结果的设计完全独立于network compression and quantization. 因此,还可以进一步利用最近的模型压缩技术来提升性能。例如,基于现有网络应用truncated SVD就可以实现显著的运行时间提升!
总的来说,作者的创新着重于特征提取部分,使用了时下各种流行的技术。Batch Normalization, C.ReLI, Inception structure, Residual connected。相比与R-FCN,SSD这些引入新的检测网络是完全不同的思路。因此可以考虑将作者提出的高效的特征提取网络和FCN, SSD这些网络的检测网络部分结合起来,实现进一步的性能提升。