Bilinear Pooling

Paper: Revisiting Bilinear Pooling: A coding Perspective

常见的特征融合:BoW(Bag of Words), VLAD(Vector of Locally Aggregated Descriptor), FV(Fisher Vector)。

最近的研究表示:Bilinear Pooling (双线性池化)是一个更有效的特征融合方法。

双线性池化是通过建模特征的高阶统计信息来捕获特征之间的关系,进而生成具有表达力的全局表示。

问题:
1.双线性池化生成的表示含有大量的信息冗余(redundancy)
2.双线性池化具有突发性(burstiness)的问题,降低了表示的判别力。

方法:
1.双线性池化的编码----池化框架

双线性池化方法的形式是:
其中是双线性池化的矩阵表示,将Z向量化得到z作为全局表示。在本文中,作者证明了双线性池化是一个基于相似性的编码--池化框架。全局表示z可以写成:
其中,
B 是字典, 双线性池化计算双线性特征fi和字典bl的內积相似度。由相似度构成的编码通过一个求和池化(SumPooling)聚合成全局表示z

在上述的编码--池化框架下,有三个的性质影响了双线性池化的性能:

(1) 双线性特征

是秩为1的矩阵,含有大量的信息冗余;

(2)字典B由输入的双线性特征决定
因此对不同的输入进行编码所使用的字典不同;

(3)将双线性池化用于多模态任务时,字典元
共线,这影响了表示z的判别力。

2.分解的双线性编码

从编码的角度,作者提出了分解的双线性编码(FBC)融合特征。作者将基于相似性的编码替换成为稀疏编码(Sparse Coding),激活尽可能少的字典元并保持尽可能多的信息。与原始的双线性池化相比,分解的双线性编码学习一个全局字典进行编码,提高了z的判别力

对高维的双线性特征直接编码很容易引入大量的参数,为了避免这个问题,作者将字典元进行分解,其中每个字典元被分解成两个矩阵的乘积,矩阵分解的秩远小于双线性特征的维度。

分解的双线性编码与原始的双线性池化相比,减少了大量的内存消耗。

例如在视觉问答任务中,文本特征的维度p=1024,视觉特征的维度q=2048,答案有3000个类别。使用双线性编码需要存储3000pq个参数。

如果首先计算双线性特征,并使用非分解的编码方案,其中字典元的个数k=1000,需要存储的参数量为kpq+3000k。

与这两种方案相比,分解的双线性编码不需要直接计算高维的双线性特征,且字典元的空间复杂度由O(pq)减少为O(r(p+q))。

分解的双线性编码可以比较灵活地应用到各种视觉任务中。例如:图像分类和视觉问答任务。

Note: Details adopt from CVer

AAAI2020 | 新角度看双线性池化,冗余、突发性问题本质源于哪里?







Comments

Popular posts from this blog

Reading CLIP

Reading CutPaste

OOD-related papers