最近看到一些双线性池化(网上叫汇合)的文章,正如文章的标题那样,双线性模型和双线性池化是两个不同的概念,但思想却差不多,前几年有文章证明两者的效果基本一致,下面简单介绍一下双线性池化的由来及作用,及解决的问题。
Bilinear CNN Models for Fine-grained Visual Recognition-ICCV2015
传统的,对于图像的不同特征,我们常用的方法是进行串联(连接),或者进行sum,或者max-pooling。研究发现人类的大脑发现,人类的视觉处理主要有两个pathway, the ventral stream是进行物体识别的,the dorsal stream 是为了发现物体的位置。论文基于这样的思想,希望能够将两个不同特征进行结合来共同发挥作用,提高细粒度图像的分类效果。论文希望两个特征能分别表示图像的位置和对目标进行识别。论文的主要框架如下:
将测试图片分别送到两个特征提取器,将获得特征做bilinear pooling操作变形得到双线性向量,送到softmax进行分类。双线性模型定义如下:
一个bilinear model 由四元组构成,b=(fA,fB,P,C),其中fA,fB为来个不同的特征,P为Pooling操作,C表示分类器;
如使用VGG Conv5_3输出特征图大小为12*12*512,则特征图共有12*12个位置,每个位置的特征维度为1*512,则各位置特征向量外积结果相当于512*1与1*512的矩阵相乘,其各位置特征向量维度为512*512。文章中使用所有位