Multi-Label Image Recognition with Graph Convolutional Networks
时间:2019年
Introduction
多目标检测可以通过对每个目标进行二分类来完成,但是这样做忽视了目标之间的关系,因此出现了基于概率图或者RNN的模型,前者将multi-label分类问题形式化为结构推理问题,但因为计算复杂度高,可拓展性(scalability)差,后者序列的方式来预测,顺序是学习到的或者预先定义的,其他一些模型使用attention机制,可以work但是具体原因很隐晦,它们都只考虑了图像之间局部关系,但仍然忽略了目标之间在全局上的关系。
本文提出了一个先进的基于GCN的模型来捕捉multi-label recognition问题中multi-label之间的关系,以保证scalability和flexibility。相对于将目标分类器当作独立的参数向量来学习,我们从prior label representation 中学习目标分类器的相互依赖关系(比如word embedding),通过使用基于GCN的映射。因为embedding-to-classifier 映射参数是被所有类共享的,所有classifier的梯度都能影响到基于GCN的classifier generation function,这隐晦地建模了Label之间的关系。我们设计了一个高效的label correlation matrix来引导信息在GCN的结点之间传递。特别的是我们提出了re-weighted scheme来平衡一个结点和它邻居的权值以备结点特征更新,这有效地避免了overfiting和over-smoothing。此外可视化分析表明,我们的模型可以学习到有意义的语义结构。
Contribution
- a novel end-to-end trainable multi-label image recognition framework, 使用GCN来映射label representation(word embedding) 到 inter-dependent object classifiers
- 详细研究了correlation matrix for GCN的设计并提出了一个高效的re-weighted scheme来同时避免overfitting和over-smoothing
- 在benchmark上的表现超过之前的模型
Approach
Graph Convolutional Network
与标准的在欧几里得空间上操作的卷积网络不同,GCN学习一个图
G
\mathcal{G}
G上的函数
f
f
f,以结点特征矩阵
H
l
∈
R
n
×
d
\mathbf{H}^l\in R^{n\times d}
Hl∈Rn×d和关系矩阵
A
∈
R
n
×
n
\mathbf{A}\in R^{n\times n}
A∈Rn×n为输入,其中
n
n
n是结点数,
d
d
d是结点特征维数,然后更新结点特征为
H
l
+
1
∈
R
n
×
d
′
\mathbf{H}^{l+1}\in R^{n\times d'}
Hl+1∈Rn×d′:
H
l
+
1
=
f
(
H
l
,
A
)
\mathbf{H}^{l+1}=f(\mathbf{H}^l,\mathbf{A})
Hl+1=f(Hl,A)
使用[14]中所述的卷积操作,
f
f
f可以表达为
H
l
+
1
=
h
(
A
^
H
l
W
l
)
\mathbf{H}^{l+1}=h(\hat{\mathbf{A}}\mathbf{H}^l\mathbf{W}^l)
Hl+1=h(A^HlWl)
其中 W l ∈ R d × d ′ \mathbf{W}^l\in R^{d\times d'} Wl∈Rd×d′是待学习的transformation matrix, A ^ \mathbf{\hat{A}} A^是正规化的关系矩阵 A \mathcal{A} A, h ( ⋅ ) h(\cdot) h(⋅)是非线性操作,本文中使用的是LeakyReLU。使用GCN,从而我们通过堆叠多层GCN来学习并建模复杂的结点关系。
GCN for Muilti-label Recognition
我们的ML-GCN实在GCN上提出的,传统的GCN node-level的输出是在每个结点上的预测得分,我们的GCN的输出是classifier,其中graph structure(即
A
A
A)是design from scratch的,模型的全局如图所示
模型由两部分组成,image representation learning 和 GCN based classifier learning
Image representation learning
本文使用ResNet-101作为base model来提取特征,如果输入图是
448
×
448
448\times 448
448×448的图像,则在"conv5_x"上可以得到
2048
×
14
×
14
2048×14×14
2048×14×14的特征,然后我们使用全局max-pooling来得到image-level的特征
x
x
x:
GCN based classifier learning
我们使用GCN-based映射函数学习了相互依赖的object classifier
W
=
{
w
i
}
i
=
1
C
W=\{w_i\}_{i=1}^C
W={wi}i=1C,
C
C
C是类别个数,我们stack GCN层,其中每层以上层的结点representation
H
l
H^l
Hl作为输入,输出新的结点representation
H
l
+
1
H^{l+1}
Hl+1,第一层是一个
Z
∈
R
C
×
d
Z\in R^{C\times d}
Z∈RC×d的输入,
d
d
d是 label-level word embedding的维数,最后一层的输出是
W
∈
R
C
×
D
W\in R^{C\times D}
W∈RC×D,其中
D
D
D是 image representation的维度,最终的预测得分为
y
^
=
W
x
\hat{y}=Wx
y^=Wx
ground truth是一个向量
y
∈
R
C
y\in R^C
y∈RC,其中
y
i
=
{
0
,
1
}
y^i=\{0,1\}
yi={0,1}标记着标签i是否出现,网络的损失函数为
Correlation Matrix of ML-GCN
关系矩阵
A
A
A的建立也是很重要的步骤,这里我们使用data-driven的方法来建立这个关系矩阵。将两个标签之间的关系取决于它们共同出现在数据集中的次数。具体的使用条件概率
P
(
L
j
∣
L
i
)
P(L_j|L_i)
P(Lj∣Li)来记录
L
j
L_j
Lj在
L
i
L_i
Li出现时出现的次数,注意
P
(
L
j
∣
L
i
)
P(L_j|L_i)
P(Lj∣Li)不等于
P
(
L
i
∣
L
j
)
P(L_i|L_j)
P(Li∣Lj),因此关系矩阵是非对称的,如图所示
这样计算存在两个问题,其一,co-occurrence的统计方法可能得到一个long-tail的分布,其中出现次数较少的可能会成为误差,其二,训练集和测试集中的co-occurrences可能不完全一致,在训练集上overfitting的 correlation matrix可能会大大影响泛化性能。因此通过阈值将
P
P
P二值化
over-smoothing problem
从下式可见
GCN处理之后的权值进过了加权求和,此时使用binary correlation matrix的问题就是会导致over-smoothing,即不同的类别的特征最终会变得不可区分,为了解决这个问题,我们使用了re-weighted的方法
当更新node feature时,我们会对node本身有一个fix的权重,并且邻居结点的权重会由它们的分布决定,当
p
→
1
p\rightarrow 1
p→1的时候,结点自身的特征就不会被考虑,当
p
→
0
p\rightarrow 0
p→0的时候,邻居的特征就不会被考虑,(笔者:本质上这是对特征的一个权值重新分配)
实验
数据集
- coco
- voc 2007 9963张20类
度量
每类的 precision recall F1 以及整体的 precision recall F1
图片预处理
- random cropped
- resize
- random horizontal flips for data augmentation
Ablation Studies
作者在模型和参数上作了Ablation Studies,使得我们能更好地理解模型work的原因
不同的word embedding的影响
使用不同的word embedding结果如图
影响一致,但很小
不同的 τ \tau τ
影响很小
不同的 p p p
注意到p=0实际上是没有融合label的邻居信息的情况,结果发现对模型表现影响也不大,作者说是因为GCN的classifier生成的好
GCN的层
使用不同层数的GCN来提取特征结果如图
两层是最好的
可视化
使用t-SNE可视化不同的classifier的结果如下,与ResNet的作对比,可见本文学到的classifier有更加丰富的语义结构
Image retrieval
作者最后使用ML-GCN学习的特征结合KNN算法进行image retrieval,结果表明比ResNet的效果要好
笔者总结
本文提出了一个ML-GCN模型,图像特征提取和生成分类器分为两个部分,其中最主要的就是使用GCN来接受label relation graph生成不同label的classifier,最终与图像特征点乘计算得分,GCN通过以label relation graph为输出,能够捕捉label之间的关系从而生成inter-dependent的classifier,其中label relation graph是利用统计信息生成的,并加上re-weighted操作防止overfitting和over-smoothing。
它分开学习特征表达和分类器还是第一次见到,感觉比较常见的操作是先生成label relation graph的特征然后和图片特征以某种方式综合起来,再进行分类器的学习
问题
- 什么是LeakyReLU
a i > 1 a_i>1 ai>1是参数