双线性池化(Bilinear Pooling)详解、改进及应用

转自知乎林小北的文章

简介

bilinear pooling在2015年于《Bilinear CNN Models for Fine-grained Visual Recognition》被提出来用于fine-grained分类后,又引发了一波关注。bilinear pooling主要用于特征融合,对于从同一个样本提取出来的特征x和特征 y ,通过bilinear pooling得到两个特征融合后的向量,进而用来分类。

如果特征x和特征 y来自两个特征提取器,则被称为多模双线性池化(MBP,Multimodal Bilinear Pooling);如果特征x=特征y,则被称为同源双线性池化(HBP,Homogeneous Bilinear Pooling)或者二阶池化(Second-order Pooling)。此外,有些文章也把bilinear model称为bilinear pooling(这么做是有原因的,下文会分析)。

原始的Bilinear Pooling存在融合后的特征维数过高的问题,融合后的特征维数=特征x和特征 y的维数之积。原作者尝试了PCA降维,但效果并不理想。基于降低bilinear pooling特征维数的思想,近年来的改进方案参见下表:
双线性池化(Bilinear Pooling)详解、改进及应用_第1张图片

bilinear pooling详解

这里参考《Bilinear CNN Models for Fine-grained Visual Recognition》,CVPR 2015一文,给出bilinear pooling的详细定义。
双线性池化(Bilinear Pooling)详解、改进及应用_第2张图片
双线性池化(Bilinear Pooling)详解、改进及应用_第3张图片
作者使用bilinear pooling对两种特征提取器进行融合,再用于fine-grained分类,取得不错的效果。bilinear pooling的形式简单,便于梯度反向传播,进而实现端到端的训练。
双线性池化(Bilinear Pooling)详解、改进及应用_第4张图片

Second-order Pooling

Second-order Pooling最早出自ECCV2012的文章《Semantic segmentation with second-order pooling》,原文对Second-order Pooling的定义如下
在这里插入图片描述
由于Second-order Pooling用到了特征 X 的二阶信息,所以在一些任务下能比一阶信息表现更为优秀。

对比bilinear pooling的定义,不难发现,当 fA = fB 的时候,二者是等价的。也就是说,二阶池化(Second-order Pooling)=同源双线性池化(HBP,Homogeneous Bilinear Pooling)。

==============================================================================
下面介绍bilinear pooling的各种改进。

CBP: Compact Bilinear Pooling

CBP出自CVPR 2016《Compact bilinear pooling》一文,作者观察到在分类问题中,提取的特征常常采用SVM或者logistic regression,而这两种形式都可以被看作是线性核机器(linear kernel machines),具有如下的形式
在这里插入图片描述
注意到
双线性池化(Bilinear Pooling)详解、改进及应用_第5张图片
双线性池化(Bilinear Pooling)详解、改进及应用_第6张图片
双线性池化(Bilinear Pooling)详解、改进及应用_第7张图片

MCBP: Multimodal Compact Bilinear Pooling

《Multimodal compact bilinear pooling for visual question answering and visual grounding》是EMNLP2016的文章。本文在CBP的基础上提出了MCBP,并将其应用于看图答题(VQA,visual question answering)领域。

注意到CBP是针对HBP进行改进的,对CBP的TS算法稍加改动,使其适用于融合不同模态的特征,即可得到MCBP,如下图所示。
双线性池化(Bilinear Pooling)详解、改进及应用_第8张图片
在得到MCBP模块后,作者提出用于VQA的网络结构如下:
双线性池化(Bilinear Pooling)详解、改进及应用_第9张图片
这个结构相当容易理解,就是一共用到了两次MCBP模块,第一个MCBP融合了文本和图像的特征进而用来提取图像的attention,第二个MCBP则把图像的attention特征与文本特征再一次融合,最终结果送入softmax分类器得到答案。

LRBP:Low-rank Bilinear Pooling

LRBP出自CVPR2017的文章《Low-rank bilinear pooling for fine-grained classification》,与CBP一样,都是假定采用的分类器是SVM来对HBP进行简化。

考虑SVM问题
双线性池化(Bilinear Pooling)详解、改进及应用_第10张图片

Grassmann Pooling

Grassmann Pooling出自ECCV 2018的文章《Grassmann Pooling as Compact Homogeneous Bilinear Pooling for Fine-Grained Visual Classification》,也是针对HBP的改进。

考虑形式为
双线性池化(Bilinear Pooling)详解、改进及应用_第11张图片
显然,Grassmann pooling也能够简化bilinear pooling计算量。

==============================================================================
上面提到的三种改进形式CBP、LRBP、Grassmann Pooling都是针对HBP的改进。MCBP直接对CBP改动用于多模态特征的融合,但是考虑到CBP的出发点是核函数,MCBP的改动其实有点站不住脚的。对于MBP的改进工作,主要是以MLB为基础。MLB的核心是利用Hadamard积来简化bilinear model的操作。在介绍MLB之前,先介绍一篇承上启下的工作,把bilinear pooling和billinear model建立联系。

从bilinear pooling到billinear model

《Factorized bilinear models for image recognition》是ICCV2017的文章,虽然本文也是针对HBP的研究,但成功地把bilinear model与bilinear pooling联系起来。而后面的工作MLB正是从bilinear model的角度出发去改进MBP。

首先介绍bilinear model,对于特征向量 X 和特征向量 Y ,bilinear model是指形如
双线性池化(Bilinear Pooling)详解、改进及应用_第12张图片

MLB:Multimodal Low-rank Bilinear Pooling

有了上篇工作的介绍,理解MLB就非常容易了,MLB出自ICLR2017的文章《 Hadamard product for low-rank bilinear pooling》。文章核心是用Hadamard积(就是按元素乘)来实现bilinear model,把
双线性池化(Bilinear Pooling)详解、改进及应用_第13张图片
本文的写作相当严谨,各个矩阵的尺寸大小均有注明,有兴趣的读者自行翻阅。

MFB:Multi-modal factorized bilinear pooling

MFB出自ICCV2017《Multi-modal factorized bilinear pooling with co-attention learning for visual question answering》。本文的思路与MLB十分相似,不同点在于当希望bilinear model的输出是向量的时候,本文直接把U和V变成了三维张量,再通过sum pooling来进行通道融合得到最后的输出。
双线性池化(Bilinear Pooling)详解、改进及应用_第14张图片
在MFB的基础上,作者于《Beyond bilinear: Generalized multimodal factorized high-order pooling for visual question answering》一文中提出了MFH(Multi-modal factorized high-order pooling )。把MFB操作分为两个阶段Expand Stage和Squeeze Stage,MFH就是把MFB堆叠起来以得到高阶信息,如下图所示
双线性池化(Bilinear Pooling)详解、改进及应用_第15张图片
作者成功地把MFB/MFH应用于VQA,提出的网络结构如下:
双线性池化(Bilinear Pooling)详解、改进及应用_第16张图片
这个结构与前文提到的《Multimodal compact bilinear pooling for visual question answering and visual grounding》相当类似,都是利用融合后的特征提取图像的attention特征,再进而第二次融合进而用来分类。不同之处在于,作者模拟了人类“审题”的思维模式,先建立了文本的attention特征,再去考虑与图像的特征融合。

==============================================================================
前面介绍的工作,都是针对bilinear pooling的计算量过大而进行的改进。作为融合特征的有效方法,bilinear pooling在fine-grained分类和VQA都有不错的发挥。这里再简要介绍bilinear pooling的几篇应用。

应用于VQA领域的《Bilinear attention networks》

本文是MLB的续作,发表于NIPS2018。本文借助bilinear model的思想提出了bilinear attention的思想。常规的attention map是对单个特征的attention,output=feature * attention map,而本文提出的bilinear attention map则对两个特征的attention, output=feature1 * bilinear attention map * feature2,表达式如下:
双线性池化(Bilinear Pooling)详解、改进及应用_第17张图片

应用于分类领域的《Hierarchical Bilinear Pooling for Fine-Grained Visual Recognition》

本文出自ECCV2018,核心思想是把不同层的特征通过bilinear pooling两两融合,最后concate后进行分类。
双线性池化(Bilinear Pooling)详解、改进及应用_第18张图片

应用于ReID领域的《Part-Aligned Bilinear Representations for Person Re-Identification》

本文出自ECCV2018,核心是把行人的全局特征与局部特征(通过openpose预训练得到)通过bilinear pooling融合,再进行检索。
双线性池化(Bilinear Pooling)详解、改进及应用_第19张图片

应用于三维物品识别领域的《Multi-View Harmonized Bilinear Network for 3D Object Recognition》

本文出自CVPR 2018,核心是利用HBP提取多视角特征。
双线性池化(Bilinear Pooling)详解、改进及应用_第20张图片

应用于动作识别领域的《Deep Bilinear Learning for RGB-D Action Recognition》

本文出自ECCV 2018,基于bilinear model提出了bilinear block,来更好地融合多模态信息。
双线性池化(Bilinear Pooling)详解、改进及应用_第21张图片
小结:双线性池化是一种编码-池化的形式。从编码的角度,采用分解的双线性编码来融合特征。

你可能感兴趣的:(学习总结,linux,池化,双线性Model,多模态,python)