Multi-Label Image Recognition with GCN
Multi-Label Image Recognition with Graph Convolutional Networks
多标签识别+图网络GCN
2019年的文章,提出了一个多标签分类模型,基于GCN完成,通过图结构建模label语义信息之间的联系。
有向图的构建是在label的基础上,结点初始化为label的词嵌入。GCN学会了将此标签图映射到一组相互依赖的对象分类器中。这些分类器应用于由另一个子网提取的图像描述符,使得整个网络能够端到端地训练。
模型输入:训练阶段label的词嵌入以及图片,验证阶段输入图片。
模型输出:图片的bi'a
这里涉及到multi-label recognition和multi-class classification的一个区分:
The task of multi-label image recognition is to predict a set of object labels that present in an image.
方法概述:Instead of treating object classifiers as a set of independent parameter vectors to be learned, we propose to learn inter-dependent object classifiers from prior label representations, e.g., word embeddings, via a GCN based mapping function.接下来把这些分类器应用于从CNN中提取出来的特征。(这个如何得到分类器我还有点迷惑)
整体框架:
CNN提取特征,使用ResNet101 输出20481414的feature map通过一个最大池化得到一个2048维的向量。
GCN分类器学习:
分类器其中C代表类目C个类目。
GCN的第一层输入 其中C为类目数,d为词嵌入的维度。
GCN的最后一层D表示图片表达的维度,也就是上面的2048
最终结果:其中y是一张图的标签情况{0,0,1,0,...,0,1,0,0},0表示没有该类,1表示有该类。
图的构建
构建GCN的关联矩阵,也就是上面的Z,使用条件概率,详情后面再看看论文。主要在3.4
over-smoothin problem
实验
评估指标
每个类的准确率CP,召回率CR,F1:CF1
所有类的准确率OP,召回率OR,F1:OF1.
以及mAP
细节
- ML_GCN 两层,分别输出1024和2048维度
- 类别的词嵌入来自Glove[25]对于一个label有多个词的情况求一个平均。(后续有消融实验对比显示使用其他编码并不是很大差别,比如one-hot编码)
- 公式7中的阈值,取0.4
- 公式8中p:0.2
- 其他:非线性激活函数leakyReLu,且negative slope取0.2. backbone取ResNet101,使用imageNet预训练。size:448*448.优化策略SGD。
实验结果
table1 MSCOCO
tabel2 VOC