Bilinear CNN Models for Fine-grained Visual Recognition论文总结

双线性定义:包含两个特征提取器,其输出经过外积(外积WiKi)相乘、池化后获得图像描述子。

-作者思路

  • 局部模型高效性的原因:本文中,作者声称局部推理的高效性在于其与物体的位置及姿态无关。纹理表示通过将图像特征进行无序组合的设计,而获得平移无关性。
  • 纹理表征性能不佳的思考:基于SIFT及CNN的纹理表征已经在细粒度物体识别上显示出高效性,但其性能还亚于基于局部模型的方法。其可能原因就是纹理表示的重要特征并没有通过端到端训练获得,因此在识别任务中没有达到最佳效果。
  • 洞察点:某些广泛使用的纹理表征模型都可以写作将两个合适的特征提取器的输出,外积之后,经池化得到。
    首先,(图像)先经过CNNs单元提取特征,之后经过双线性层及池化层,其输出是固定长度的高维特征表示,其可以结合全连接层预测类标签。最简单的双线性层就是将两个独立的特征用外积结合。这与图像语义分割中的二阶池化类似。

这篇文章的主要思想是对于两个不同图像特征的处理方式上的不同。传统的,对于图像的不同特征,我们常用的方法是进行串联(连接),或者进行sum,或者max-pooling。论文的主要思想是,研究发现人类的大脑发现,人类的视觉处理主要有两个pathway, the ventral stream是进行物体识别的,the dorsal stream 是为了发现物体的位置。论文基于这样的思想,希望能够将两个不同特征进行结合来共同发挥作用,提高细粒度图像的分类效果。论文希望两个特征能分别表示图像的位置和对图形进行识别。论文提出了一种Bilinear Model。下面就是bilinear cnn model的示意图
Bilinear CNN Models for Fine-grained Visual Recognition论文总结_第1张图片
在结构上,由于2个CNN提取的特征,进行外积相乘,从而产生了大量特征之间的两两组合
两个不同的stream代表着通过CNN得到的不同特征,然后将两个特征进行bilinear 操作。接下来,我们将要对bilinear model 进行定义。一个bilinear model 由四元组构成,B=(fA,fB,P,C)B=(fA,fB,P,C),其中fA,fBfA,fB为来个不同的特征,P为Pooling操作,C表示分类器;对特征的每一个位置ll,进行如下计算。
在这里插入图片描述
通俗一点讲,就是对图像上的每个位置上的特征进行矩阵相乘,然后进行sum pooling 或者进行max-pooling。对于一个CNN来讲,有c个通道数,那么在位置i上的特征就是1c的大小,然后与同一位置上,不同CNN得到的1c的矩阵进行乘积,得到cc的矩阵,然后将所有位置上的cc的矩阵进行求和,再转换成向量的形式就可以得到Bilinear vector。得到的特征需要进行开平方y←sign(x)|x|−−√y←sign(x)|x|,和归一化操作z←y/||y||2Fz←y/||y||F2。反向传播过程为:
Bilinear CNN Models for Fine-grained Visual Recognition论文总结_第2张图片
Bilinear model 可以看做是其他特征算子(BOW,FV,VLAD)的通用形式。
参考:1)小黄人的banana
2) kangdk
3)弥漫的幻雪

你可能感兴趣的:(深度学习,图像分类)