Transgaga——人脸与猫脸之间互相转换算法解析

1. 概述

虽然pix2pix作为风格转换模型被提出,但它依赖于成对的数据集。与之相比,CycleGAN通过引入循环损失,实现了无需配对数据的风格转换。不过,CycleGAN在处理需要大幅几何变化的风格转换时表现不佳,仅在如马和斑马这类颜色变化的场景中有效。

2018年,MUNIT利用变分自编码器(VAE)为两个领域间建立了共享潜在空间。直观上,用单一潜在变量表示两个领域内的目标是直接的,但实际上,捕捉更复杂的领域间几何结构却充满挑战。

本研究提出的模型将图像分解为几何和外观两部分,并将它们分别编码为潜在变量,从而实现了需要显著几何变化的风格转换。此外,与传统方法相比,我们的模型能够生成更自然、更多样化的图像。

论文地址:https://arxiv.org/abs/1904.09571

2.Transgaga

2.1 算法架构

所提出方法的架构图展示如下。目标是围绕中心界线,实现从左至右的域转换。
在这里插入图片描述
以架构图为参考,我们将图像分解为几何和外观两部分。由于架构的对称性,x被y替代。首先,让我们阐述图像的几何信息。图像的方向性被编码在一个由 g x g_x gx表示的热图之中。输入图像首先送入 E g x E_{g_x} Egx,即自动编码器,以产生一个与输入图像分辨率相匹配的热图。该热图拥有30个通道。随后,该热图被送入 E c x E_{c_x} Ecx,也就是编码器,以提取出 c x c_x cx,即几何形状的潜在表示(图中以黄色方块表示)。接下来是外观部分。图像的形状信息被直接送入编码器 E a x E_{a_x} Eax,以获得其潜在表示 a x a_x ax。将上述得到的 c x c_x cx a x a_x ax送入解码器 D x D_x Dx,即可重建图像 x ^ \hat{x} x^

风格转换是如何进行的呢?风格转换同样包含几何转换 Φ h x → y \Phi_{h_x \rightarrow y} Φhxy和外观转换 Φ a x → y \Phi_{a_x \rightarrow y} Φaxy。通过 Φ \Phi Φ,几何和外观的潜在表征 p x p_x px a x a_x ax被分别转换到另一个域,它们各自拥有一个Transformer。

2.2 损失函数

在文档中提及的损失函数是TransGaGa模型的关键部分,用于实现图像风格转换。以下是对文档中损失函数部分的重新排版和详细解释:

VAE损失函数 (LCVAE)

VAE损失函数结合了KL散度和重构误差,用于确保模型正确编码和解码。公式如下:

L C V A E ( π , θ , ϕ , ω ) = − K L ( q θ ( c ∣ x , g ) ∥ p ( a ∣ x ) ) + ∥ x − D ( E c ( E g ( x ) ) , E a ( x ) ) ∥ L_{CVAE}(\pi, \theta, \phi, \omega) = -KL(q_\theta(c|x,g) \| p(a|x)) + \|x - D(E_c(E_g(x)), E_a(x))\| LCVAE(π,θ,ϕ,ω)=KL(qθ(cx,g)p(ax))+xD(Ec(Eg(x)),Ea(x))

  • 第一项 − K L ( q θ ( c ∣ x , g ) ∥ p ( a ∣ x ) ) -KL(q_\theta(c|x,g) \| p(a|x)) KL(qθ(cx,g)p(ax)) 是KL散度,表示热图中的潜在变量 c c c 与输入图像中的潜在变量 a a a之间的“距离”。
  • 第二项 ∥ x − D ( E c ( E g ( x ) ) , E a ( x ) ) ∥ \|x - D(E_c(E_g(x)), E_a(x))\| xD(Ec(Eg(x)),Ea(x)) 是重构误差,确保解码器生成的图像与输入图像 x x x 接近。
几何损失函数 (Lprior)

几何损失函数关注热图中每个通道的值,防止热图集中于中心。公式如下:

L p r i o r = ∑ i ≠ j e x p ( − ∥ g i − g j ∥ 2 2 σ 2 ) + V a r ( g ) σ L_{prior} = \sum_{i \neq j} exp\left(-\frac{\|g_i - g_j\|^2}{2\sigma^2}\right) + \frac{Var(g)}{\sigma} Lprior=i=jexp(2σ2gigj2)+σVar(g)

  • σ \sigma σ 是超参数。
  • 第一项鼓励每个通道 ( g_i ) 取不同的值。
  • 第二项约束通道值的方差,避免取过大的值。
外观损失函数 (Lacon)

外观损失函数处理风格转换后图像的相似性。公式如下:

L a c o n = ∥ ζ ( x ) − ζ ( D y ( Φ g x → y ⋅ E g x ( x ) , Φ a x → y ⋅ E a x ( x ) ) ) ζ ( x ) ∥ Lacon = \left\| \frac{\zeta(x) - \zeta(D_y(\Phi_{gx \rightarrow y} \cdot E_{gx}(x), \Phi_{ax \rightarrow y} \cdot E_{ax}(x)))}{\zeta(x)} \right\| Lacon= ζ(x)ζ(x)ζ(Dy(ΦgxyEgx(x),ΦaxyEax(x)))

  • ( \Phi ) 是变换器,将几何和外观的潜在表示转换到目标域。
  • ( D_y ) 是解码器,结合了变换后的几何和外观信息来生成图像。
  • ( \zeta() ) 是训练后的VGG-16的输出,确保域变换前后图像在形状上的相似性。
总损失函数 (Ltotal)

总损失函数是上述损失函数的结合,加上其他CycleGAN中定义的损失项:

L t o t a l = L C V A E + L p r i o r + L a c o n + L a c y c + L c y c + L p i x c y c + L a a d v + L g a d v + L p i x a d v L_{total} = L_{CVAE} + L_{prior} + Lacon + L_{acyc} + L_{cyc} + L_{pixcyc} + Laadv + L_{gadv} + L_{pixadv} Ltotal=LCVAE+Lprior+Lacon+Lacyc+Lcyc+Lpixcyc+Laadv+Lgadv+Lpixadv

  • L c y c L_{cyc} Lcyc 是CycleGAN中提出的循环损失。
  • L a d v L_{adv} Ladv 类似于传统GAN中的对抗损失函数。

3.实验结果

基线是CycleGAN、UNIT、MUNIT和DRIT。生成的图像以其真实性和多样性作为评价指标。人的主观评价也会进行。

3.1 生成图像

以下是建议方法和基线的实际风格转换结果。
在这里插入图片描述
上图显示,所提出的方法具有自然的风格转换,而基线具有不自然的形状和破碎的轮廓。在图5中,我们比较了所提出的方法的多模态。在图5中,我们比较了所提出的方法与基线的多模态。

3.2 主观评价和得分

受试者从两个不同的模型中看到生成的图像。比较了一下,问他们(a)哪一个更真实,(b)哪一个有更好的几何形状。结果如下表所示。在(a)和(b)中,建议的方法比基线的性能高出50%。

接下来,我们使用FID和Diversity评分来评估模型。FID是输入图像和输出图像的分布距离,得分越低越好;Diversity是输出图像的多样性,得分越高越好;Diversity只对多模态模型进行评价。结果如下表所示,我们可以看到,除了猫→人脸和狗→猫的多样性外,其他提出的方法在得分上都有优势。

4.总结

在image2image任务中,我们将输入的图像分为几何图形和外观,并在潜伏空间中为它们分别准备了变换器,这使得我们能够在几何变化较大的情况下变换风格。此外,通过引入新的损失函数,我们使学习比CycleGAN更稳定。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/675727.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JAVA流程控制--增强for循环

1.JAVA5引入了一种主要用于数组或集合的增强型for循环 2.JAVA增强for循环语法格式如下: for(声明语句:表达式) { //代码句子 } 3.声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循…

最新鸿蒙南北开发学习路线+学习资料分享

前言 5月29日,“千帆竞发启航 共筑鸿蒙生态”鸿蒙原生应用合作仪式在北京成功举办,近40个应用现场官宣启动鸿蒙原生应用开发。此次官宣启动开发的鸿蒙原生应用不仅包括教育、母婴、出行、医疗健康等多领域的知名应用,还有十多家企业内部办公应…

【C语言】位段(结构体实现位段)

目录 一、位段的定义 二、位段的声明 三、位段的内存分配 四、位段在内存中的存储方式 五、位段的优点 六、位段的跨平台问题 七、位段的应用 八、位段使用的注意事项 一、位段的定义 信息的存取一般以字节为单位。实际上,有时存储一个信息不必用一个或多个字…

参数高效微调PEFT(四)快速入门(IA)3

参数高效微调PEFT(四)快速入门(IA)3 我们已经了解了HuggingFace中peft库的几种高效微调方法。 参数高效微调PEFT(一)快速入门BitFit、Prompt Tuning、Prefix Tuning 参数高效微调PEFT(二)快速入门P-Tuning、P-Tuning V2 参数高效微调PEFT(三)快速入门LoRA、AdaLoRA 今天我…

Linux基础命令[28]-chmod

文章目录 1. chmod 命令说明2. chmod 命令语法3. chmod 命令示例3.1 使用数字赋权3.2 使用字母赋权3.3 -R(一起修改子目录) 4. 总结 1. chmod 命令说明 chmod:为文件或文件夹赋予权限。Linux-文件或目录权限。基本信息如下: Usa…

目标2亿欧元!四年两次募资,全球最早专注于量子投资的Quantonation再次加码

Quantonation Ventures 是全球第一家专注于深度物理和量子技术的早期风险投资公司。4月10日,该公司宣布其第二只专门用于量子技术的早期基金 Quantonation II 首次募资完成,目前已募资 7000 万欧元,而目标为 2 亿欧元。 首次募资就募到了将…

redis之发布与订阅

华子目录 什么是发布与订阅?常用命令psubscribe pattern1 [pattern2...]subscribe channel1 [channel2...]publish channel messagepunsubscribe pattern1 [pattern2...]unsubscribe [channel1 [channel2...]]pubsub subcommand argument1 [argument2...] 示例1示例…

C/C++动态内存管理(new与delete)

目录 1. 一图搞懂C/C的内存分布 2. 存在动态内存分配的原因 3. C语言中的动态内存管理方式 4. C内存管理方式 4.1 new/delete操作内置类型 4.2 new/delete操作自定义类型 1. 一图搞懂C/C的内存分布 说明: 1. 栈区(stack):在…

微信视频号上是怎么开店铺的?从入驻到发货,具体流程来了!

这两年,视频号逐渐走入大家视野 单价高,商家又少,很多类目都属于空白无商家入驻阶段,于是好多商家,都准备去视频号小店这个新“黑马”发展发展 那视频号是怎么开店卖东西的?今天我就来给大家分享一下&…

list~模拟实现

目录 list的介绍及使用 list的底层结构 节点类的实现 list的实现 构造函数 拷贝构造 方法一:方法二: 析构函数 赋值重载 insert / erase push_/pop_(尾插/尾删/头插/头删) begin和end(在已建立迭代器的基础上) 迭代…

“神经网络之父”和“深度学习鼻祖”Geoffrey Hinton

“神经网络之父”和“深度学习鼻祖”Geoffrey Hinton在神经网络领域数十年如一日的研究,对深度学习的推动和贡献显著。 一、早期贡献与突破 反向传播算法的引入:Hinton是将反向传播(Backpropagation)算法引入多层神经网络训练的…

客观评价一下GPT-4o

评价GPT-4o(即OpenAI发布的升级版语言模型),以下是上大学网(www.sdaxue.com)从技术能力与创新性、性能与效率、功能实用性与用户体验等几个维度进行评价,不周之出,请大家指正。 技术能力与创新性…

百万总奖池 | 浦源大模型挑战赛(夏季赛)·安全可信赛道正式启动!

随着技术的不断进步,人工智能技术正迅速成为促进社会进步的新质生产力,大模型也成为了“炙手可热”的日常工具,彻底改变了我们与信息之间的互动方式。 然而,随着大模型能力的日益增强,其潜在的风险也日渐凸显&#xf…

网络编程(七)

网络编程(七) UNIX域套接字(本地间进程间通信的技术)(S文件)基于TCP传输基于UDP传输 UNIX域套接字(本地间进程间通信的技术)(S文件) socket同样也可以用于本…

Python打印当前目录下,所有文件名的首字母

代码如下: #!/usr/bin/env python3 """ 按顺序打印当前目录下,所有文件名的首字母(忽略大小写) """ import sys from pathlib import Pathdef main() -> None:ps Path(__file__).parent.glob(…

计算机网络(网络原理及引用)之路由器的基本配置(详细~)

实验目的 熟悉路由各接口的外观、接口的功能、接口的表示方法;掌握带外的管理方法:通过接口console配置;掌握带内的管理方法:通过方式telnet配置;掌握带内的管理方法:通过方式web配置; 路由器…

i.MX8MP平台开发分享(GPC控制器篇)

1.概述 整体来说,i.MX8MP中的电源是由General Power Controller (GPC) 来控制的。GPC可以提供各种电源模式的控制,如低功耗模式、深度睡眠模式等等。GPC包含两个模块,一个是系统模式控制器(SMC),控制系统的…

项目优化方案之---实现邮箱用户登录

之前的项目中我写的基于SpringBoot和Vue的全栈项目已经实现了基本的用户接口开发, 不过其代码的功能单一,而且写的也是有不少漏洞(基本就像刚接手的代码*山一样) 那之后的几篇文章都来分享一下如何优化项目(每一章都独…

【数据结构】链式二叉树(超详细)

文章目录 前言二叉树的链式结构二叉树的遍历方式二叉树的深度优先遍历前序遍历(先根遍历)中序遍历(中根遍历)后序遍历(后根遍历) 二叉树的广度优先遍历层序遍历 二叉树链式结构接口实现二叉树结点个数二叉树叶子结点个数二叉树的深度(高度)二叉树第k层结…

植物大战僵尸杂交版下载链接

前言 植物大战僵尸杂交版是 潜艇伟伟迷 制作并免费向大家开放畅玩并且持续更新关卡。 下载教程 1.打开作者主页:https://space.bilibili.com/97213827/dynamic 2.作者置顶发布的是最新版,直接打开链接安装就好了 3.下载链接:https://pan.qu…