自学内容网 自学内容网

论文Query2Label: A Simple Transformer Way to Multi-Label Classification

本文将Transformer解码器用于多标签分类,将label embedding作为query,计算与feature
map的cross-attention,取得了SOTA结果。

论文:https://arxiv.org/pdf/2107.10834.pdf
代码:https://github.com/SlongLiu/query2labels

方法

1. 框架
  • 作者提出的框架 Query2Label(Q2L)
    在这里插入图片描述
  • 第一阶段的backbone是不固定的,可以替换为任意的网络
  • 第二阶段由两个模块组成:用于查询更新的多层Transformer解码器块和自适应特征池,用于计算每个类别的预测逻辑的线性投影层
特征提取
  • 给定图像x ∈ R(H0×W0×3)作为输入,提取空间特征F0∈ R(H×W×d0),我们在第二阶段添加一个线性投影层,将特征从d0维投影到d维,以匹配所需的查询维,并将投影的特征重塑为F∈R(HW×d)
查询更新
  • 第一阶段得到空间特征,使用标签嵌入查询Q0 ∈ R(K×d),使用多层Transformer解码器从空间特征中对池化相关特征进行交叉关注,其中K为类别的数量
  • 我们使用标准的Transformer架构,它有一个自注意模块、一个交叉注意模块和一个位置前馈网络(FFN)。
    在这里插入图片描述
    其中波浪表示通过添加位置编码修改后的原始向量,Qi(1)和Qi(2)是中间变量。MultiHead(query, key, value)和FFN(x)函数都与标准Transformer解码器[45]中的定义相同,为了简单起见,我们省略了它们的参数
  • 自注意和交叉注意模块都使用相同的MultiHead函数实现。唯一的区别是key和value的来源。
特征投影
  • 假设有L层,需要查询的特征向量(K为类别,d为特征通道)
    在这里插入图片描述
  • 我们将每个标签预测视为一个二元分类任务,并使用全连接和sigmoid函数将每个类 Q L , k ∈ R d (1) Q_{L,k} ∈R^d \tag{1} QL,kRd(1)的特征投影到logit值:
    在这里插入图片描述
2.损失函数
  • 二元交叉熵损失和焦点损失都可以很好地应用于我们的框架。
  • 为了更有效地解决样本不平衡问题,我们采用了一种简化的非对称损失,它是焦点损耗的一种变体,正负两个值的γ值不同。
    在这里插入图片描述
  • y k y_k yk为二进制标签,表示输入x是否具备标签k
  • 总损失是通过对训练数据集D中所有样本的平均损失来计算的
  • 随机梯度下降优化
  • 实验中默认 γ + = 0 γ+=0 γ+=0 γ − = 0 γ-=0 γ=0
实验
  • 我们采用TResNetL[40]作为我们的主干,因为在GPU上类似的效率约束下,它比标准的ResNet101[25]表现得更好
  • 输入448×448
  • 输出HxWx d 0 d_0 d0=14x14x2432
  • 我们在实验中设置d = d0 = 2432,因此第一阶段最终输出特征的大小为14 × 14 × 2432
  • 将提取的特征加入位置编码和整形后,送入第二阶段模块
  • weight decay为1e-2,学习率设为1e-4,训练80epochs
  • Transformer编码器主要用于进一步帮助融合全局上下文以获得更好的特征表示,但是为了提高计算效率,可以删除它。在我们的实验中,即使只有一个Transformer解码器层,我们的模型也能很好地工作
  • 大量消融实验证明了其有效性
    在这里插入图片描述

原文地址:https://blog.csdn.net/qq_40938217/article/details/142363051

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!