| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> GAN的域外编辑 水记 -> 正文阅读 |
|
[人工智能]GAN的域外编辑 水记 |
GAN的域外编辑 水记《Editing Out-of-domain GAN Inversion via Differential Activations》 论文:https://arxiv.org/abs/2207.08134 项目:https://github.com/HaoruiSong622/Editing-Out-of-Domain 有时候真实图像没法很好的反演,这样就没法很好地编辑 本文设计了一个模型,将编辑后发生变化的部分应用回原图,实现域外编辑。 这样应该有一个前提,就是要编辑的部分的反演结果要比较好。如果要编辑的部分也反演得不好,很可能就会有问题。 总的看完,这个方法感觉不够鲁棒。 个人总结大致流程给定输入图片 I I I 和 编辑属性使用的向量 α n \alpha_n αn? 先反演出 I I I 的隐编码 w w w 。 把 w w w 直接输入生成器,重建出反演的图像 I ′ I' I′ 。 对 w w w 做编辑后输入生成器,生成反演并编辑后的图像 T T T 。 用 一个模型(称为 可微分激励模型) 计算 I ′ I' I′ 与 T T T 在哪些地方有差别,得到一个 权重 mask M M M 。 用权重 mask 指导,做 I I I 和 T T T 的加权和,得到一个粗略的编辑后图像 F fused F_{\text{fused}} Ffused? 。 用一个图像翻译模型(称为 去鬼影网络),输入 F fused F_{\text{fused}} Ffused? ,输出完善的编辑后的图像。 可微分激励模型用于计算 I ′ \boldsymbol{I}^{\prime} I′ 与 T \boldsymbol{T} T 在哪些地方有差别,得到一个 权重 mask M M M 。 先准备一个可训练的编码器 E trainable ( ? ) E_{\text{trainable}}(\cdot) Etrainable?(?) 计算 I ′ I' I′ 和 T T T 的编码之差 Δ = E trainable? ( I ′ ) ? E trainable? ( T ) \boldsymbol{\Delta}=E_{\text {trainable }}\left(\boldsymbol{I}^{\prime}\right)-E_{\text {trainable }}(\boldsymbol{T}) Δ=Etrainable??(I′)?Etrainable??(T) 用一个轻量级的卷积分类器,分析出有哪些属性被编辑过,使用softmax交叉熵损失。 然后我们对这个卷积分类器做 CAM ,得到其注意力分布图,作为权重mask。
去鬼影网络一个全卷积网络,由 编码器、解码器、预训练的 StyleGAN2 生成器 这几部分组成。 我们的目的是利用预训练的GAN里的人脸先验来生成无伪影的图像。 我们把 F fused F_{\text{fused}} Ffused? 输入全卷积的 编码器-解码器 网络,编码器会得到 F fused F_{\text{fused}} Ffused? 的隐编码(相当于反演?那你为啥要用全卷积结构啊?输出尺寸不该是固定的吗?),解码器会得到无伪影的图像, StyleGAN也会得到无伪影的图像。我们把两个生成器和解码器的对应层特征合并,得到最终结果。(哇,效果真的差呀,还要靠特征合并才行,这不是说明训练方向都有偏差吗……是因为合成的训练数据不能满足需要吧……) 为了训练去鬼影网络,我们合成了一系列图片对 { F train? , I } \left\{\boldsymbol{F}_{\text {train }}, \boldsymbol{I}\right\} {Ftrain??,I} 。 F train? \boldsymbol{F}_{\text {train }} Ftrain?? 的合成方式如下: F train? = T ⊙ M train? + I ⊙ ( 1 ? M train? ) \boldsymbol{F}_{\text {train }}=\boldsymbol{T} \odot \boldsymbol{M}_{\text {train }}+\boldsymbol{I} \odot\left(1-\boldsymbol{M}_{\text {train }}\right) Ftrain??=T⊙Mtrain??+I⊙(1?Mtrain??) 其中, M t r a i n \boldsymbol{M}_{\mathrm{train}} Mtrain? 的合成方式如下: M t r a i n ( i , j ) = { M Diff-CAM? ( i , j ) , ?if? M Diff-CAM? ( i , j ) ≤ 0.5 1 ? M Diff-CAM? ( i , j ) , ?if? M Diff-CAM? ( i , j ) > 0.5 \boldsymbol{M}_{\mathrm{train}}(i, j)= \left\{\begin{array}{ccc} \boldsymbol{M}_{\text {Diff-CAM }}(i, j), & \text { if } \quad \boldsymbol{M}_{\text {Diff-CAM }}(i, j) \leq 0.5 \\ 1-\boldsymbol{M}_{\text {Diff-CAM }}(i, j),& \text { if } \quad \boldsymbol{M}_{\text {Diff-CAM }}(i, j)>0.5 \end{array}\right. Mtrain?(i,j)={MDiff-CAM??(i,j),1?MDiff-CAM??(i,j),??if?MDiff-CAM??(i,j)≤0.5?if?MDiff-CAM??(i,j)>0.5? T \boldsymbol{T} T 是随机选择的,根据选择的 T \boldsymbol{T} T ,可以得到对应的 M Diff-CAM? \boldsymbol{M}_{\text {Diff-CAM }} MDiff-CAM?? 这个式子把 M t r a i n \boldsymbol{M}_{\mathrm{train}} Mtrain? 中所有的值都压到 [0,0.5] 之间,这样可以人为制造伪影,但是又不至于太过,这样我们就可以把 I \boldsymbol{I} I 作为 ground truth 。 用了三个损失,L2像素级重建损失、VGG16 L2感知损失、对抗损失。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 22:57:30- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |