[论文阅读] Unpaired Image Translation via Vector Symbolic

pre

title: Unpaired Image Translation via Vector Symbolic Architectures
accepted: ECCV2022
paper: arxiv
code: https://github.com/facebookresearch/vsait

亮点:VSA, Vector Symbolic Architectures

Abstract

image-to-image translation 在计算机视觉数据合成方面发挥了重要作用,但如果源和目标域有较大的语义失配(semantic mismatch),现存的方法则会出现源内容损坏,也就是语义翻转(semantic flipping)。这里使用 Vector Symbolic Architectures (VSA) 提出了一个新的范式,这是一个在高维向量空间定义代数运算的理论框架。在对抗学习中引入基于VSA的约束,通过学习高维向量映射进行源-目标转换,其颠倒转换以确保与源内容的一致性。做了实验证明结果超越当前SOTA。

Introduction

某些研究者认为合成数据中域差异(domain gap)可以被细分为content gap 和 appearance gap。这项工作则是关于I2I中源和目标域content gap巨大的场景。

图1 semantic flipping例子跟本文高维向量空间操作示意

有些分离风格和内容,有些使用双射映射从被转换的图片重建源图片(cyclic loss,似乎是cycleGAN那种)。但如果源和目标域之间有巨大的分布偏移,这些方法就不大行,会导致语义翻转。语义翻转以 图片伪影、目标或特征虚影(hallucinations)为特征,是content gap大的数据集上对抗训练的结果。
确切地说,它能在源图片跟转换后的图片上观察到内容的转变,比如图1里,天空被转换为了树。语义翻转是提高计算机图像应用中的真实感、使用转换图片训练下游任务中的关键问题,因为需要保持转换的源语义标签。

解决语义翻转的方法大概分为3类:

  1. 图像级一致性,确保像素级信息在源-目标图片上高度相关,但处理不好特征级的差别
  2. 域不变编码,训练生成器编码域不变的内容或使用共享的隐空间或对抗学习,如果内容风格无法充分解耦也没用
  3. 任务级一致性,用于训练任务网络来生成每个域的伪标签,以此确保跟源标签的一致转换,但如果任务网络不能产生两个域的伪标签就不行。

本文则是聚焦于在源-转换后图片间提供特征级一致性的方法,而不需要明确假设域不变编码或高质量伪标签

本文提出了一种理论框架VSA的新应用,将其作为非配对I2I的新范式(似乎是说VSA并非作者发明,本文只是将其套用在I2I领域)。
虽然许多VSA研究都是在理论神经科学方面,但近来也被用在了计算机视觉问题上,使用从深度神经网络抽取的特征。

VSA定义了个高维向量空间和用于符号计算的操作符,其允许概念查询(形成?)数学表达式,比如“这辆车是什么颜色?”。在非配对图像转换上,这种表达式很有用,可以从源图片恢复属性,也确保将图片从一个域转换到另一个域时特征间的一致性关系。VSA很适合这个方法,因为他基本上可以表示任意的符号跟表达式,而不需任何的监督或训练。

VSA跟之前的其他方法不同,确保不同语义内容的高维表达几乎相互正交(比如天空跟树),如此当语义翻转发生的时候转换后的跟源高维向量的余弦距离就是最大的。

如图1,使用该框架,作者提出了个学习源-目标域高维向量映射的方法,对于语义翻转具备鲁棒性。通过颠倒这种映射,还能减少源-转换后图片中抽取的特征的距离,无需内容和风格完全解耦。希望这项工作能激发VSA应用到计算机视觉的新领域。本文贡献如下:

  1. 解决了经常发生在其他无监督图像转换方法上的语义翻转问题
  2. 第一个展示了VSA可以用在真实场景下(in the wild)解决图像转换的任务。
  3. 通过多个实验展示了解决语义翻转后相对于SOTA的定性和定量改进

in the wild:表明数据源的多样性比较高,包含的场景多,可以用来间接证明模型的泛化能力比较强?

Unpaired Image-to-Image Translation 一种流行的办法是施加循环一致性约束,说的是源-目标生成器跟目标-源生成器都是双射。(列举了一些I2I方法及特性)然而它们某些需要每个域一个网络,或假设内容和风格解耦。本文的方法使用单一生成器,也不需要那种假设。

Semantic Flipping 这方面的研究相对少。(又提了几个典型的模型,分析优缺点,不过跟上面一样,都没见过,也不好理解,到时候有需要再去了解吧...)。总之作者使用VSA颠倒高维空间的转换,来确保源信息的恢复,更好地解决了语义翻转。

Computer Vision Applications of VSA
目前CV里有object and place recognition、visual question answering和 scene transformation 等任务应用VSA。

method

Preliminary: VSA

VSA提供了一个在高容量高维向量空间编码和操作信息的框架,对噪声鲁棒。在该框架中,高维向量从向量空间 \(V = [-1, 1]^n (where n \gg 1000)\) 随机采样,为了表达通常可以使用两个运算符操作的符号——binding/unbinding(元素级乘法)以及bundling(元素级加法)。binding操作符用于给符号指派一个属性(比如灰色的车),而bundling用于组合符号(如灰色的车 和 红色的自行车)。这些操作符定义了一种 Multiplication-Addition-Permutation (MAP) 架构。其他操作符和架构超出本工作范畴。

在图像转换领域使用VSA框架的好处是它无需监督就能表达任意符号。允许我们不必明确定义就能推断出潜在的表征空间(如内容分布 content distribution)。由于非匹配图像翻译中语义翻转的挑战主要是对生成器的约束,不用学习从高维向量生成图片,而是学习根据给定转换后的高维向量恢复相同源信息的映射。

为了将随机高维向量指派给图像特征,Neubert等人使用 locality sensitive hashing (LSH) 来将预训练神经网络(AlexNet)抽取的图像特征投影到相对低维的空间中。(从13 ×13 × 384 到 8192)。在这个例子中,整张图片被编码为单一的高维向量,而图像块也能被编码为独立的高维向量。例如,想像源域中的一个图像块,其包含了一辆车和一个行人。不失一般性,假设该图像块能被表达为一个高维向量:

\[\begin{array}{c}{{v_{s r c} = c\otimes c_{s r c}+p\otimes p_{s r c}}}\end{array} \tag{1} \]

其中c和p都是高维向量,表达跟源域特定高维向量 \(c_{src}, \; p_{src}\) 分别绑定的车辆和行人。

因为无法使用跟源、目标域关联的底层符号,而是必须学习解绑源特定信息,并且绑定目标特定信息(反之亦然)的映射。确切地说,希望能学习一个高维向量映射,解绑这些源特定的属性,并绑上目标特定的属性,一次获得一个目标表达 \(v_{tgt}\) 如公式2所示。

\[v_{s r c} \otimes u_{src \leftrightarrow tgt} \approx v_{t g t}, \\ \mathrm{where~}u_{s r c\leftrightarrow t g t}=\left(c_{s r c}\otimes c_{t g t} + p_{s r c}\otimes p_{t g t}\right) \tag{2} \]

由于 bingding/unbingding 操作可逆,\(c_{src}, \; p_{src}\)解绑,\(c_{tgt}, \; p_{tgt}\)相应地就绑定。并且这些随机高维向量很可能是相互正交的,binding/unbinding不正确的属性(如\(c \otimes p_{src}\)) 只是会给结果向量施加一点噪声,如公式3所示。

\[v_{s r c}\otimes u_{s r c \leftrightarrow t g t}=c\otimes c_{s r c}\otimes(c_{s r c}\otimes c_{t g t}+p_{s r c}\otimes p_{t g t}) \\ + p\otimes p_{s r c}\otimes(c_{s r c}\otimes c_{t g t}+p_{s r c}\otimes p_{t g t}) \\ = (c\otimes c_{t g t} + noise ) + (noise + p\otimes p_{t g t}) \\ = c\otimes c_{t g t} + p\otimes p_{t g t} + noise \approx v_{t g t} \tag{3} \]

同时值得注意的是 \(u_{s r c \leftrightarrow t g t}\) 等价于\(u_{tgt \leftrightarrow src}\) ,这意味着一个单一向量可以用于在两个域之间进行映射。因此,\(v_{tgt}\otimes u_{s r c \leftrightarrow t g t} \approx v_{src}\)

注意到 VSA 框架中的高维向量是对噪声具有很强鲁棒性的分布式表示,再者余弦相似度仍然会与随即向量的相似度高度相关。
上述例子表明了VSA框架的独特属性,其允许符号表示的代数公式

注:上述关于VSA的理论部分大部分没看懂,首先 \(c、c_{s r c}\) 等这些就没搞懂是啥,\(\otimes\)的运算也很迷,而且高维向量为什么是要随机的也不清楚,网上甚至找不到相关的介绍,后面对称性、可逆倒是勉勉强强。

VSA-Based Image Translation (VSAIT)

图3 方法流程图/架构图?

Overview 如图3所示,使用一个高维向量对抗损失(图3的GAN损失),操作基于VSA的高维向量图像块表达。通过基于VSA的循环损失(图3的VSA损失)可以避免语义翻转。

Generator G指生成器,\(D_Y\)指特征级判别器,应该是绿色虚线框的GAN Loss部分。 、
遵循Nerbert等人的办法用预训练神经网络抽取特征(这里将VGG19的多层连在一起)。拼接的特征就随机从抽取的特征向量\(f_i\)投影到随机向量空间\(\mathbb{V} = [-1,\; 1]^n where m >> n\)。将目标图片抽取来的高维向量记为\(v_Y\),源图像抽取来的记为\(v_X\),转换后的图像抽取的记为\(v_{G(X)}\)

Source ↔ Target Mapper 训练了网络F来生成源-目标域的高维向量映射\(u_{X \leftrightarrow Y}\),用它来反转(invert)转换。这个可逆映射一步做了两个操作:解绑unbinding源(目标)表达,并绑定binding目标(源)表达。这意味着如果直接把这个映射施加在\(v_{G(X)}\)上,就应该近似得到原始的源高维向量\(v_X\)。反过来,用在\(v_X\)上就能得到\(v_{G(X)}\)
把被映射到源域的转换后高维向量记为\(v_{G(X) \rightarrow X}\)(这玩意跟\(v_X\)近似),从源域映射到目标域的记为\(v_{X \rightarrow Y}\)(跟\(v_{G(X)}\)近似),如公式4所示:

\[v_{G(X)} \otimes u_{X \leftrightarrow Y} = v_{G(X) \rightarrow X} \approx v_X \\ v_X \otimes u_{X \leftrightarrow Y} = v_{X \rightarrow Y} \approx v_{G(X)} \tag{4} \]

Hypervector Adversarial Loss VSA Loss,本质上是对抗损失,希望\(v_{G(X)}\)能接近目标域向量\(v_Y\)。进一步,通过给\(v_X\)绑定高维向量映射\(u_{X \leftrightarrow Y}\),根据公式4可以得到被映射到目标域的源特征高维向量。因此用下面的对抗损失训练F跟G、\(D_Y\)

\[\mathcal{L}_{G A N}(G,D_{Y},F,X,Y) = \mathbb{E}_{y \sim pY(y)}\left[\log D_{Y}(v_{y})\right] \\ +\mathbb{E}_{x\sim p_{X}(x)}[\log(1-D_{Y}(v_{G(x)})] \\ +\mathbb{E}_{x \sim p_{X}(x)}[\log(1-D_{Y}(v_{x}\otimes F(v_x))], \tag{5} \]

其中G、F要欺骗判别器\(D_Y\),因此他们要最小化目标函数(第二第三行),而\(D_Y\)需要最大化目标函数

VSA-Based Cyclic Loss 虽然上述对抗训练能产生匹配目标分布的图片,但两个域内容上的差异会导致语义翻转。因此需要一个损失,限制生成器保持源内容并介绍语义翻转。于是就有了这个循环损失。

\[\mathcal{L}_{V S A}(G,X) = \mathbb{E}_{x\sim p x(x)}\left[\frac{1}{n}\sum_{i=1}^{n}d i s t\left(v_{x}^{i},v_{G(x)\to x}^{i}\right)\right], \tag{6} \]

其中的dist(·,·)是n个高维向量上的平均余弦距离(每个图像块序号为i)。通过最小化\(v_{G(x)\to x}\)\(v_{x}\)之间的余弦距离(1 - 余弦相似性),可以确保颠倒转换后能恢复相同的特征(比如根据公式1,例子里“车”跟“行人”的表达可以被保留)

总目标函数就是上面两个的结合,G产生匹配目标域的图片,然后F颠倒转换去确保(转换的图片?)跟源域的一致性

\[\mathcal{L}(G,D_{Y},F,X,Y)=\mathcal{L}_{G A N}(G,D_{Y},F,X,Y)+\lambda\mathcal{L}_{V S A}(G,X), \tag{7} \]

其中\(\lambda\)控制循环损失的相对重要性。

VSAIT Training

照着图3看,先拿俩图片,把源图片用G转换到目标域,然后每张图片(源、目标、转换后的共三张)用多层预训练网络抽取特征。假定每个图像块都由共享其感受野的提取特征表示。将各层提取的特征展平、连接,就有了一个特征向量的集合(每个图像块对应一个向量),维度为m

使用LSH将特征降维到随机高维向量空间\(\mathbb{V}\),维度\(n \ll m\)。确切地说,将提取的特征向量标准化然后投影,使用一个随机矩阵,其中每行都从标准正态分布中采样然后标准化到单位长度。结果向量处于范围\([-1,\; 1]\),这对于实施VSA绑定操作很关键。注意这一工程不需要训练,也不依赖于特定特征抽取器,即便不同的特征抽取器可能会编码出不同的信息。

最终用F生成每个源高维向量的高维向量映射,把映射(图3里的\(u_{x \leftrightarrow y}\))用到源高维向量,能得到\(v_{x \to y}\),用它去计算公式5里面的对抗损失(图3右侧黄底的上半部分),以此训练F。该步最终目标就是把这个映射用于颠倒转换\(v_{G(X)}\),并确保恢复相同的源信息\(v_x\)(图3右侧黄底的下半部分)。这样,通过限制生成器生成图片,其高维向量跟源域一致,就能减少语义翻转。

实际上全篇看下来对这个 VSA 还是不太明白,看这训练过程好像也只是把特征投影到一个高维的向量空间中?目标函数都是老一套

Experiments

在多个数据集上开展多个实验评估了本模型,跟其他模型做对比,也有消融研究。

Implementation Details

使用CUT(Contrastive learning for unpaired image-to-image translation)作为生成器网络架构,判别器则使用三层的1x1全卷积网络。映射网络F则使用两层的全卷积网络。优化器经典Adam(\(\beta_1 = 0, \; \beta_2 = 0.9\),batch size 取1,学习率方面,G跟F取0.0001,判别器取0.0004。为了改进对抗训练,使用hinge loss而不是公式5里\(\mathcal{L}_{GAN}\)的负对数似然目标函数,对于 GTA to Cityscapes,公式7里的\(\lambda = 10\),而其他实验则取5。更详细的看补充材料。

Datasets

一共三个数据集,GTA, Cityscapes 和 Google Maps。GTA就是那个游戏5里面的24966张实机图片,合成数据集,Cityscapes则是驾驶场景的真实数据集,并且有精细标注的语义分割标签,包括2975张训练图片跟500张验证图片。 Google Maps 数据集就是2194张配对地图跟航拍照片的集合,1096张训练图,1098张验证图。

Baselines

跟 GcGAN, DRIT, CUT, SRUNIT, EPE 对比,这些都跟语义翻转问题有关,能反映近来在减少语义翻转问题上的方法。(然后简单介绍下这些模型)

GTA → Cityscapes

(一些训练细节),使用Kernel Inception Distance(KID)评估图像转换性能,它测量使用预训练Inception V3网络抽取的特征的距离,转换后的图片跟目标图片。如表2所示,方法超出基线模型,再看图4...分析模型的特性。

额外使用语义分割指标评估转换质量,用在Cityscapes上预训练过的DeepLab V3进行,看表1,语义分割指标更能直接反映语义翻转。如图4,其他方法会在天空处生成树跟其他特征,那些区域的语义分割性能就更低。

图4 GTA图片上各模型的转换对比

中间小框是细节部分,其他模型,尤其是下面4个,都出现了不同程度的semantic flipping,转换后的图片出现了不少原本不存在的东西

Google Map → Aerial Photo

根据灰度直方图K均值聚类进行二次采样,取1096张图片啥的...一些实验跟指标的细节,总之性能远好于其他模型,有需要再看把。

表1 各个数据集非匹配语义的定量评估

指标包括平均像素预测准确率pxAcc,平均分类预测准确率clsAcc,平均IoU(mIoU),平均L2距离(Dist)和待特定任务阈值的像素精度Acc

Aerial Photo →Google Map

跟上面那个用一样的二次采样数据集,也是相同的指标,但是像素精确度阈值不同。在像素级指标上没有提高,但认为可以改进,不过留给后续工作了。

Ablation Study

使用 GTA to Cityscapes 任务评估,见表2右半部分,分别是

  1. 去掉了基于VSA的循环损失,出现了严重的语义翻转,图5B
  2. 用随机高维向量映射代替对抗式学习的映射\(u_{x \leftrightarrow y}\),G保持了全局结构,但可逆映射无法恢复源高维向量,局部内容经常变换,也有语义翻转,图5C
  3. 展示了VSA高维向量空间的重要性,将\(\mathbb{V}\)的维度从4096减少到128,导致图像转换含有噪声,似乎只反映了风格的全局变化,图5D,但这样仍然比其他模型性能好,见表1(应该是结合表1跟表2看)

图5 GTA to Cityscapes的消融研究

Conclusion

本文用一种基于VSA框架的新方法来处理非配对图像转换(unpaired image translation)中的语义翻转问题。展示了相较于之前方法的重大定性定量改进,表明VSA可以用于逆转(invert)图片转换(image translations)并确保跟源域的一致性。考虑到它天然的多功能性,作者希望这项工作能激起更多使用VSA的CV研究。

Supplemental

篇幅很大,内容挺丰富的,还有更多的可视化结果

posted @ 2022-10-18 17:34  NoNoe  阅读(463)  评论(0编辑  收藏  举报