开始跑模型就顾不上看理论,就像降低计算量就要牺牲准确率。
摘要
这是一个轻量级的detection模型,基于faster RCNN框架改进,主要重新设计了feature extraction部分(因为其他RPN分计算量不大、ROI classification部分的全连接层可以用svd方法改进),设计总体原则是“less channels with more layers”。
简介
在设计网络上借鉴了一些其他比较新的building block:1)C-RELU、 2)Inception、 3)Hyper-net。还有其他一些常规的比如residual learning、batch normolization、pleateau学习策略等。
设计细节
(1)C-RELU
CNN网络的前几层卷积核被观察到总是有成对出现的情况(一正一负),原因的猜想是RELU抑制了激活值为负的卷积特征表达,而在最开始几层CNN希望捕捉“both positive and negetive phase information”,所以表现出来就是用负卷积核把负的特征变成正的表达出来,也就是成对出现的原因(Understanding and Improving Convolutional Neural Networks viaConcatenated Rectified Linear Units 有严格的数学证明,没看懂)。
这个现象说明前几层卷积核存在着严重的冗余,用一个简单的方法就可以在不损害准确度的前提下大幅减少网络计算量,那就是下面的C-RELU结构:
相比原版的C-RELU这里增加了scale层和shift层,可以让每个channel的斜率和激活阈值不同。
(2)Inception
在detection任务中,捕捉大的物体需要特征对应一个大的reception field,这个很容易通过堆叠卷积层来得到;同样小的物体需要对应小的reception field,要同时满足这两个条件(多尺度)就有些困难。Inception很好地解决了这一问题,关键在于1*1卷积。它在保留上一层reception field大小不变的同时,增加了特征的非线性,如下:
(3)Hyper-net
把各个scale的feature map拍在一起做成多尺度的Hyper cube,在这里以最后一层conv5输出大小为基准,连结了conv4(2x)、conv3(4x)共3个scale,最后的输出大小是conv4(2x),另两个分别作上采样(deconv)和下采样。这里没太大原理阐述。
对比faster RCNN
主要是理解PVA-net快的原因。定性地表达有两个原因:1)conv1-conv3十几层都用了C-RELU,减少一半参数量; 2)在得到512 channels 的 Hyper feature之后,只有128通道输入给RPN产生proposal,其余通道在ROI pooling层汇合,产生6*6*512的tensor输入到classification网络里。
至于定量分析,原文中给出了表格,但是实在没找到computation cost(单位MAC)是怎么算的,只把表附在这里。