共计 3586 个字符,预计需要花费 9 分钟才能阅读完成。
论文提出细粒度分类解决方案 CAP,通过上下文感知的注意力机制来帮忙模型发现轻微的特色变动。除了像素级别的注意力机制,还有区域级别的注意力机制以及部分特色编码方法,与以往的视觉计划很不同,值得一看
起源:晓飞的算法工程笔记 公众号
论文: Context-aware Attentional Pooling (CAP) for Fine-grained Visual Classification
- 论文地址:https://arxiv.org/abs/2101.06635
- 论文代码:https://github.com/ArdhenduBehera/cap
Introduction
论文认为大多数优良的细粒度图像识别办法通过挖掘指标的部分特色来辅助辨认,却没有对部分信息进行标注,而是采取弱监督或无监督的形式来定位部分特色地位。而且大部分的办法采纳预训练的检测器,无奈很好地捕获指标与部分特色的关系。为了可能更好地形容图片内容,须要更粗疏地思考从像素到指标到场景的信息,不仅要定位部分特色 / 指标的地位,还要从多个维度形容其丰盛且互补的特色,从而得出残缺图片 / 指标的内容。
论文从卷积网络的角度思考如何形容指标,提出了 context-aware attentional pooling(CAP) 模块,可能高效地编码部分特色的地位信息和外观信息。该模块将卷积网络输入的特色作为输出,学习调整特色中不同区域的重要性,从而得出部分区域的丰盛的外观特色及其空间特色,进而进行精确的分类。
论文的次要奉献如下:
- 提出在细粒度图像识别畛域的扩大模块 CAP,可能简略地利用到各种卷积网络中,带来可观的细粒度分类性能晋升。
- 为了捕获指标 / 场景间的细微差别,提出由区域特色疏导的上下文相干的 attention 特色。
- 提出可学习的池化操作,用于主动抉择循环网络的暗藏状态形成空间和外观特色。
- 将提出的算法在 8 个细粒度数据集上进行测试,取得 SOTA 后果。
- 剖析不同的根底网络,扩充 CAP 模块的利用范畴。
Proposed Approach
论文算法的整体流程如上图所示,输出图片,输入具体隶属类别,蕴含 3 个组件 (3 组参数):
- 根底 CNN 网络 $\mathcal{F}(.;\theta_b)$
- CAP 模块 $\mathcal{F}(.;\theta_c)$
- 分类模块 $\mathcal{F}(.;\theta_d)$
Context-aware attentional pooling (CAP)
定义卷积网络输入的特色为 $x=\mathcal{F}_b(I_n;\theta_b)$,CAP 的模块综合思考像素级特色、小区域特色、大区域特色以及图片级特色的上下文信息进行分类。
pixel-level contextual information
像素级特色的上下文信息次要学习像素间的关联度 $p(x_i|x_j;\theta_p)$,在计算 $j$ 地位的输入时依据关联度综合所有其余像素特色,间接应用 self-attention 实现,特色转化应用 $1\times 1$ 卷积。这一步间接对骨干网络输入的特色进行操作,但没在整体流程图中体现。
Proposing integral regions
为了更高效地学习上下文信息,论文在特色图 $o$ 上定义不同粒度级别的基本区域,粒度级别由区域的大小决定。假如 $(i,j)$ 地位上的最小的区域为 $r(i,j\Delta_x,\Delta_y)$ 为例,可通过放大宽高衍生出一系列区域 $R=\{r(i,j,m\Delta_x,n\Delta_y)\}$,$i < i + m \Delta_x \le W$,$j < j + n \Delta_y \le H$。在不同的地位产生类似的区域合集 $R$,失去最终的区域合集 $\mathcal{R}=\{R\}$。$\mathcal{R}$ 笼罩了所有的地位的不同宽高比区域,能够提供全面的上下文信息,帮忙在图片的不同层级提供轻微特色。
Bilinear pooling
依照上一步,在特色图上失去 $|\mathcal{R}|$ 个区域,大小从最小的 $\Delta_x\times\Delta_y\times C$ 到最大的 $W\times H\times C$,论文的指标是将不同大小的区域示意为固定大小的特色,次要采纳了双线性插值。定义 $T_{\psi}(y)$ 为坐标转换函数,$y=(i,j)\in \mathbb{R}^c$ 为区域坐标,对应的特征值为 $R(y)\in \mathbb{R}^C$,则转换后的图片 $\tilde{R}$ 的 $\tilde{y}$ 坐标上的值为:
$R(T_{\psi(y)})$ 为采样函数,$K(\cdots)$ 为核函数,这里采纳的是最原始的办法,将指标坐标映射回原图,取最近的四个点,按间隔进行输入,最终失去池化后的固定特色 $\bar{f}(w\times h\times C)$。
Context-aware attention
这里,论文应用全新的注意力机制来获取上下文信息,依据 $\bar{f}_r$ 与其余特色 $\bar{f}_{r^{‘}}(r, r^{‘}\in \mathcal{R})$ 的相似性进行加权输入,使得模型可能选择性地关注更相干的区域,从而产生更全面的上下文信息。以查问项 $q(\bar{f}_r)$ 和一组关键词项 $k(\bar{f}_{r^{‘}})$,输入上下文向量 $c_r$:
参数矩阵 $W_{\beta}$ 和 $W_{\beta^{‘}}$ 用来将输出特色转换为查问项核要害项,$W_{\alpha}$ 为非线性组合,$b_{\alpha}$ 和 $b_{\beta}$ 为偏置项,整体的可学习参数为 $\{W_{\beta},W_{\beta^{‘}},W_{\alpha},b_{\alpha},b_{\beta}\}\in\theta_c$,而注意力项 $\alpha_{r,r^{‘}}$ 则代表两个特色之间的相似性。这样,上下文向量 $c_r$ 可能代表区域 $\bar{f}_r$ 蕴含的上下文信息,这些信息是依据其与其余区域的相干水平取得的,整体的计算思维跟 self-attention 根本类似。
Spatial structure encoding
上下文向量 $c=\{c_r|r=1,\cdots|\mathcal{R}|\}$ 形容了区域的要害水平和特点,为了进一步退出空间排列相干的构造信息,论文将区域的上下文向量 $c$ 转为区域序列 (论文按上到下、左到右的程序),输出到循环神经网络中,应用循环神经网络的暗藏单元 $h_r\in\mathbb{R}^n$ 来表白结构特征。
区域 $r$ 的两头特色可示意为 $h_r=\mathcal{F}_h(h_{r-1},f_r;\theta_h)$,$\mathcal{F}_h$ 采纳 LSTM,$\theta_h\in\theta_c$ 蕴含 LSTM 的相干参数。为了减少泛化能力和缩小计算量,上下文特色 $f_r\in\mathbb{R}^{1\times C}$ 由 $c_r\in\mathbb{R}^{w\times h\times C}$ 进行全局均匀池化失去,最终输入上下文特色序列 $f=(f_1,f_2,\cdots,f_r,\cdots,f_{|\mathcal{R}|})$ 对应的暗藏状态序列 $h=(h_1,h_2,\cdots,h_r,\cdots,h_{|\mathcal{R}|})$,后续用于分类模块中。
Classification
为了进一步疏导模型分辨轻微的变动,论文提出可学习的池化操作,可能通过组合响应类似的暗藏层 $h_r$ 来整合特色信息。论文借鉴 NetVLAD 的思维,用可导的聚类办法来对暗藏层的响应值进行转换,首先计算暗藏层响应对类簇 $k$ 的相关性,再加权到类簇 $k$ 的 VLAD encoding 中:
每个类簇都有其可学习的参数 $W_i$ 和 $b_i$,整体思维基于 softmax,将暗藏层的响应值按 softmax 的权重调配到不同的类簇中。在失去所有类簇的 encoding 向量后,应用可学习的权值 $W_N$ 和 softmax 进行归一化。因而,分类模块 $\mathcal{F}_d$ 的可学习参数为 $\theta_d=\{W_i, b_i, W_N\}$。
Experiments and Discussion
在不同的数据集上,对不同办法进行比照。
不同骨干网络下的准确率比照。
不同模块输入特色的可视化,图 b 是退出 CAP 后,骨干网络输入的特色。
Conclusion
论文提出细粒度分类解决方案 CAP,通过上下文感知的注意力机制来帮忙模型发现指标的轻微特色变动。除了像素级别的注意力机制,还有区域级别的注意力机制以及部分特色编码方法,与以往的视觉计划很不同,值得一看。
如果本文对你有帮忙,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】