首先,了解以下一些内容:
分类:每幅图像输出一个类别信息。
多类别分类:每幅图像输出一个类别信息。
多输出分类:每幅图像输出固定类别的信息。
多标签分类:每幅图像的输出类别数不固定,如下图所示:
多标签分类的一个重要特征是标签是相关的。例如,在有天空的图像中,很可能有云、日落等等。
在多标签分类的早期阶段,使用了二元交叉熵(BCE)或软边缘损失,这里我们更进一步。
如何利用这种依赖性来提高分类性能?
解决方案之一是图卷积网络,例如:
Multi-Label Image Recognition with Graph Convolutional Networks
Cross-Modality Attention with Semantic Graph Embedding for Multi-Label Classification
那么什么是地图呢?
图是描述对象之间关系的结构。对象可以用节点表示,对象之间的关系可以用边表示,每条边都可以加权。
让我们来看一个例子:
假设我们现在有以下标签:天空、云、日落、海洋和以下样本:
1: "大海","天空","日落"
2:“天空”,“日落”
3:“天空”,“云”
4: "海","日落"
5:“日落”、“大海”
6:“海”、“天”
7:“天空”,“日落”
8: "日落"
我们可以将标签表示为节点,但是如何表示它们之间的关系呢?我们发现有些标签总是成对出现,可以用$ P(L_{ j} | L_{ i})来衡量L_{j}$标签出现的可能性。
如何将这种表示应用到我们的模型中?
使用邻接矩阵。例如,它表示两个标签同时出现的次数。
然后,您可以计算每个标签出现的总次数:
那么,标签共现的概率可以出现,Pi=Ai/NiPi=Ai/Ni,以邻接矩阵的第一个行为为例:
p(大海,天空)=2/5=0.4 p(大海,日落)=3/6=0.5
然后是:
最后,别忘了把对角线设为1,因为每次出现的概率是1。
7fcecce" img_width="550" img_height="217" inline="0" alt="图卷积网络-多标签分类" onerror="javascript:errorimg.call(this);">