首页 > 编程语言 >Transgaga——人脸与猫脸之间互相转换算法解析

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

时间:2024-06-04 15:30:23浏览次数:16  
标签:转换 函数 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} Φhx​→y​和外观转换 Φ a x → y \Phi_{a_x \rightarrow y} Φax​→y​。通过 Φ \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θ​(c∣x,g)∥p(a∣x))+∥x−D(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θ​(c∣x,g)∥p(a∣x)) 是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))\| ∥x−D(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=j∑​exp(−2σ2∥gi​−gj​∥2​)+σ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​(Φgx→y​⋅Egx​(x),Φax→y​⋅Eax​(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更稳定。

标签:转换,函数,Transgaga,图像,损失,算法,人脸,几何,热图
From: https://blog.csdn.net/matt45m/article/details/139341973

相关文章

  • manjora Linux下使用howdy实现人脸识别登录的简明教程
    前言从windows切换到Linux会有很多的不适应,自然会想找一些类似于windows体验的Linux替代品,比如windows上的windowshello就很好用,可以使用指纹或者摄像头实现人脸识别在很多场景下可以避免输入密码。经过一番搜索发现howdy是目前Linux上最流行的人脸识别认证的软件,于是就第一时......
  • 经纬恒润成功研发LRR610雷达先进算法!
        好消息!经纬恒润搭载Arbe芯片组的LRR6104D成像雷达算法开发出先进的后点云算法,并已圆满完成集成工作,这标志着智能驾驶感知系统迈向了一个新的里程碑。     经纬恒润自主开发的成像雷达算法,可以有效地跟踪数百个运动和静止目标,输出可行驶区域和道路边界,仅基于......
  • 【算法】字符串函数
    今天讲讲字符串函数。//C++标凇库提供了丰富的字符串操作函数,下面介绍一些常用的函数。//备注:位置可以看成是字符串的下标,从0开始//获取字符串长度//使用length或size函数来获取字符串的长度。#include<iostream>#include<string>#include<algorithm>#include<......
  • 【会议征稿,IEEE出版】第二届算法、图像处理与机器视觉国际学术会议(AIPMV2024,7月12-14)
    2024年镇江市计算机科学技术大会暨第二届算法、图像处理与机器视觉国际学术会议(AIPMV2024)将于2024年7月12日-14日在江苏镇江召开。会议主要围绕算法、图像与视觉处理等研究领域展开讨论,为从事算法、图像与视觉处理研究的专家学者、工程技术人员、技术研发人员提供一个分享......
  • 【耗时8个小时整理】硬核集成算法,学习完你会哭着感谢自己!
    纯 干 货目录纯 干 货1、Bagging(自举汇聚法)2、Boosting(提升法)3、Stacking(堆叠法)4、Voting(投票法)5、深度学习集成今天给大家带来的是「集成算法」的全部整理!其实今儿的一些内容比较好理解~集成算法(EnsembleLearning)是一种将多个弱学习器......
  • 程序员最趁手的SVM算法,学完你会哭着感谢努力的自己!
    纯 干 货目录纯 干 货1线性支持向量机2非线性支持向量机3多类别支持向量机4核函数支持向量机5稀疏支持向量机6核贝叶斯支持向量机7不平衡类别支持向量机在这之前咱们已经接触了各个算法的优缺点的总结,以及8个回归类算法、7个正则化......
  • 代码随想录算法训练营第二十四天 | 回溯算法 77.组合
    回溯算法理论基础文章讲解视频讲解回溯是递归的副产品,只要有回溯就会有递归回溯的本质是琼剧,所以效率不高回溯法可以解决的问题组合问题切割问题子集问题排列问题棋盘问题如何理解回溯回溯算法的问题都可以抽象为树形结构集合的大小就构成了书的快读,递归的深度......
  • 暗水印——变换域DCT水印算法(一种通用性强,能有抵御攻击的手段)
     随着计算机和网络技术的飞速发展,信息的安全保护问题日益突出。数字图像、音频和视频等多媒体数字产品愈来愈需要一种有效的版权保护方法——水印技术,通常用于保护知识产权、防止未经授权的访问、作弊等。广义上可以把水印技术划分为四大类:图像水印、视频水印、音频水印和......
  • 代码随想录算法训练营Day60 | 84.柱状图中最大的矩形 | Python | 个人记录向
    注:今天是代码随想录训练营的最后一天啦!!!本文目录84.柱状图中最大的矩形做题看文章以往忽略的知识点小结个人体会84.柱状图中最大的矩形代码随想录:84.柱状图中最大的矩形Leetcode:84.柱状图中最大的矩形做题无思路。看文章与42.接雨水很像,42.接雨水是找每个......
  • Carmack的快速开平方根倒数算法(Fast inverse square root)
    基本原理需求\(y=\frac{1}{\sqrt{x}}\)\(log(a^b×a^c)=bloga+cloga=(b+c)loga\)32位浮点表示法:二进制的科学计数法符号位1+阶码8(有符号的反码表示幂指数)+小数位23(二进制小数首位必为1,默认,只需表示小数位即可)-20240511163945890.webp)字符串形式:\(S_0​E_1​E_2​...E_7......