文章提出了一个GCL模型,它主要的创新在于两个部分,其一是criss-cross graph propagation (CGP),其二是correlation feature strengthening (CFS) ,CGP的目的是用来在区域的discriminative ability学习中,同时考虑全局图像级上下文和局部空间上下文。CFS的目的是用来探索区域特征向量之间的内部语义相关性,以获得更好的判别能力。
思维导图
Model
criss-cross graph propagation
CGP模块,用backbone对输入图像进行特征提取,得到
M
0
∈
R
C
×
H
×
W
M_0\in \Bbb{R}^{C\times H\times W}
M0∈RC×H×W,然后将其输入的CGP模块,整个的CGP模块的输出是
其中
F
\mathcal{F}
F包含节点表示,邻接矩阵的计算,图更新。CGP模块最终的输出是
M
S
∈
R
C
×
H
×
W
M_S\in \Bbb{R}^{C\times H\times W}
MS∈RC×H×W。
Node representation. node的产生是通过简单的卷积运算实现的,
W
T
W_T
WT是一个随机初始化的,通过3个不同的
f
f
f计算得到最初的三个node的feature maps
M
G
1
,
M
G
2
,
M
G
3
M_G^1,M_G^2,M_G^3
MG1,MG2,MG3。那么
M
G
M_G
MG中的每一个在固定空间位置跨通道的
V
T
∈
R
C
×
1
×
1
V_T\in \Bbb{R}^{C\times 1\times 1}
VT∈RC×1×1在图像中都有一个对应的小区域。(我感觉就类似于感受野吧!!! 不是很确定),将这个小区域作为 node representation。
Adjacent matrix computing. 在feature map
M
G
1
,
M
G
2
M_G^1,M_G^2
MG1,MG2中,得到了
W
×
H
W\times H
W×H个
C
\mathcal{C}
C维的向量,在两个特征图之间用node vector 进行內积,得到邻接矩阵,用它来说明节点之间的相关程度。在
M
G
1
,
M
G
2
M_G^1,M_G^2
MG1,MG2中的
p
1
,
p
2
p_1 ,p_2
p1,p2之间的相关性示例如下,
V
1
p
1
,
V
2
p
2
V_1^{p_1},V_2^{p_2}
V1p1,V2p2分别代表
p
1
,
p
2
p_1,p_2
p1,p2node representation vectors。
p
2
p_2
p2和
p
1
p_1
p1不是随意的,它们之间有一定的约束,即他们必须处在同一行或同一列。因此在
M
G
1
M_G^1
MG1中的每个节点得到
W
+
H
−
1
W+H-1
W+H−1个相关值,组织通道中的相对位移并获得输出相关矩阵
M
C
∈
R
K
×
H
×
W
M_C\in \Bbb{R}^{K\times H\times W}
MC∈RK×H×W,另
K
=
W
+
H
−
1
K=W+H-1
K=W+H−1,然后
M
C
M_C
MC层经过softmax层去产生邻接矩阵
R
∈
R
K
×
H
×
W
R\in \Bbb{R}^{K\times H\times W}
R∈RK×H×W
R
i
j
k
R^{ijk}
Rijk是第i行,第j列,第k个通道的相关权重系数。
M
G
3
∈
R
C
×
H
×
W
M_G^{3}\in \Bbb{R}^{C\times H\times W}
MG3∈RC×H×W和邻接矩阵输入到更新操作
其中
V
2
w
h
V_2^{wh}
V2wh是
M
G
3
M_G^3
MG3的第w行,第h列的节点,
(
w
,
h
)
(w,h)
(w,h)在集合中
[
(
i
,
1
)
,
.
.
.
,
(
i
,
H
)
,
(
1
,
j
)
,
.
.
.
,
(
W
,
j
)
]
[(i,1),...,(i,H),(1,j),...,(W,j)]
[(i,1),...,(i,H),(1,j),...,(W,j)]。可以通过将其水平和垂直方向的节点与相应的相关权重系数
R
i
j
k
R^{ijk}
Rijk进行组合来更新节点
M
U
i
j
M^{ij}_U
MUij。
与ResNet相似,采用残差学习
其中
α
\alpha
α是一个自适应权重参数,并逐渐学习为判别discriminative correlation features分配更多权重,它的范围是【0,1】,用这种方式,
M
S
M_S
MS聚合了原始输入特征和相关特征,以挑选出 more discriminative patches,然后将
M
S
M_S
MS作为输入,提供给CGP的下一个迭代。
Discriminative Patch Samping. 为了使网络能够学习不同大小的discriminative regions,结合了特征金字塔的思想,从三种不同比例的feature map中产生patches
得到残差特征图
M
S
M_S
MS之后,我们将其输入到由
1
×
1
×
N
1\times 1\times N
1×1×N和一个sigmoid函数
σ
\sigma
σ组成的discriminative response layer来学习discriminative probability maps
S
∈
R
N
×
H
×
W
S\in \Bbb{R}^{N\times H\times W}
S∈RN×H×W,来说明最后的discriminative regions对最终分类的影响,
N
N
N是feature map中给定位置的default patches的数量。然后,为每一个default patch
p
i
j
k
p_{ijk}
pijk分配一个discriminative probability value ,
其中
(
t
x
,
t
y
,
t
w
,
t
h
)
(t_x,t_y,t_w,t_h)
(tx,ty,tw,th)表示的是每一个patch的坐标,
s
i
j
k
s_{ijk}
sijk是第
i
i
i行,第
j
j
j列,第
k
k
k个通道的discriminative probability value。最后网络根据概率值选择前M个patch,其中M为超参数。
Correlation Feature Strengthening
设计的这个模块就是来探索区域特征向量之间的内部语义相关性,以获得更好的判别能力。
Node representation and Adjacent matrix computing. 为了构建图来挖掘所选patches之间的相关性,我们从
M
M
M个patches中提取
D
D
D维特征向量作为
M
M
M个节点,输入到GCN网络中,然后就是邻接矩阵的计算,这个矩阵表示了节点之间的相关性,计算方式如下
R
i
j
R_{ij}
Rij表示两个节点
n
i
,
n
j
n_i,n_j
ni,nj之间的相关系数,
c
i
j
c_{ij}
cij是权重矩阵
C
∈
R
M
×
M
C\in \Bbb{R}^{M\times M}
C∈RM×M中的相关权重系数,通过反向传播学习
c
i
j
c_{ij}
cij来调整相关系数
R
i
j
R_{ij}
Rij,然后对邻接矩阵的每一行执行softmax,进行归一化操作,以确保连接到一个节点的所有边的总和等于1。
构造的相关图说明了所选patches之间的关系强度。
Graph updating. 将M个节点的特征表示
N
∈
R
M
×
D
N\in \Bbb{R}^{M\times D}
N∈RM×D和对应的邻接矩阵
A
∈
R
M
×
M
A\in \Bbb{R}^{M\times M}
A∈RM×M作为GCN网络的输入,来更新节点的特征为
N
′
∈
R
M
×
D
′
N^{'}\in \Bbb{R}^{M\times D^{'}}
N′∈RM×D′,最终一层的GCN能够表示为
其中
W
∈
R
D
×
D
′
W\in \Bbb{R}^{D\times D^{'}}
W∈RD×D′是学习的权重参数,
h
h
h是非线性函数(ReLu in the experiments)
Loss Function
设计了一个联合损失函数,来将CGP和CFS进行端到端的训练,包括basic fine-grained classification loss L c l s \mathcal{L}_{cls} Lcls、guided loss L g u d \mathcal{L}_{gud} Lgud、rank loss L r a n k \mathcal{L}_{rank} Lrank和feature strengthening loss L f e a \mathcal{L}_{fea} Lfea
其中
λ
1
,
λ
2
,
λ
3
\lambda_1,\lambda_2,\lambda_3
λ1,λ2,λ3是三个平衡的超参数,在实验验证后,将其设置为1.(emmmm 搞着一锤子干嘛)
使用X表示原始图像,定义
P
=
P
1
,
P
)
2
,
.
.
.
,
P
N
P={P_1,P_)2,...,P_N}
P=P1,P)2,...,PN和
P
′
=
P
1
′
,
P
2
′
,
.
.
.
,
P
N
′
P^{'}={P_1^{'},P_2^{'},...,P_N^{'}}
P′=P1′,P2′,...,PN′分别为使用CFS和没有使用CFS的selected discriminative patches,
C
\mathcal{C}
C是置信度函数,它反映了分类为正确类别的可能性,
S
=
S
1
,
S
2
,
.
.
.
,
S
N
S={S_1,S_2,...,S_N}
S=S1,S2,...,SN表示discriminative probability scores.
感觉最后的这个损失上限应该是M,因为将M个patch输入到后续的CFS中,