Bi-Modal Progressive Mask Attention for Fine-Grained Recognition
文章目录
摘要
语言模态聚合被证明是一种改善视觉识别的技术。
本文提出渐进式掩模注意力(PMA)模型,通过利用视觉和语言双模态进行细粒度识别。模型既能通过基于掩模的方式逐步捕获视觉模态中最具区别性的部分,又能在交互对齐方式中探索语言模态中的知识。
- 自我注意模块,从图像或文本描述中关注图像中的关键块
- 查询-关系模块,抓住文本的关键词或短语,在两种方式之间建立联系。
- 从多个阶段学到的双态表示被汇总为最终的识别特征。
模型需要原始图像和原始文本描述。
论文中CUB和FGVC-Aircraft的文本描述不知道在哪里,给的网址是16年用文本检索图的论文,但是人家也没公开这些数据呀。
1 引言
本文提出渐进式掩模注意力(PMA),该方法探索了用于细粒度识别的双态分析。PMA统一采用了一种渐进式掩模策略,可同时应用于视觉和语言模态。文本描述是较弱的监督,并且可提供视觉域无法显示的语义。
为将PMA应用于细粒度识别,提出了双模态渐进式掩模注意力(Bi-Modal PMA)模型,可以从视觉和文本中获取关键信息。通过CNN和LSTM分别将原始图像和文本处理为视觉描述符和词嵌入,两种表示经过双态PMA中以产生联合表示。自注意力机制定位关键部分,或捕获语言模态中的知识。查询-关系模块连接它们。由于提出了注意力,可以对齐两种模态的表示,并获得更多的判别性和丰富的联合特征。可以同时获取全局图像特征,部分图像表示,全局文本特征和对齐的部分文本表示。
渐进式掩模策略可以堆叠多个PMA模块。基于掩模的策略,以丢弃视觉中对象的定位部分,并同时过滤掉语言中定位部分的相关名词短语。
针对没有文本的情况,开发了一种知识蒸馏方法,将双态PMA在的泛化能力提炼成只能处理图像数据的学生模型,仅使用测试图像就能够做出准确的预测,性能和用视觉和语言模型的准确性相匹配。
文章的主要工作:
- 统一框架PMA,结合视觉和语言
- 基于注意力的方法,捕获重要的对象部分以形成部分级别的表示形式。基于掩模的阶段性策略来堆叠这些注意单元。整个模型可以逐步找到一组具有区别性但不同的关键部分,或者使用文本描述来提供视域外的知识
- 知识蒸馏
- 实验
3 方法
3.1 符号
SAM模块
自注意力模块,从单一模态收集语义
![image-20210521194516914](https://i-blog.csdnimg.cn/blog_migrate/fb546b88b4bb96ceaa3351a9a9a533de.png)
x x x是 d d d维的位置向量,输出是该位置的注意力程度。
QRM模块
查询-关系模块,建立起视觉和语言双态之间的联系。引导视觉特征来查询语言模态中的相关的关键
![image-20210521194948119](https://i-blog.csdnimg.cn/blog_migrate/28e24386eed9529fc6b70d0bd5d1219b.png)
得到y与x的相似程度
掩模模板
M = { m 1 , . . . , m n } M=\{m_1,...,m_n\} M={m1,...,mn}
n n n与输入向量的数量一致,视觉态和语言态的对应掩模模板分别是: M V = { m 1 v , . . . , m n v } M^V=\{m_1^v,...,m_n^v\} MV={m1v,...,mnv}、 M T = { m 1 t , . . . , m n t } M^T=\{m_1^t,...,m_n^t\} MT={m1t,...,mnt}。(输入向量的个数式位置的个数)。 m i m_i mi要么是 0 0 0要么是 − ∞ -\infty −∞。
3.2 视觉态PMA
自我注意力机制定位原始图像最区分性部分。将PMA应用到注意力模块中,以逐步地获得一组不同且不重叠的部分。对于每个阶段,使用掩模丢弃上一个阶段中的定位部分,可以在不同阶段定位具有区别性且不同的部分。 还将通过注意力权重和判别性部分特征计算出的全局图像语义汇总为单个阶段的最终状态。
现阶段的区别部分的特征向量将在语言模态中用于文本指导。
输入
图像 -> 卷积 -> 特征图 X ∈ R h × w × d X\in R^{h\times w\times d} X∈Rh×w×d -> 2*2最大值池化 -> X ~ \tilde{X} X~。 X ~ \tilde{X} X~视作若干 d d d维向量, X ~ = { x 1 ~ , . . . , x n ~ } \tilde{X}=\{\tilde{x_1},...,\tilde{x_n}\} X~={x1~,...,xn~}。
视觉表示
每个位置的注意力权重由对应的位置计算得到:
a
i
v
=
exp
(
S
A
M
(
x
i
~
)
+
m
i
v
)
∑
j
=
1
n
exp
(
S
A
M
(
x
j
~
)
+
m
j
v
)
a^v_i=\frac{\exp(SAM(\tilde{x_i})+m^v_i)}{\sum^n_{j=1}\exp(SAM(\tilde{x_j})+m^v_j)}
aiv=∑j=1nexp(SAM(xj~)+mjv)exp(SAM(xi~)+miv)
每个位置加权就有了上下文向量
f
g
l
o
b
a
l
v
=
∑
i
=
1
n
a
i
v
x
i
~
\mathbf f^v_{global}=\sum^n_{i=1}a^v_i\tilde{x_i}
fglobalv=∑i=1naivxi~,可以认为是全局视觉流,反映了图像的视觉信息。
根据注意力权重定位关键部分,最大的
a
i
v
a^v_i
aiv应该是最重要的,对应的
x
i
x_i
xi(大小是2*2)是关键部分,将其表示为
x
m
a
x
x_{max}
xmax。在
x
m
a
x
x_{max}
xmax上采用1×1卷积和全局平均池化,获得部件级特征,定义为
f
l
o
c
a
l
v
\mathbf f^v_{local}
flocalv,认为这是局部视觉流,当前视觉特征中最具代表性的语义。
最终的视觉表示:
f
v
i
s
i
o
n
=
[
f
g
l
o
b
a
l
v
;
f
l
o
c
a
l
v
]
\mathbf f_{vision}=[f^v_{global};f^v_{local}]
fvision=[fglobalv;flocalv]
PMA
如果当前阶段返回的最大注意力权重为 a max v a^v_{\max} amaxv,将掩模模板的对应元素更新为 − ∞ -\infty −∞。 之后的阶段中,注意力模块将基于更新的 M V M^V MV定位另一个重要部分。
3.3 语言态PMA
采用基于查询的注意力来抓住每个定位部分的相关细粒度名词短语。这些名词短语可以被认为是视觉领域的文本表示。语言描述通常包含一些原始图像无法表达的信息,还应用了一种具有渐进掩模策略的自我注意机制,以从语言模态中收集视觉域外的知识。
![image-20210521205927628](https://i-blog.csdnimg.cn/blog_migrate/69fa6e19d0638ebe8d5c42f05d90401b.png)
输入
原始文本 -> 名词短语 -> 词嵌入、LSTM -> 短语级别嵌入表示 Z = { z 1 , . . . , z p } Z\mathbf =\{z_1,...,z_p\} Z={z1,...,zp}, z i ∈ R d z_i\in R^d zi∈Rd。
语言表示
基于查询的注意力机制:
a
i
t
=
exp
(
Q
R
M
(
f
l
o
c
a
l
v
,
z
i
)
+
m
i
t
)
∑
j
=
1
n
exp
(
Q
R
M
(
f
l
o
c
a
l
v
,
z
j
)
+
m
j
t
)
a^t_i=\frac{\exp(QRM(f^v_{local},{z_i})+m^t_i)}{\sum^n_{j=1}\exp(QRM(f^v_{local},{z_j})+m^t_j)}
ait=∑j=1nexp(QRM(flocalv,zj)+mjt)exp(QRM(flocalv,zi)+mit)
得到局部语言流
f
l
o
c
a
l
t
=
∑
i
=
1
p
a
i
t
z
i
\mathbf f^t_{local}=\sum^p_{i=1}a^t_iz_i
flocalt=∑i=1paitzi。
想要挖掘语言中的图像中没有的信息:
a
~
i
t
=
exp
(
S
A
M
(
x
i
)
+
m
i
t
)
∑
j
=
1
n
exp
(
S
A
M
(
x
j
)
+
m
j
t
)
\tilde{a}^t_i=\frac{\exp(SAM({x_i})+m^t_i)}{\sum^n_{j=1}\exp(SAM({x_j})+m^t_j)}
a~it=∑j=1nexp(SAM(xj)+mjt)exp(SAM(xi)+mit)
得到全局语言流
f
g
l
o
b
a
l
t
=
∑
i
=
1
p
a
~
i
t
z
i
\mathbf f^t_{global}=\sum^p_{i=1}\tilde a^t_iz_i
fglobalt=∑i=1pa~itzi
最终的视觉表示:
f
t
e
x
t
=
[
f
g
l
o
b
a
l
t
;
f
l
o
c
a
l
t
]
\mathbf f_{text}=[f^t_{global};f^t_{local}]
ftext=[fglobalt;flocalt]
PMA
如果权重位于前三,且比 1 / p 1/p 1/p大,则将掩模模板的对应元素更新为 − ∞ -\infty −∞。
3.4 特征聚合
每个阶段,将视觉和文本表示连接起来作为最终输出,每个阶段再经过全连接层:
f
f
i
n
a
l
i
=
F
C
(
[
f
v
i
s
u
a
l
i
;
f
t
e
x
t
i
]
)
\mathbf f^i_{final}=FC([f^i_{visual};f^i_{text}])
ffinali=FC([fvisuali;ftexti])
为了发挥多阶段的优势,汇总了这些输出状态(限制为3个),作为预测的最终表示形式。
先通过对特征图进行GAP来提取对象级表示
f
o
b
j
e
c
t
\mathbf f_{object}
fobject。 将对象级表示和多阶段的输出连接起来以形成最终表示:
F
=
[
f
o
b
j
e
c
t
;
f
f
i
n
a
l
1
;
f
f
i
n
a
l
2
;
f
f
i
n
a
l
3
]
F = [f_{object}; f ^1 _{final}; f ^2 _{final}; f ^3 _{final}]
F=[fobject;ffinal1;ffinal2;ffinal3]
再经过全连接层和softmax进行最终分类。
3.5 知识蒸馏
在都存在的情况下,才能用知识蒸馏,而没有文本时,就是交叉熵。后面只在有文本的数据集上做了该实验。
teacher:双态PMA;student:仅图像PMA
对于teacher:训练语料库
(
s
i
,
y
i
)
∈
{
S
,
Y
}
(s_i,y_i)\in\{S,Y\}
(si,yi)∈{S,Y},
s
i
s_i
si包含图像和文本数据。标准交叉熵:
L
(
Y
∣
S
;
θ
T
)
=
∑
i
=
1
N
∑
j
=
1
C
1
{
y
i
=
j
}
log
P
(
y
i
∣
s
i
;
θ
T
)
L(Y|S;\theta_T)=\sum^N_{i=1}\sum^C_{j=1}1\{y_i=j\}\log P(y_i|s_i;\theta_T)
L(Y∣S;θT)=i=1∑Nj=1∑C1{yi=j}logP(yi∣si;θT)
对于student:训练语料库
(
t
i
,
y
i
)
∈
{
T
,
Y
}
(t_i,y_i)\in\{T,Y\}
(ti,yi)∈{T,Y},
t
i
t_i
ti只包含图像。损失:
L
(
Y
∣
T
;
θ
S
)
=
∑
i
=
1
N
∑
j
=
1
C
P
(
j
∣
s
i
;
θ
T
)
⋅
log
P
(
j
∣
t
i
;
θ
S
)
L(Y|T;\theta_S)=\sum^N_{i=1}\sum^C_{j=1}P(j|s_i;\theta_T)\cdot\log P(j|t_i;\theta_S)
L(Y∣T;θS)=i=1∑Nj=1∑CP(j∣si;θT)⋅logP(j∣ti;θS)
4 实验
知识蒸馏
消融实验
-
学习阶段
-
各阶段的分类正确率
-
各阶段部分的数量,说明了为什么不是一个阶段多个部分,而是多个阶段每次一个部分
-
不同分支