FGVC

您所在的位置:网站首页 双线性函数的秩 FGVC

FGVC

2023-09-17 02:34| 来源: 网络整理| 查看: 265

这里写目录标题 基本的Bilinear CNN降低维度Compact Bilinear Pooling-CVPR2016Low-rank Bilinear Pooling for Fine-Grained Classification-CVPR2017 跨层双线性池化Hierarchical Bilinear Pooling for Fine-Grained Visual Recognition-ECCV2018 AAAI 2020 paper: "Revisiting Bilinear Pooling: A Coding Perspective".

基本的Bilinear CNN

原文:Bilinear CNNs for Fine-grained Visual Recognition pytorch代码:https://github.com/HaoMood/bilinear-cnn 在这里插入图片描述 双线性池化包括四个部分: B = ( f A , f B , P , C ) B=(f_A,f_B,P,C) B=(fA​,fB​,P,C) 其中 f A f_A fA​和 f B f_B fB​是特征提取函数,通常基于CNN。 P P P是池化函数, C C C是分类函数。

特征提取 特征提取一般采用CNN,根据是否共享,可以由如下三种方式: 在这里插入图片描述

双线性combination 主要就是用外积(matrix outer product)来组合两个CNN(A和B)的feature map (当然也可以不用CNN) 对于图片 I I I和位置 l l l,其双线性combination为: 在这里插入图片描述 其中位置 l l l 涵盖了位置和尺度, I I I 是图像。 f f f 的维度是(K,D),D是指channel。如果A和B输出的特征维度分别是(K,M)和(K,N),经过bilinear后维度变为(M,N)。外积导致特征的维度D 增大为原来的平方。

pooling函数 pooling函数整合所有位置的bilinear combination,来得到图片的全局信息: 在这里插入图片描述 由于特征的位置维度被求和运算消除掉了,得到的bilinear特征与位置、顺序无关,是orderless的。 最后将bilinear特征经过符号平方根变换,并增加l2标准化(elementwise normalization layer) 在这里插入图片描述

分类 原文分类采用了SVM

降低维度 Compact Bilinear Pooling-CVPR2016

由于上述模型的得到的特征维度较高,那么得到的参数数目较多,计算量较大,存储和读取开销较大。这篇文章就采用了一种映射的方法,希望能够达到Bilinear model的performance情况,能够尽量的减少特征的维数。 首先,论文将bilinear model 看做是一种核方法的形式,对于不同的 x的不同特征,x,y,可以进行如下的核方法转化。 在这里插入图片描述 然后论文希望找到一种映射ϕ(x),使得≈k(x,y)这很像是核方法反着用的形式。 在这里插入图片描述 论文采用了两种方法的映射,Random Maclaurin(RM)和Tensor Sketch(TS),这两个映射的期望都是2,方差为1/d。 在这里插入图片描述 如上图,FB代表原始的full bilinear pooling方法。 通过对比,可以发现,当d为较小维度的时候,就可以得到与bilinear model 相同的精度。其中,蓝色线为full bilinear pooling 方法的误差。(但总体比full bilinear方法要差一点)

Low-rank Bilinear Pooling for Fine-Grained Classification-CVPR2017

这篇文章的目的也是要降低参数维度。同时,提高模型的精度。论文与原始论文模型不同的是,这篇论文采用对称的网络模型,也就是两个steam是相同的,那么只需要训练一个CNN过程就好,大大的减少了计算的开支。同时特征的意义就变为在位置i上特征的相关性矩阵。最后论文采用了一个低秩的分类器进行分类。 在这里插入图片描述

跨层双线性池化 Hierarchical Bilinear Pooling for Fine-Grained Visual Recognition-ECCV2018

Hierarchical Bilinear Pooling for Fine-Grained Visual Recognition论文笔记 作者源码—caffe pytorch实现1 —acc=80.42 pytorch实现2—骨干网resnet

贡献:

我们开发了一种简单但有效的跨层双线性池技术,它同时支持特性的层间交互,并以一种相互增强的方式学习细粒度表示。.在跨层双线性池的基础上,提出了一种分层双线性池集成框架,对多个跨层双线性模块进行集成,从中间卷积层获取互补信息,提高性能。 2.在跨层双线性池的基础上,提出了一种分层双线性池集成框架,对多个跨层双线性模块进行集成,从中间卷积层获取互补信息,提高性能。我们对三个具有挑战性的数据集(幼鸟、斯坦福汽车、fgvc飞机)进行了综合实验,结果证明了我们方法的有效性。我们对三个具有挑战性的数据集(幼鸟、斯坦福汽车、fgvc飞机)进行了综合实验,结果证明了我们方法的有效性。

整体模型结构: 在这里插入图片描述

总的来说 Hierarchical Bilinear Pooling 比 Bilinear Pooling多的就是层之间的交互,具体是这样实现的:以最简单的结构举例,假设两个CNN都采用VGG-16结构,去掉VGG的全连接层,卷积层最后三层定义为relu5_1, relu5_2, relu5-3,Bilinear Pooling 就是将CNN1的relu5-3和CNN2的relu5-3做了Bilinear Pooling操作,得到的结果进行分类。而Hierarchical Bilinear Pooling是将CNN2的relu5-3分别和CNN1的relu5-1,relu5-2,relu5-3做Bilinear Pooling操作,得到三组特征,并将这些特征拼接在一起,最后进行分类。 在这里插入图片描述

结果对比: FBP表示Factorized Bilinear Pooling(Hadamard product for low-rank bilinear pooling. arXiv preprint arXiv:1610.04325 (2016)) CBP表示Cross-layer Bilinear Pooling HBP表示Hierarchical Bilinear Pooling 在这里插入图片描述 在这里插入图片描述

AAAI 2020 paper: “Revisiting Bilinear Pooling: A Coding Perspective”.

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3