1. 论文相关
2016 IEEE Conference on Computer Vision and Pattern Recognition
2.
2.1 摘要
双线性模型在语义分割、细粒度识别和人脸识别等多种视觉任务中都表现出了令人印象深刻的性能。然而,双线性特征是高维的,通常在几十万到几百万个数量级上,这使得它们不适用于后续的分析。我们提出了两个紧凑的双线性表示,它们具有与完全双线性表示相同的识别能力,但只有几千维。我们的紧凑表示允许分类错误的反向传播,从而实现视觉识别系统的端到端优化。通过对双线性池的一种新的核化分析,得到了双线性池的紧凑表示,为进一步研究双线性池方法提供了一个平台。实验证明了所提出的表示方法在图像分类和跨多个数据集的小样本学习中的实用性。
2.2 贡献
这项工作的贡献有三点。(1)我们提出了两种紧凑的双线性池化方法,与完全双线性池化相比,它可以将特征维数减少两个数量级,而性能几乎没有损失。(2)我们证明通过紧凑型双线性池化的反向传播可以有效地计算,从而实现识别网络的端到端优化。(3)我们提出了一种新的双线性池化的核化观点,它不仅激发了所提出的紧凑方法,而且为双线性池化提供了理论上的见解。在Caffe 和 MatConvNet中实现所提出的方法是公开的:https://github.com/gy20073/compact-bilinear-pooling
2.3. 思想
这项工作的主要贡献是一对双线性池方法,与完全双线性池相比,每种方法都能够将特征维数减少三个数量级,而性能几乎没有损失。所提出的方法是由双线性池的一种新的核心化观点推动的,并且,至关重要的是,允许端到端学习的反向传播。
我们提出的紧致双线性方法依赖于核函数低维特征映射的存在。拉希米[29]首先提出了一种求高斯核和拉普拉斯核的显式特征映射的方法。这一点后来被扩展到交集内核、内核和指数内核[35、25、36]。我们证明了双线性特征与多项式核密切相关,并基于kar[15]和pham[27]首次提出的多项式核算法,提出了一种新的紧致双线性特征的算法,其中一个重要的方面是我们展示了如何通过这种表示进行反向传播。
3.方法
3.1 紧凑双线性模型
Bilinear pooling或 second order pooling通过如下的公式计算生成一个全局描述子:
其中是一组局部描述符,是一组空间位置(行和列的组合)。局部描述符通常是通过SIFT、HOG或通过CNN的前向传递来提取的。如公式(1)中定义的是一个的矩阵,但为了我们的分析,我们将把它看作一个长度为的向量。
4.2 ## 双线性池的核化视图
使用双线性描述符的图像分类通常使用线性支持向量机(SVM)或逻辑回归实现。这些都可以看作是线性内核机器,我们在下面提供一个分析。给定两个局部描述符的集合:和,一个线性内核机将它们比较为:
从(2)中的最后一行可以清楚地看出,双线性描述符将第一个图像中的每个局部描述符与第二个图像中的每个局部描述符进行比较,并且比较运算符是二阶多项式核(second order polynomial kernel)。因此,双线性池为线性分类器提供了二阶核机器的识别能力,这可能有助于解释先前工作中观察到的强大的经验性能。
3.3 紧凑双线性池化
在本节中,我们定义了所提出的紧凑双线性池化方法。设表示比较核,即二阶多项式核。如果我们能找到一些低维投影函数,其中,如果满足,那么我们可以近似(2)的内积(inner product)为:
是紧凑的双线性特征。从这一分析可以清楚地看出,任何多项式核的低维近似都可以用来实现我们创建紧凑双线性池化方法的目标。我们研究了两个这样的近似:随机麦克劳林(Random Maclaurin, RM)和张量素描(Tensor Sketch,TS)。
RM是一种早期开发的方法,用于作为一个低维显式特征映射来近似多项式核。这个直觉是直截了当的。
如果是两个随机的−1、+1向量,而且,那么对于非随机,。因此每个RM中的映射实体(projected entry)有一个数量期望去近似。通过使用输出中的个实体,估计量方差可以被1/d的系数降低。
TS使用草图函数来提高投影过程中的计算复杂性,并倾向于在实践中提供更好的近似值。与RM方法类似,计数草图,由算法2中的定义。具有以下优点:此外,我们可以看出,,即两个向量外积的计数示意图是个体计数示意图的卷积。然后,同样的期望值也会出现。
3.3.1 紧凑型双线性池的反向传播
在本节中,我们推导了两种紧凑的双线性池化方法的反向传播,并证明它们在计算和存储方面都是有效的。
对于RM,我们让表示损失函数、表示空间索引、表示投影维度、表示训练样本的索引,表示RM层在训练样本维度上的输出。然后可以将RM池化的反向传播写为:
其中,,和是矩阵的第d行。对于TS,使用相同的符号:
式中,和。当为负时,表示圆指数(circular index),其中是投影维数。注意,在TS中,我们只能得到一个梯度。是组合的(combinatorial),因此在方向传播中是固定的。
RM的反向传播方程可以方便地写成几个矩阵乘法。它的计算和存储复杂度与前向传播相同,可以有效地计算。同样,方程式(6)也可以表示为几个FFT、IFFT和矩阵乘法运算。TS的计算和存储复杂性也与它的正向传播相似。
3.3.2 紧致双线性池化的一些性质
表2显示了双线性特征和使用RM和TS投影的紧凑型双线性特征之间的比较。括号中数字所示为在1000级分类任务时的应用选定池化方法的VGG-VD上的典型值。我们紧凑型双线性特征的输出维度比双线性特征维度小2个数量级。在实践中,提出的紧凑的表示只使用2%的双线性特征维度实现了与完全双线性表示类似的性能,这显著的显示了在双线性表示中有98%的冗余。
RM投影需要中等数量的参数内存(即随机生成但固定的矩阵),而TS几乎不需要参数内存。如果在池化层之后使用线性分类器,即全连接的层后跟着softmax损失,则分类器参数的数量将随着池化的输出维度和类的数量线性增加。在上述情况下,双线性池的分类参数需要1000MB的存储空间。另一方面,我们的紧凑双线性方法在分类层中需要的参数要少得多,可能会降低过度拟合的风险,并且在少样本学习场景或域适应场景中表现得更好。
在计算上,张量草图是线性的,而双线性是c二次型,随机麦克劳林是cd线性(见表2)。在实际应用中,池化层的计算时间主要由卷积层的计算时间决定。通过caffe实现和K40c GPU,在一个448×448
图像上,16层vgg的前馈和后馈时间为312ms,双线性池需要0.77ms,TS(d=4096)需要5.03ms。因为快速傅立叶变换的常数因子比矩阵乘法的常数因子大,所以TS慢。
3.4 可选择的降维方法(Alternative dimension reduction methods)
PCA是一种常用的降维方法,由于双线性特征的高维性,在这种情况下它不是一种可行的选择。求解PCA通常涉及三阶操作,其中是特征维数。对于高维性来说,这是不切实际的,d=262K用双线性池化。
林等人在形成双线性特征之前,使用PCA绕过这些限制,将CUB200上的双线性特征维度从262000减小到33000。虽然这是一个实质性的改进,但它仍然占原始维度的12.6%。此外,PCA降维技术需要对整个数据集进行昂贵的初始扫描,以获得主成分。相比之下,我们提出的紧凑双线性方法不需要任何预训练,可以小到4096维。为了完整性,我们将我们的方法与第4.3节中的基线进行了比较。
另一种选择是使用随机投影。然而,这需要形成整个双线性特征,并使用一些随机线性算子将其投影到低维。由于Johnson-Lindenstrauss引理,随机投影在很大程度上保留了特征向量之间的成对距离。然而,部署这种方法需要构造和存储双线性特征和固定随机投影矩阵。例如,对于VGG-VD,投影矩阵的形状为,其中c是上一层的通道数,d投影维度,如上所述。在d=10000和c=512的情况下,投影矩阵有26亿个条目,这使得存储和使用它变得不切实际。经典的密集随机高斯矩阵,其条目为I.I.D.,将占用10.5GB的内存,这对于高端GPU(如K40)来说太多了。稀疏随机投影矩阵可以将内存消耗提高到40MB左右[21],但仍然需要首先形成双线性特征。此外,它需要在GPU上执行稀疏矩阵操作,这不可避免地要慢于密集矩阵操作,例如在RM(ALG 1)中使用的操作。
4.实验
在本节中,我们将详细介绍四组实验。首先,在4.2节,我们研究了提出的池化方法的一些设计选择:适当的维度,以及是否调整投影参数。第二,在4.3节,我们对基于PCA的紧凑池方法进行了基线比较。第三,在4.4节,我们将研究双线性池化的一般情况,特别是所提出的紧凑方法,与三个常见的计算机视觉基准数据集的最新技术进行比较。第四,在4.5节,我们研究了低维表示特别有用的情况:小样本学习。我们首先提供实验细节。
4.1 实验细节
我们评估了我们的设计在两种网络结构:VGG-M中的M-net和VGG-D中的D-net。我们使用每个网络的卷积层作为本地描述符抽取器。更准确地说,在第3节的表示,是激活卷积层在每个空间位置的输出。具体来说,我们保留了VGG-M()的前14层和VGG-D()的前30层,如[23]中所用。除了双线性池,我们还比较了全连接层和改进的Fisher矢量编码。后者优于其他基于聚类的编码方法,如硬矢量量化或软矢量量化和VLAD。所有实验都是使用Mat-ConvNet进行的,我们使用448×448输入图像大小,除了下面提到的全连接池化。
4.1.1 池化方法
4.4 跨多个数据集的评估(Evaluation across multiple data-sets)
双线性池化方法已被广泛研究。Carreira等人使用二阶池化促进语义分割。林等人使用双线性池化进行细粒度可视化分类,Rowchowdhury使用双线性池进行人脸验证。这些方法在各自的任务上都达到了最先进的水平,表明双线性池的广泛用途。在这一部分中,我们展示了在三个非常不同的图像分类任务中,紧凑表示与双线性池的性能相当。由于紧凑的表示需要更少数量级的内存,这表明它是一种适用于大量视觉识别任务的首选方法。
在三个视觉识别任务上比较了全连接池化、Fisher矢量编码、双线性池和两种紧凑双线性池化方法:以CUB-200-2011代表的细粒度视觉分类、以MIT室内场景识别数据集为代表的场景识别和以可描述的纹理数据集为代表的纹理分类。样本示例图如图3所示,数据集详情如表5所示。以我们在第4.2节的结果为指导,我们使用d=8192尺寸并固定投影参数。
4.4.1 鸟类识别(Bird species recognition)
CUB是一个细粒度的视觉分类数据集。要在这个数据集上具有良好性能不仅需要识别整体的鸟的形状、纹理和颜色,同时也需要关注细微差异的能力,比如鸟嘴的形状。我们使用的唯一监督信息是图像级别的类标签,而不参考局部或边界框标注。
我们的结果表明,无论有没有微调,双线性池化和紧凑双线性池化在很大程度上都优于全连接池化和Fisher向量(表4)。在紧凑型双线性方法中,TS始终优于RS。在较大的VGG-D网络中,双线性池在微调前的错误率为19.90%,而RM和TS分别达到21.83%和20.50%。这是一个适度的1.93%和0.6%的性能损失,考虑到特征维度的巨大减少(从250K到8192)。值得注意的是,当双线性池方法都达到16.0%的错误率时,经过微调后,这种差异就消失了。据我们所知,这是在没有局部标注信息的情况下对该数据集的最佳性能。对于较小的VGG-M网络来说,情况类似:TS比RM更为有利,经过微调后,紧凑型全双线性之间的性能差距缩小到0.5%。
6. 总结与思考
sum pooling操作是什么?
参考资料
[1] 论文笔记: (compact) Bilinear Pooling, Confusion
[2] 论文读书笔记(Multimodal Compact Bilinear Pooling for Visual Question Answering and Visual Grounding)
代码
[0] 原文代码
[1] ronghanghu/tensorflow_compact_bilinear_pooling
[2] DeepInsight-PCALab/CompactBilinearPooling-Pytorch
[3] gdlg/pytorch_compact_bilinear_pooling