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

751b10e24002993b32994b4ae1d95091.png

最近看了一系列bilinear pooling相关的文章,感觉有些文章写得比较抽象。费了不少功夫总算理顺了这些文章的关系,这里简单写个笔记记录一下~

  • 简介

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

和特征
,通过bilinear pooling得到两个特征融合后的向量,进而用来分类。

如果特征

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

原始的Bilinear Pooling存在融合后的特征维数过高的问题,融合后的特征维数=特征

和特征
的维数之积。原作者尝试了PCA降维,但效果并不理想。基于降低bilinear pooling特征维数的思想,近年来的改进方案参见下表:

43eaf040a4ee24884bf5f60011063e79.png

本文将包括以下内容:

  1. 对bilinear pooling进行详细介绍,便于读者理解原文;
  2. 建立bilinear pooling到bilinear model的联系,便于读者理解以MLB为核心的bilinear model相关文章。
  3. 快速介绍对bilinear pooling的各种改进形式。

  • bilinear pooling详解

这里参考《Bilinear CNN Models for Fine-grained Visual Recognition》,CVPR 2015一文,给出bilinear pooling的详细定义。

对于图像

在位置
的两个特征
, 进行如下操作:

直观上理解,所谓bilinear pooling,就是先把在同一位置上的两个特征双线性融合(相乘)后,得到矩阵

,对所有位置的
进行sum pooling(也可以是max pooling,但一般采用sum pooling以方便进行矩阵运算)得到矩阵
,最后把矩阵
张成一个向量,记为bilinear vector
。对
进行矩归一化操作和L2归一化操作后,就得到融合后的特征
。之后,就可以把特征
用于fine-grained分类了,如下图所示:

c1c2b70ab480a0399ae167862a711db1.png

对于我们熟悉的图像特征,

,而
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值