Advertisement

【论文笔记】AP-CNN: Weakly Supervised Attention Pyramid Convolutional Neural Network for FGVC

阅读量:

目录

  • task
  • 数据集
  • AP-CNN
    • 1、主要改进

      • 1)Attention Pyramid(注意金字塔)
      • 2) ROI引导的细化模块
    • 2、与主流模型比较

    • 3、可视化

    • 4、总结

task

Fine-Grained Visual Classification(细粒度视觉分类),以下简称FGVC。
相较于传统的目标检测和分类,有如下两个难点:

1.高类内方差(high intra-class variance):
图片中属于同一类别的对象通常呈现显著不同的姿态和视角。

2.低类间方差(low inter-class variance):
下属类(例如哈士奇和金毛两个下属类,都属于狗这一超类)之间的视觉差异往往是微妙的,因为它们属于同一超类别。

数据集

当前细粒度分类的主流数据集有三个:

  • CUB-200-2011:鸟类数据集,200类11788张图像,每张图像包含15各部位的位置信息。(位置信息主要给基于部件的网络模型训练用)
  • Stanford Cars:汽车数据集,196类16185张图像,不包含部件信息。
  • FGVC-Aircraft:飞机数据集,102类10200张图像,不包含部件信息。

近两年大部分细粒度分类论文都以上述三个数据集作为benchmark。

AP-CNN

2021年2月刊登在IEEE的一篇细粒度分类的文章。
论文地址(下载需要校园网)
源码地址

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

1、主要改进

1)Attention Pyramid(注意金字塔)

在FPN的基础上,对每一层feature map都使用注意力机制,形成一个自下而上的注意力层级结构,作者给其取名为 注意金字塔(Attention Pyramid) ,这个结构中每一层又包含两个部分,分别是 空间注意通道注意 ,生成过程如下图所示:
在这里插入图片描述

每一层的通道注意由FPN中对应层的Feature map进行一次全局平均池化和两次全连接而成。
公式如下:

A^{(c)}_k=\sigma(W_2\cdot ReLU(W_1\cdot GAP(F_k)))

空间注意则由对应的Feature map进行一次3*3的反卷积,再做sigmoid而成。
公式如下:

A^{(s)}_k=\sigma(v_c*F_k)

空间注意通常的做法 是对特征层进行最大池化平均池化 ,之后把这俩结果进行堆叠,再做1*1卷积,然后sigmoid,最后和原特征层相乘即可。

这个部分作者没有做消融实验,我认为作者是想要和之前已经存在的CBAM进行区别,所以进行反卷积,魔改了一下😓。

2) ROI引导的细化模块

流程图:
在这里插入图片描述
以上述注意金字塔得到的空间注意 A^{s}_{k} 作为掩膜,在每一层都生成对应数量的ROI(region of interest),效果如下:
在这里插入图片描述
之后根据这些生成的ROI做基于ROI的Dropblock和Zoom-in(过程省略,因为非常简单),得到最终的特征map Z_k.

最后再对 Z_k 做一次分类,将这次的结果和初始FPN经过注意力后得到的分类结果进行平均,得到最终结果。

2、与主流模型比较

在这里插入图片描述

3、可视化

首先在训练时加上可视化选项,cd到AP-CNN目录下,激活对应环境,输入:

复制代码
    python -m vindom.server
    
    
    python
    
    

在本机指定的窗口(官方初始定义为8097)
出现如下提示:
在这里插入图片描述
浏览器打开本机对应端口:
在这里插入图片描述
然后训练文件,输入:

复制代码
    python train.py --visualize
    
    
    python
    
    
  • 记得要带上可视化选项。
    如下提示,则开始训练。
    在这里插入图片描述
    此时观察到浏览器端口页面变为训练与测试图像的ROI和三层mask展示:
    在这里插入图片描述
    (顺序被我不小心打乱了😓,我还不会恢复…)

4、总结

  • 本文其实没有任何的创新点,作者将空间注意通道注意 在FPN每一层都进行运用,得到了相较于baseline:NTS 在CUB-200-2011上0.9个点的精度提升。
  • lego的方法值得学习和应用😏

全部评论 (0)

还没有任何评论哟~