基于渐进式语义-视觉互适技术的广义零样本学习
总结
创新点:该文是要解决多个视觉表象对应于同一个属性时,所产生的语义歧义。这样会影响分类结果的准确率。
解决方法:是用VIT和GloVe分别提取视觉和语义属性特征时渐进式对齐。
一.理论
1.1摘要
当各种视觉表象对应于同一属性时,共享属性不可避免地会引入语义歧义,阻碍了语义-视觉准确的对齐。
在本文中,我们部署了双语义-视觉转换器模块(DSVTM)来逐步建模属性原型与视觉特征之间的对应关系,从而构成一个渐进的语义-视觉互适(PSVMA)网络,以实现语义消歧和知识可传递性的改进。
具体来说,DSVTM 设计了一个以实例为动力的语义编码器,该编码器学习以实例为中心的原型以适应不同的图像,从而能够将不匹配的语义-视觉配对重铸为匹配的配对。然后,一个以语义为动力的实例解码器加强了匹配配对之间准确的跨域交互,以实现语义相关的实例适应,从而鼓励生成无歧义的视觉代表。 此外,为了减轻 GZSL 中对所见类别的偏差,还提出了一种消除损失的方法,以追求所见预测与未见预测之间的响应一致性。
1.2 GZSL中基于嵌入方法的模型对比
a: 早期基于嵌入的方法,把视觉特征和语义特征映射到一个共同的空间中对齐。
b:多尺度的方法,各个层提取的特征拼接起来,获得关于目标特征的更全面信息。(不同层有不同大小的感受野,因此不同尺度的特征捕获了目标的不同细节和上下文信息)
c:语义引导方法
d:我们的 PSVMA.
A:表示类别属性原型。
S:表示共享属性
F:表示视觉特征。
PSVMA 逐步形成语义-视觉互适,以实现语义消歧和提高知识可转移性。
1.3 模型图
模型通过VIT提取视觉特征。
通过GloVe提取语义属性表述特征。
在最后两层用DSVTM对齐。
DSVTM包括IMSE编码器 和 SMID解码器。
1.4 SMID解码器 和 IMSE编码器总体架构
SMID : Semantic-Motivated Instance Decoder 语义驱动的实例解码器。
IMSE: Instance-Motivated Semantic Encoder 是实例驱动的语义编码器。
所提出的 IMSE 的目标是逐步学习以实例为中心的原型,以 r(r=1,…,R)循环的递归方式生成准确匹配的语义-视觉对。
1.5 SMID解码器 和 IMSE编码器详细架构
下面对应SMID,上面对应IMSE
论文的介绍
2.1 GZSL
为了将从看得见的领域学到的知识转移到看不见的领域,语义信息在提供描述可见和未看到类别的公共空间方面发挥着至关重要的作用。
通过类别属性原型,生成型GZSL方法通过生成对抗网络[17,21,42]、变分自动编码器[10,12,23]或两者的组合[9,34]来合成外隐形类别的视觉特征。虽然这些方法弥补了训练过程中看不见域的缺失,但引入额外数据将GZSL问题转化为全监督任务。
基于嵌入的方法是 GZSL 的另一个主流分支,它从视觉和语义域投射和对齐信息。早期作品[2,3,45,51]直接将全局视觉和语义特征映射到类别预测的公共空间中。然而,全球视觉信息在捕捉类别之间细微但实质性的差异方面存在不足,削弱了区分性表征。
为了突出区分原生视觉区域,最近的努力尝试了基于部分的技术。一些作品[27,52]利用注意力机制获得的坐标位置,对重要的局部区域进行裁剪和放大。图网络[20,48]或注意力引导[29,33,47]也强调了独特的视觉特征。此外,在语义引导方法[8,22,30,44,49,50]中引入了所有输入对象都相同的共享属性原型来定位属性相关区域。在这些方法中,DPPN[44]更新了属性原型类型并取得了优异的性能。然而,DPP忽略了语义域和视觉域之间的深度相互作用,限制了语义模糊的缓解能力。
二.代码解读
2.2 预测阶段
思考:属性值和标签的对应方式应该是二维矩阵。比如行索引对应标签,列是属性的值。
也就是说:
零样本学习,事先知道属性描述和对应的标签。现在新遇到一个图片,把该图片与语义属性特征对应起来。再通过语义属性的特征找到对应的标签。
具体来说:语义属性的特征 的 id 对应类别的idx。
把对应类别的idx输入到test_id[idx]中,得到预测label值:outpred[idx]。
真实标签矩阵为:labels[idx]
预测的标签矩阵为:outpred[idx]
计算预测正确的个数 / 总类别数 = 准确率。
根据预测代码中的下面一句:
score = model(img, seen_att=att,att_all=att_all)
输入:要预测的图片,可见类的属性特征,所有属性特征。
输出:要预测的图片与所有属性特征对应的相似分数和对应的索引。
上面单独指出seen_att是如果预测的分数跟seen_attr接近,则可以把范围缩小到可见类。可以计算可见类的准确率。
如果得分高的分数不在seen_att中,则范围缩小到不可见类。方便计算不可见类的准确率。
如下句:
# 取出索引
_,pred = scores.max(dim=1)
# 根据id取出预测的属性结果。
outpred_0 = test_id[pred]
outpred = np.array(outpred_0, dtype='int')
可知,取出所有预测属性分数中,分数最高的一个属性索引。
for l in unique_labels:
...
acc += accuracy_score(labels[idx], outpred[idx])
acc = acc / unique_labels.shape[0]
取出所有标签,将标签值和预测结果进行对比。用正确预测个数 / 标签数 得到准确率。
补充
GloVe模型
用于提取语义属性特征。
为了解决词类比任务(如对于句子“king is to queen as man is to woman”,机器学习应当通过词向量得到king -queen = man-woman的结论)等自然语言处理问题,本文提出一种新的GloVe模型,该模型克服了现有的如全局共现矩阵奇异值分解、滑动窗口等模型的缺陷,取得了较好的测试结果。