U-GAT-IT 使用指南:人脸动漫风格化

2023-12-01 16:52

本文主要是介绍U-GAT-IT 使用指南:人脸动漫风格化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

U-GAT-IT 使用指南

    • 网络结构
      • 优化目标

 


论文地址:https://arxiv.org/pdf/1907.10830.pdf

项目代码:https://github.com/taki0112/UGATIT

U-GAT-IT 和 Pix2Pix 的区别:

  • U-GAT-IT:主要应用于图像风格转换、图像翻译和图像增强等任务,适用于将图像从一个领域转换到另一个领域的应用

  • PIX2PIX:主要应用于图像转换任务,例如将线稿转换为彩色图像、将语义标签转换为真实图像等,适用于输入和输出之间存在明确映射关系的应用。

网络结构

生成器

注意力机制 CAM:全局池化和平均池化的类激活图。

  • 假设我们要对一张狗的图片进行分类,判断它是不是一只狗。我们使用了一个卷积神经网络(CNN)进行分类,并得到了一个类激活图(CAM)。

  • 在这张狗的图片中,CAM显示了狗的脸部区域比较亮,其他区域较暗。这意味着网络在分类时主要关注狗的脸部来判断它是否是一只狗。

实现方式是,通过权重(生成器图的 w 1 、 w 2 、 w 3 w_{1}、w_{2}、w_{3} w1w2w3):

  • 特征图编码:输入图片经过下采样、残差模块,卷积提取特征,得到特征图
  • 通道注意力:每个特征图对应一个权重 w,N 个特征图对应 N 个权重。权重就是通道注意力机制,每个通道对应不同特征(眼睛、鼻子、毛发、耳朵)
  • 新特征图分类:新特征图的重要性,通过全连接层分类器学习,ta就知道了分类的核心特征是猫脸

判别器

基本相同,也是通道注意力机制。

AdaLIN 结合了 Layer Normalization(LN)和 Instance Normalization(IN)各自的优点,实现归一化。

  • LN:多个通道进行归一化,获取全局特征
  • IN:各个图像特征图单独归一化,保留内容结构

把两者结合起来,互相抵消他们之间的不足,同时又结合了两者的优点。

最朴素的思想是寻找一个比率,来权衡某一层中 IN 与 LN 的关系:

  • ρ ⋅ I N + ( 1 − ρ ) ⋅ L N \rho\cdot IN+(1-\rho)\cdot LN ρIN+(1ρ)LN

完整是这样:

  • A d a L I N ( a , γ , β ) = γ ⋅ ( ρ ⋅ a ^ I + ( 1 − ρ ) ⋅ a L ^ ) + β a I ^ = a − μ I σ I 2 + ϵ , a L ^ = a − μ L σ L 2 + ϵ , ρ ← c l i p [ 0 , 1 ] ( ρ − τ Δ ρ ) \begin{aligned} AdaLIN& (a,\gamma,\beta)=\gamma\cdot(\rho\cdot\hat{a}_{I}+(1-\rho)\cdot\hat{a_{L}})+\beta \\ &\hat{a_{I}}=\frac{a-\mu_{I}}{\sqrt{\sigma_{I}^{2}+\epsilon}},\hat{a_{L}}=\frac{a-\mu_{L}}{\sqrt{\sigma_{L}^{2}+\epsilon}}, \\ &\rho\leftarrow clip_{[0,1]}(\rho-\tau\Delta\rho) \end{aligned} AdaLIN(a,γ,β)=γ(ρa^I+(1ρ)aL^)+βaI^=σI2+ϵ aμI,aL^=σL2+ϵ aμL,ρclip[0,1](ρτΔρ)

这个公式是AdaLIN的具体计算公式,其中:

  • a a a是输入特征图
  • γ \gamma γ β \beta β是可学习的参数,分别用于缩放和偏移
  • ρ \rho ρ是用于调整Layer Normalization和Instance Normalization的权重的参数
  • a I ^ \hat{a_{I}} aI^ a L ^ \hat{a_{L}} aL^是通过Instance Normalization和Layer Normalization对输入特征图进行归一化得到的结果
  • μ I \mu_{I} μI σ I \sigma_{I} σI是Instance Normalization中计算的均值和标准差
  • μ L \mu_{L} μL σ L \sigma_{L} σL是Layer Normalization中计算的均值和标准差
  • ϵ \epsilon ϵ是一个小的常数,用于避免分母为0的情况
  • c l i p [ 0 , 1 ] clip_{[0,1]} clip[0,1]表示将 ρ \rho ρ限制在0和1之间
  • Δ ρ \Delta\rho Δρ是一个可学习的参数,用于更新 ρ \rho ρ
  • τ \tau τ是一个调整步长的超参数

当 IN 更有用时, ρ \rho ρ 趋向于 1.

当 LN 更有用时, ρ \rho ρ 趋向于 0.

优化目标

对抗损失: L g a n s → t = E ⁡ x ∼ X t ⌊ ( D t ( x ) ) 2 ⌋ + E ⁡ x ∼ X s ⌊ ( 1 − D t ( G s → t ( x ) ) ) 2 ⌋ L_{gan}^{s\to t}=\operatorname{E}_{x\sim X_t}\left\lfloor(D_t(x))^2\right\rfloor+\operatorname{E}_{x\sim X_s}\left\lfloor(1-D_t(G_{s\to t}(x)))^2\right\rfloor Lganst=ExXt(Dt(x))2+ExXs(1Dt(Gst(x)))2

  • 判别是真实图像,还是生成图像
  • s − > t s->t s>t:S是真实图像(源域),T是生成图像(目标域)
  • 源域和目标域:在图像翻译任务中,源域可以是一个领域(如马)的图像集合,而目标域可以是另一个领域(如斑马)的图像集合。我们的目标是将马的图像转换成斑马的图像。
  • E ⁡ x ∼ X t \operatorname{E}_{x\sim X_t} ExXt:图像来自真实目标域,即 x 从 X t X_t Xt 真实目标域取值
  • 我们希望小猫咪能够像小狗狗一样学会叫声。我们让小猫咪通过观察小狗狗的叫声来学习。小猫咪会尝试发出自己的叫声,然后小狗狗会判断这个声音是不是来自于小狗狗。如果小狗狗认为声音是来自于小狗狗,那么我们会说小猫咪的叫声越接近真实的小狗狗叫声。
  • D t ( x ) D_t(x) Dt(x) 表示小狗狗判别器对于真实目标域的小狗狗叫声 x x x的真实性判断。
  • G s → t ( x ) G_{s\to t}(x) Gst(x) 是小猫咪通过模仿小狗狗学习到的叫声。
  • D t ( G s → t ( x ) ) D_t(G_{s\to t}(x)) Dt(Gst(x)) 是小狗狗判断小猫咪模拟的叫声 G s → t ( x ) G_{s\to t}(x) Gst(x) 的真实性。
  • 1 − D t ( G s → t ( x ) ) 1-D_t(G_{s\to t}(x)) 1Dt(Gst(x)) 是小狗狗判断小猫咪模拟的叫声 G s → t ( x ) G_{s\to t}(x) Gst(x) 的不真实性(伪造概率)。

身份不变损失: L i d e n t i t y s → t = E ⁡ x ∼ X t [ ∥ x − G s → t ( x ) ∥ 1 ] L_{identity}^{s\to t}=\operatorname{E}_{x\sim X_t}\left[\left\|x-G_{s\to t}(x)\right\|_1\right] Lidentityst=ExXt[xGst(x)1]

  • 要把输入图片变成猫的图片,如果输入图片本身就是猫,那就不用变了。

循环一致性损失: L c y c l e s → t = E ⁡ x ∼ X s [ ∣ x − G t → s ( G s → t ( x ) ) ∣ 1 ] L_{cycle}^{s\to t}=\operatorname{E}_{x\sim X_s}\left[\left|x-G_{t\to s}\left(G_{s\to t}(x)\right)\right|_1\right] Lcyclest=ExXs[xGts(Gst(x))1]

  • 正向变换过后,逆向还能变回来。

 

CAM 的生成器、判别器损失: L c a m G t → t = − E x ∼ X s [ log ⁡ ( η s ( x ) ) ] + E x ∼ X t [ log ⁡ ( 1 − η s ( x ) ) ] L c a m D t = E x ∼ X t [ ( η D t ( x ) ) 2 ] + E x ∼ X s [ log ⁡ ( 1 − η D t ( G s → t ( x ) ) ) 2 ] \begin{aligned}L_{cam}^{G_{t\to t}}&=-\mathrm{E}_{_{x\sim X_s}}\big[\log\big(\eta_s\big(x\big)\big)\big]+\mathrm{E}_{_{x\sim X_t}}\big[\log\big(1-\eta_s\big(x\big)\big)\big]\\\\L_{_{cam}}^{D_t}&=\mathrm{E}_{_{x\sim X_t}}\big[\big(\eta_{D_t}\big(x\big)\big)^2\big]+\mathrm{E}_{_{x\sim X_s}}\big[\log\big(1-\eta_{_{D_t}}\big(G_{_{s\to t}}\big(x\big)\big)\big)^2\big]\end{aligned} LcamGttLcamDt=ExXs[log(ηs(x))]+ExXt[log(1ηs(x))]=ExXt[(ηDt(x))2]+ExXs[log(1ηDt(Gst(x)))2]
 

优化目标: min ⁡ G s → t , G t → s , η s , η t max ⁡ D s , D t , η D s , η D t λ 1 L g a n + λ 2 L c y c l e + λ 3 L i d e n t i t y + λ 4 L c a m \min_{G_{s\to t},G_{t\to s},\eta_s,\eta_t}\max_{D_s,D_t,\eta_{D_s},\eta_{D_t}}\lambda_1L_{gan}+\lambda_2L_{cycle}+\lambda_3L_{identity}+\lambda_4L_{cam} minGst,Gts,ηs,ηtmaxDs,Dt,ηDs,ηDtλ1Lgan+λ2Lcycle+λ3Lidentity+λ4Lcam

  • 权重: λ 1 = 1 , λ 2 = 10 , λ 3 = 10 , λ 4 = 1000. \begin{aligned}\lambda_1=1,\lambda_2=10,\lambda_3=10,\lambda_4=1000.\end{aligned} λ1=1,λ2=10,λ3=10,λ4=1000.

这篇关于U-GAT-IT 使用指南:人脸动漫风格化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/441939

相关文章

图神经网络框架DGL实现Graph Attention Network (GAT)笔记

参考列表: [1]深入理解图注意力机制 [2]DGL官方学习教程一 ——基础操作&消息传递 [3]Cora数据集介绍+python读取 一、DGL实现GAT分类机器学习论文 程序摘自[1],该程序实现了利用图神经网络框架——DGL,实现图注意网络(GAT)。应用demo为对机器学习论文数据集——Cora,对论文所属类别进行分类。(下图摘自[3]) 1. 程序 Ubuntu:18.04

Maven使用指南的笔记

文档索引 Maven in 5 Minutes 篇幅很短,快速上手,不求甚解。 执行如下命令,创建项目的基础配置。 mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1

[数据集][目标检测]人脸口罩佩戴目标检测数据集VOC+YOLO格式8068张3类别

数据集格式:Pascal VOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):8068 标注数量(xml文件个数):8068 标注数量(txt文件个数):8068 标注类别数:3 标注类别名称:["face_with_mask","face_without_mask","mask"] 每个类别

OWASP ZAP2.4.3使用指南(中文版)

OWASP ZAP是一款开源的web安全工具,它简单易用,与burp suite相似,主要功能包含了:代理、数据拦截修改、主动扫描、被动扫描、主动攻击、爬虫、fuzzing、渗透测试等。在国外安全圈和渗透测试领域应用非常广泛,在youtube上有许多关于ZAP的视频资料。与burp suite相比,前者是一款商业渗透测试工具,部分功能不能使用,国内的大部分使用者都使用的破解版,而ZAP是开源免费的

Circuitjs 在线电路模拟器使用指南

Circuitjs 是一款 web 在线电路模拟器, 可以在浏览器上方便地模拟各种模拟或数字的电路, 用户无需安装各种软件, 生成的电路也支持在线分享给其它用户. 网址是 https://cc.xiaogd.net/. 当前版本为 v2.9.0 cc 为 circuit 的简写, 也即是电路的意思. 版本说明 在模拟器右侧栏增加了版本的说明. 另外, 在 菜单--关于 的弹出窗

Linux IPC 资源管理:ipcs和 ipcrm使用指南

文章目录 0. 引言1. IPC 资源概述2. 查询 IPC 资源2.1 使用 `ipcs` 查询 IPC 资源2.2 查询特定 IPC 资源2.3 查询系统 IPC 参数 3. 修改 IPC 系统参数4. 清除 IPC 资源5. 实践应用5.1 查询用户的消息队列5.2 查找未被清理的消息队列 0. 引言 进程间通信(IPC)允许不同的进程共享数据或进行同步操作。Linux

【数据应用案例】卡通人脸检测

案例来源:@将门创投 案例地址: https://mp.weixin.qq.com/s/rze_vnSRriQ5tIzMd-bDug 1. 卡通人脸检测的用处 1)搜索引擎检索 2)通过识别与语音合成帮助视障用户享受卡通作品 3)内容控制和审查的一部分 2. 数据集:IIIT-CFW卡通数据集,包含8928张带标记卡通人脸图像,

EventBus-Vue事件总线解析与使用指南

前言         在Vue.js中,组件通信是开发过程中非常场景的需求。根据不同的场景和需求,Vue提供了多种组件通信方式。比如父子组件通信、兄弟组件通信、跨代组件通信等。当应用程序中两个组件或者说页面之间没有引入和被引入的关系的时,或者说他们之间嵌套的结果复杂的时候,我们可以考虑如何传递数据呢?         其中适用的通信方式有 Vuex、provide 和 inject、Event

Vuex Module Decorators 使用指南

vuex-module-decorators 是基于 TypeScript 的 Vuex 装饰器库,它允许我们使用装饰器模式编写模块化的 Vuex 代码,使得代码更加简洁和可维护。对于 Vue.js 项目,尤其是使用 TypeScript 的项目,vuex-module-decorators 提供了一种更优雅的方式来组织 Vuex store。 在本文中,我们将介绍如何使用 vuex-modul

Python--基于OpenCV数据集的人脸定位和识别

就是调个库,没什么好说的。上代码: 事前准备: python安装两个库。 pip install opencv-pythonpip install opencv-contrib-python 到cv2文件夹下取出三个文件,复制到工作区: haarcascade_frontalcatface.xmlhaarcascade_frontalcatface_extended.xmlhaarca