【CV论文阅读】+【搬运工】LocNet: Improving Localization Accuracy for Object Detection + A Theoretical analysis

论文的关注点在于如何提升bounding box的定位,使用的是几率的预测形式,模型的基础是region proposal。论文提出一个locNet的深度网络,不在依赖于回归方程。论文中提到locnet能够很容易与现有的detection系统结合,但我困惑的是(1)它们的训练的方法,这点论文中没有明确的提到,而仅仅说用迭代的方法进行(2)到底二者的融合后两个网络的结构是怎样呢?能够看作一个多任务的系统,仍是存在两个网络呢?windows

 

检测方法网络

输入的候选bounding box(使用selective search或者sliding windows得到),经过迭代的方法,得到更精确的box。检测的由两个过程组成:识别模型(recognition model)以及定位模型(localization model)。识别模型为每一个box计算一个置信度(confidence score),度量定位的准确性,定位模型调整box的边界生成新的候选box,再输入到识别模型中。伪代码以下,ide

 

能够看到,在识别模型中,会根据计算的置信度删除其中一些box,这样作的目的是为了减小计算的复杂度。但从过程能够看出,置信度对于定位模型几乎没有用,这个迭代的过程识别模型的计算好像没有必要。函数

 

定位模型优化

但上述并非关心的重点,主要是看看这个提高定位准确性的方法。提出的locnet模型步骤总结以下spa

(1)对于输入的box,把它扩大一个因子的倍数,获取一个更大的区域R,把R投影到feature map中。3d

(2)通过一个相似于ROI pooling的层,输出固定大小的map。在这里须要展开说明。把一个区域划分红M*M的格子,这时能够产生两个向量,分别表明区域R的每一行或者列包含在bounding box中的几率,如图(左)。例如,对于ground truth box而言,对于边界内的行或列几率为1,不然为0,code

 

其中B表明四条边界l,r,t,b。这个称谓In – Out 几率。blog

除此之外,还定义了边界几率。即行或列是边界的几率。对于ground truth box,有get

 

 

(3)通过几个卷积层和ReLU激活以后,出现两个分支,分别对应两个向量。而后通过max pooling获得row、column对应的向量。

 

(4)通过FC层以后,使用sigmoid函数输出In –Out几率或者边界几率或者二者都输出。

 

损失函数

最重要的是定义损失函数了。使用的是伯努利分布的模型,即每行或列有两种可能(是或者不是),取对数后,这也是logistic 回归经常使用的损失函数交叉熵,对于In –Out几率有

其中,对于同理。对于边界几率有

 

这里有两个平衡因子,由于做为边界的行或列较少,因此增大他们的权重,

 

 

问题引入:对于整个模型,让人以为奇怪的最后分支对应的row和column的max pooling的状况,居然能够经过这样蕴含边界的信息,真的搞不明白为何。这让人思考pooling这个操做究竟为何这么牛逼,无所不能的样子。知乎上有人问过这个问题:CNN网络的pooling层有什么用图像分类中的max pooling和average pooling是对特征的什么来操做的,结果是什么?但好像得出结论是,这是一个拍脑壳的结果……而对此系统分析的论文《A Theoretical analysis of feature pooling in Visual Recognition》也说这是一个经验的操做,并且貌似论文结果也没得出为何来……

 

论文《A Theoretical analysis of feature pooling in Visual Recognition》的笔记,当一回搬运工,主要是记录Pooling Binary Feature部分,后面的已经看不明白了,最终得出结论是:Pooling 能够把联合特征转变为一个更重要的表示,同时忽略其余无关的细节。

 

简单起见,假设服从伯努利分布,则均值池化操做为,最大化池化操做

 

论文中讨论的是分布的可分性,给定两个类别C一、C2,则计算可分性的两个条件分布(最大值池化)为,均值池化以及。虽然是给定类别下的条件分布,但事实上也隐含着它属于某个类别的几率,即后验。所以能够用来计算两个分布的可分性。

 

使得两个分布可分性增大的方法是,使他们的均值指望距离增大,或者使得他们的样本标准差变小。

 

对于均值池化,由于前面假设服从伯努利分布,因此的分布(注意此时不是条件几率分布,对于条件几率分布,它们各自下的均值会不一样)均值为,可是方差变小了为

 

对于最大值池化,的均值为,方差为。定义为类条件下的可分性,对于均值的距离为

 

其中以及。上式是P的函数,把P扩展到实数域,能够获得的最值点为

 

函数先升后降,极限为0。假设,当P=1时就是均值的指望距离,此时会有许多的P,可使得距离增大。假设,若是,能够推出,这代表它的一个选择的特征表明超过半数的图像中的patch(这句话个人理解是,由于即类别下选择/生成特征的几率,即激活的几率太高),但一般而言这个不会发生在codebook包含超过100个codeword的时候(由于很高)。

 

对于最大值池化的方差,一样会经历一个先升后降的过程。

 

据以上,论文总结了几个点:

 

一、最大池化特别适合在特征都是很是稀疏的时候来分离(即,有着很是低的几率去激活,这时不多出现的状况)

二、使用全部可用的样本去执行池化也许不是最优的

三、最优化池化技术会随着字典的尺寸增长而增长。