Deep CNNs with Spatially Weighted Pooling for Fine-Grained Car Recognition

  看到一篇新出的文章Vehicle classication using ResNets, localisation and spatially-weighted pooling,里面提到了一种新的池化方法spatially-weighted pooling,看名字觉得挺新奇的,但是没有具体解释具体的操作过程。然后,去搜索了一下关于这种方法,于是找到了Deep CNNs with Spatially Weighted Pooling for Fine-Grained Car Recognition。这篇文章是关于汽车的细粒度识别的问题。
  具体看一下spatially weighted pooling的操作方法。

一、SWP的结构


  从图形中,很容易看出,作者是把spatially weighted pooling接在了最后一个卷积层的后面。假设最后一个卷积层的输出结果用X表示, X的维度为:[H, W, D],其中D代表通道数。
  swp层的参数是一个维度为[H, W, K]的矩阵,用M表示,将X传入swp层,其和矩阵M进行如下运算:

  上述公式中,xi是一个维度为[1, 1, D]的矩阵,mi是1x1的矩阵,上标k表示M的第k张feature map,求和表示xi需要首先遍历整个维度为[H, W]的feature map,然后对遍历的结果求和。
  那么,按照上述公式计算,返回的结果pk是一个维度为[1, 1, D]的矩阵,其中k和M矩阵的第k个通道对应。
  上述结果是X经过M矩阵的第k个通道的返回结果,那么swp层的输出结果为:

  返回值P是一个维度为[K, D]的二维矩阵。

二、SWP的反向传播

  假设X是swp层的输入,维度为:[ H, W, D ];M是swp层的参数,维度为:[ H, W, K ] ;P为swp层的输出结果,维度为: [ K, D ]。dL/dp表示误差传播到P的梯度,那么:


  ps:(1)关于swp方法,其实和resnet里面的global average pooling (GAP) layer很像,只不过GAP用的是卷积,输出的是维度为[1, 1, K]的向量(按照本文的符号表示方法)。
  而swp层,是把M矩阵的每一个通道拿出来,分别和X的每一个通道进行卷积(当然,作者给的计算方法和卷积稍微有一点不同,卷积需要把矩阵进行旋转)。然后把得到的结果pk进行concatenation。
  (2)看一下,作者给出的一些swp层的输出结果:


  上面的每一幅图片为X经过M的一个通道的输出结果,这和注意力模型也有点类似,只不过,注意力模型要求M的取值要在0到1之间。
  (3)虽然从(2)的结果来看,我们可以给它找一些合理的解释,比如类似注意力模型,可以对物体不同地方的细节进行关注(不知道这种结果对于其他的数据集也可以取得类似的效果)。但是,这样做的目的或者意义在哪里呢,仅仅是对GAP的结果进行叠加(concatenation)吗?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容