Latent Embedding Feedback and Discriminative Features for Zero-Shot Classification (ECCV2020)

近来零样本学习文章大多基于生成模型,这篇文章也是在 GAN 的基础上更进一步来提高性能的。本文基于 VAE-GAN,作者说其他人用带 decoder 的模型,在训练之外就把 decoder 丢掉了,这很不好,因此作者倡议在训练、特征生成和分类都使用语义嵌入解码器 semantic embedding decoder (SED)。另外,使用的 feedback loop。创新点有两个,归纳起来就是

  • 提出 semantic embedding decoder (SED),并设计 feedback module (for GZSL) 来在训练阶段、特征生成阶段使用 SED ,并依此调整生成器的潜在特征 表示。这是首次提出 feedback module 在 ZSL 任务中,反馈机制思路来源于 [1];
  • 在分类阶段提出 discriminative feature transformation,同时使用 SED 的潜特征和对应的视觉特征类来减少对象类别之间的歧义性;
  • 在几个数据集上进步明显,同时在 视频的zero-shot action recognition 进行了实验,效果也很显著。

创新之处就是 添加 SED 将视觉特征转化为语义嵌入并构建循环一致性损失,使用反馈机制指导特征生成,使用特征变换来指导分类。
[1] Firas Shama, Roey Mechrez, Alon Shoshan, and Lihi Zelnik-Manor. Adversarial feedback loop. In ICCV, 2019
1. Preliminaries: f-VAEGAN

即引用 f-VAEGAN-D2,该方法结合 VAE 和 GAN,该方法的 VAE 的 decoder 作为 GAN 的 generator。如下图所示,f-VAE 包含一个 encoder,将视觉特征映射到潜特征 z z z,也包含一个 decoder (同时作为 f-WGAN 的条件生成器)将 z z z 重建成 x x x E E E G G G 都受到 a a a 的约束(属性特征),优化下列公式

L V = K L ( E ( x , a ) ∥ p ( z ∣ a ) ) − E E ( x , a ) [ log ⁡ G ( z , a ) ] (1) \mathcal{L}_{V}=\mathrm{KL}(E(x, a) \| p(z \mid a))-\mathbb{E}_{E(x, a)}[\log G(z, a)] \tag 1 LV=KL(E(x,a)p(za))EE(x,a)[logG(z,a)](1)
p ( z ∣ a ) p(z|a) p(za) 是先验分布,为 N ( 0 , 1 ) N(0,1) N(0,1) l o g G ( z , a ) logG(z,a) logG(z,a) 是重建损失。后面的 f-WGAN 的 loss 如下
L W = E [ D ( x , a ) ] − E [ D ( x ^ , a ) ] − λ E [ ( ∥ ∇ D ( x ~ , a ) ∥ 2 − 1 ) 2 ] (2) \mathcal{L}_{W}=\mathbb{E}[D(x, a)]-\mathbb{E}[D(\hat{x}, a)]-\lambda \mathbb{E}\left[\left(\|\nabla D(\tilde{x}, a)\|_{2}-1\right)^{2}\right] \tag 2 LW=E[D(x,a)]E[D(x^,a)]λE[(D(x~,a)21)2](2)
其中 x ^ = G ( z , a ) \hat x = G(z,a) x^=G(z,a) 是生成特征, x ~ \tilde{x} x~ 是从 x x x x ^ \hat x x^ 的连线上随机采样的。则 f-VAEGAN 优化方法如下:
L v a e g a n = L V + α L W (3) \mathcal{L_{vaegan}} = \mathcal{L}_V + \alpha \mathcal{L}_W \tag 3 Lvaegan=LV+αLW(3)
f-VAEGAN 由于有公式 1 的第二项,能够在训练时对生成的特征进行循环一致性约束,然而却没有在 semantic embeddings 添加循环一致性约束。其他方法如GDAN 添加了循环一致性约束,然而只在训练阶段使用,在特征生成和分类阶段都抛弃了。

而本文引入 semantic embedding decoder (SED) 来在 semantic embeddings 上对所有阶段强制使用循环一致性约束。生成器模块将语义嵌入转换为特征实例,而 SED 将特征实例转化为语义嵌入,生成器和 SED 构成了互补。如下图,Dec 即表示 SED,用于重建嵌入 a ^ \hat a a^,通过循环一致性损失 L R \mathcal{L}_R LR 约束,同时通过反馈模型 F F F 将 Dec 的浅层特征反馈到 G G G 的浅层特征来实现改进的特征合成。
在这里插入图片描述

2. Semantic Embedding Decoder

语义嵌入的循环一致性损失 cycle-consistency 同通过 L1 重建损失来表示,即
L R = E [ ∥ Dec ⁡ ( x ) − a ∥ 1 ] + E [ ∥ Dec ⁡ ( x ^ ) − a ∥ 1 ] \mathcal{L}_{R}=\mathbb{E}\left[\|\operatorname{Dec}(x)-a\|_{1}\right] +\mathbb{E}\left[\|\operatorname{Dec}(\hat{x})-a\|_{1}\right] LR=E[Dec(x)a1]+E[Dec(x^)a1]
因此训练 TF-VAEGAN 的 loss 变为 L t o t a l = L v a e g a n + β L R \mathcal{L}_{total} = \mathcal{L}_vaegan + \beta \mathcal{L}_R Ltotal=Lvaegan+βLR

**Discriminative feature transformation ** 作者建议在分类阶段使用 SED 的潜在特征作为有用的信息源,来减少不同类别特征实例之间的歧义性,如下图 a 所示,将视觉特征和 DEC 重建的潜特征 h h h 拼接再输入分类网络进行分类。

在这里插入图片描述

3. Feedback Module

f-VAEGAN 没有在属性空间中使用一致性损失,导致真实的视觉特征和生成的视觉特征存在一定的语义gap,因此作者引入了 feedback loop 来迭代的优化特征生成(训练阶段和特征生成阶段),如下图所示。feedback module F F F 如上图 b 所示, g l g^l gl G G G 的第 l l l 层输出, x ^ f \hat x^f x^f 是反馈部分,优化如下
g l ← g l + δ x ^ f g^{l} \leftarrow g^{l}+\delta \hat{x}^{f} glgl+δx^f
其中 x ^ f = F ( h ) \hat x ^f = F(h) x^f=F(h) h h h 是 Dec 的潜层, δ \delta δ 控制着反馈机制。注意,文章 [1] 中使用鉴别器 D 的潜层作为反馈输入,而在 ZSL 中由于 unseen class 不可见,unseen class 特征生成和鉴别将不足以提供可靠的反馈,因此不适用 D 的潜层,而使用 Dec 的。

Training strategy 原始的反馈机制是 两阶段 的,先训练 G 和 D,然后训练 F。而本文使用交替训练策略,即交替训练 G 和 F。G 的训练策略不变,F 的训练过程中使用两个子迭代,如上图 b 所示。

注意在 transductive setting 中,同 f-VAEGAN-D2 一样,使用一个额外的 unconditioanl discriminator D2。
在这里插入图片描述

Experiments

下图为 inductive 和 transductive 的 ZSL 和 GZSL 的实验结果,注意到这里的原始特征使用的使用 ImageNet 预训练的 resnet101 提取的,特征提取网络的参数是固定的。

在这里插入图片描述

特征提取网络的参数不是固定的,经过了 fine-tuned,可以看到效果明显增加。
在这里插入图片描述

下面为一些消融实验。

在这里插入图片描述

在论文Latent Embedding Feedback and Discriminative Features for Zero-Shot Classification中,作者提出了一种新的零样本分类方法,该方法使用了嵌入反馈机制和判别特征,以提高零样本分类的准确性。在骨干网络方面,作者使用了ResNet-101作为骨干网络。下面是该方法的具体实验步骤和方法: 1. 预处理数据集:将原始图像大小调整为224x224,然后使用ImageNet数据集上的平均值进行标准化。 2. 训练ResNet-101骨干网络:使用ImageNet数据集上的预训练权重对ResNet-101进行微调,以便在零样本分类任务中提取有用的特征。 3. 从训练集中提取特征:利用微调后的ResNet-101,对训练集中的所有图像进行前向传递,并从最后一个卷积层中提取出特征。 4. 计算嵌入向量:将每个类别的特征平均值计算出来,并将其作为该类别的嵌入向量。 5. 训练分类器:使用嵌入向量和训练集中的标签来训练分类器。训练过程使用交叉熵损失函数,并使用随机梯度下降进行优化。 6. 零样本分类:对于每张测试图像,将其从骨干网络中传递,并计算其特征向量。然后,通过计算嵌入向量和特征向量之间的余弦相似度,将其归类到最相似的类别中。 以下是用伪代码表示的方法: ``` # 预处理数据集 preprocess_dataset() # 训练ResNet-101骨干网络 train_backbone_network() # 从训练集中提取特征 extract_features_from_training_set() # 计算嵌入向量 calculate_embedding_vectors() # 训练分类器 train_classifier() # 零样本分类 for each test image: feature_vector = extract_features_from_test_image() predicted_class = classify_image(feature_vector) ``` 以上就是论文Latent Embedding Feedback and Discriminative Features for Zero-Shot Classification中对骨干网络进行微调的具体实验步骤和方法。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值