Liquid Warping GAN 水记

Liquid Warping GAN 水记

《Liquid Warping GAN: A Unified Framework for Human Motion Imitation, Appearance Transfer and Novel View Synthesis》

论文:https://arxiv.org/abs/1909.12224

姿态转移—Liquid Warping GAN_释然强的博客-CSDN博客

风格迁移1-04:Liquid Warping GAN(Impersonator)-白话给你讲论文-翻译无死角(1)_江南才尽,年少无知!的博客-CSDN博客

这个翻译得不太行,一堆问题

融合了生成 “新视角”,“新姿势”,“新外观” 三个功能的 GAN

能生成 “新视角” 和 “新姿势” 是因为用 SMPL 重建了三维人体模型

能生成 “新外观” 是因为他的 GAN 有一定的解耦能力(可以换衣服什么的)

他 align 的方式是,对两个图重建出 SMPL 三维网格,然后根据mesh格点的对应关系,计算光流。

GAN的目的是:背景补全,纹理和风格迁移(包括头发衣服的迁移)

感觉写得挺混乱的,可能是符号用得太多把他自己都搞晕了,而且有些地方没写清楚。

大致流程就是:

先重建SMPL三维人体,根据人体模型计算光流,用光流扭曲原图,然后送入 GAN 完善。

抠出背景,并且补全,然后把完善后的人体和背景混合,得到最终结果。

GAN 有两个作用,一个是融合目标的纹理及身份信息,一个是生成逼真的图像。

借由 GAN 中的特殊结构 LWB,在对输入图像进行完善的同时,一层层融合原图的纹理和身份信息。允许使用任意多个信息源,分别提供不同的信息(比如脸和衣服和裤子分开提供)(似乎需要人为划定mask)。

LWB 实际上就是把输入了源图像的自编码器的特征图逐层抽出, warp 之后,再逐层累加

训练步骤

在这里插入图片描述

(a) SMPL 人体建模

先用 HMR 解出 人体三维姿态 θ \theta θ 、 SMPL 人体参数 β \beta β 、 相机坐标 K K K

于是可以通过 人体姿态 和 人体参数 得到 SMPL 人体三维网格 M M M

我们分别计算出源图像的 { K s , θ s , β s , M s } \{K_s,\theta_s,\beta_s,M_s\} {Ks,θs,βs,Ms} 以及 参考图像的 { K r , θ r , β r , M r } \{K_r,\theta_r,\beta_r,M_r\} {Kr,θr,βr,Mr}

(b) 光流

在源图视角 K s K_s Ks 下,

渲染出源图网格 M s M_s Ms 的关联映射图 C s C_s Cs

渲染出参考图网格 M r M_r Mr 的关联映射图 C t C_t Ct 。(这个 C C C 估计是类似网格坐标的东西)

(使用可微分渲染,Neural Mesh Renderer (NMR)[13] )

(后面还会用到 C C C ,当成 mask 来用)

然后根据 C s C_s Cs C t C_t Ct 计算光流 T 。

使用 C s C_s Cs 计算遮罩,将 I s I_s Is 分为前景图 I f t I_{ft} Ift 和 背景图 I b g I_{bg} Ibg

使用光流 T 将源图像 I s I_s Is 扭曲,得到 I s y n I_{syn} Isyn (似乎用了双线性采样)。

( c ) Liquid Warping GAN

完成三个工作

  1. 合成背景
  2. 基于可见部分,预测不可见部分的颜色
  3. 通过对 SMPL 的重建,生成衣服、头发方面的像素

GAN 分为三部分

G B G G_{BG} GBG 合成背景:

输入 I b g I_{bg} Ibg 以及对应的 mask ,输出完整背景 I ^ b g \hat I_{bg} I^bg

G S I D G_{SID} GSID 是一个降噪卷积自编码器,用于提取出源图片的身份特征

输入 masked I f t I_{ft} Ift C s C_{s} Cs ,再结合 I ^ b g \hat I_{bg} I^bg ,尝试重建 I ^ s \hat I_{s} I^s

G T S F G_{TSF} GTSF 合成最终结果

输入 I s y n I_{syn} Isyn C t C_t Ct ,再结合 I ^ b g \hat I_{bg} I^bg ,输出 I ^ t \hat I_t I^t

(感觉作用就是把 用光流扭曲出来的人体 优化一下,顺便改一下风格和纹理)

G B G , G S I D , G T S F G_{BG},G_{SID},G_{TSF} GBG,GSID,GTSF 是 ResUnet 架构(一种 ResNet 和 U-net 的结合体)

Liquid Warping Block(本文关键创新)

提出了 Liquid Warping Block ,用于向 G T S F G_{TSF} GTSF 中引入源图像的纹理、风格、颜色等信息

在这里插入图片描述

图示中使用了两个源,实际上可以使用任意数量的源图像

绿色和蓝色的 X s 1 l X_{s_1}^l Xs1l X s 2 l X_{s_2}^l Xs2l G S I D G_{SID} GSID 对两个源图像的第 l l l 层特征图

中间白色的 X t l X_t^l Xtl G T S F G_{TSF} GTSF 的第 l l l 层特征图

B S ( X s 1 l , T 1 ) BS(X_{s_1}^l,T_1) BS(Xs1l,T1) 表示用双线性采样和光流 T 1 T_1 T1 来扭曲特征图

LWB 输出如下:

X ^ t l = B S ( X s 1 l , T 1 ) + B S ( X s 2 l , T 2 ) + X t l \hat X_t^l=B S(X_{s_1}^l, T_1)+B S(X_{s_2}^l, T_2)+X_t^l X^tl=BS(Xs1l,T1)+BS(Xs2l,T2)+Xtl

背景与前景的混合

G B G G_{BG} GBG 直接输出整个背景

G S I D G_{SID} GSID G T S F G_{TSF} GTSF 输出 颜色图 P P P 和 注意力图 A A A (这玩意不就是透明度吗,我服了)

最终输出需要和背景混合,计算如下:

I ^ s = P s ∗ A s + I ^ b g ∗ ( 1 − A s ) I ^ t = P t ∗ A t + I ^ b g ∗ ( 1 − A t ) \begin{aligned}\hat{I}_{s} &=P_{s} * A_{s}+\hat{I}_{b g} *\left(1-A_{s}\right) \\\hat{I}_{t} &=P_{t} * A_{t}+\hat{I}_{b g} *\left(1-A_{t}\right)\end{aligned} I^sI^t=PsAs+I^bg(1As)=PtAt+I^bg(1At)

判别器

使用 pix2pix 架构

损失函数

用了四个损失

VGG 感知损失

L p = ∥ f ( I ^ s ) − f ( I s ) ∥ 1 + ∥ f ( I ^ t ) − f ( I r ) ∥ 1 L_{p}=\|f(\hat{I}_{s})-f(I_{s})\|_{1}+\|f(\hat{I}_{t})-f(I_{r})\|_{1} Lp=f(I^s)f(Is)1+f(I^t)f(Ir)1

其中 f f f 是预训练的 VGG-19

面部身份损失

L f = ∥ g ( I ^ t ) − g ( I r ) ∥ 1 L_{f}=\left\|g(\hat{I}_{t})-g\left(I_{r}\right)\right\|_{1} Lf= g(I^t)g(Ir) 1

其中 g g g 是预训练的 SphereFaceNet

对抗损失

结合 LSGAN 和 PatchGAN

L a d v G = ∑ D ( I ^ t , C t ) 2 L_{a d v}^{G}=\sum D(\hat{I}_{t}, C_{t})^{2} LadvG=D(I^t,Ct)2

注意力正则化损失

A 是混合背景和前景使用的注意力图(就是透明度)。

这个正则化项的目标是,令 A 光滑,并且防止饱和。

由于 A 和 P 没有相应的 ground truth ,只能靠上面几个 loss 来学。

在学习中, A 会很快饱和到 1 。

为了缓解这种情况,约束 A ,令 A 接近 3D 网格渲染出的身体轮廓 S 。

直接用 S 不太好,他很粗糙,而且不包括头发和身体。

对 A 还应用了 Total Variation Regularization [25],以补偿 S 的不足,并且加强前景背景混合的空间颜色平滑(什么玩意)。

L a = ∥ A s − S s ∥ 2 2 + ∥ A t − S t ∥ 2 2 + T V ( A s ) + T V ( A t ) 其中, T V ( A ) = ∑ [ A ( i , j ) − A ( i − 1 , j ) ] 2 + [ A ( i , j ) − A ( i , j − 1 ) ] 2 \begin{aligned} L_{a} &=\left\|A_{s}-S_{s}\right\|_{2}^{2}+\left\|A_{t}-S_{t}\right\|_{2}^{2}+T V\left(A_{s}\right)+T V\left(A_{t}\right) \\ 其中,T V(A) &=\sum[A(i, j)-A(i-1, j)]^{2}+[A(i, j)-A(i, j-1)]^{2} \end{aligned} La其中,TV(A)=AsSs22+AtSt22+TV(As)+TV(At)=[A(i,j)A(i1,j)]2+[A(i,j)A(i,j1)]2

推理过程

在这里插入图片描述

不想看了,感觉后面帮助不大

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值