My App

MagicPose: Realistic Human Poses and Facial Expressions Retargeting with Identity-aware Diffusion

(任务简述我总结了几次, 感觉都没有原文好, 我直接翻译吧): '在这个工作, 我们提出了基于diffusion的模型用于2D人类姿势和面部表情的重构. 给一张参考图, 我们旨在生成一张人类的新的图片, 控制人的姿势或者是面部表达, 保持任务的ip不变'. 讲方法: 使用两阶段训练策略分解人类的动作和外观. 讲效果: 在面部, pose甚至是背景实现稳健的ip控制, 零样本生成, 可作为sd的拓展插件.

MagicPose-intro

介绍

人类动作转换任务有挑战性, 有广阔的应用场景.

传统方法从零开始训练, 例如GAN, 问题: 1)特别依赖一个图片扭曲模块, 因此很难生成参考图片中不可见的部分, 2)泛化能力差

最近diffusion模型崛起, 带动了多个下游任务的发展, 当前对身体pose重构存在以下问题: 1)生成质量, 身份保持, 2)与基于GAN的方法比较没有优势

讲自己的方法: 充分探索了sd的图片重构能力, 将任务分解为形象控制和姿势控制; 讲结构, 形象控制模块和pose控制模块; 讲训练方法, 多阶段的训练策略; 讲效果, IP保持好, 能处理未见部分.

相关工作

人类动作或表情转换

序列片段生成想要的动作->人类主体转换到3D空间环境(耗费人力和时间)->利用深度学习学习输入的详细表达[GAN, 条件GAN, ...](后面一直在陈述例子)

图片或视频diffusion模型

一些工作表现diffuison在图片生成方面的潜力->Latent space减小计算损失->自定义生成热, text-image兴起[SD]->ControlNet为SD引入特别的控制信号, 像分隔图, pose点等等->加入时间模块用于视频生成.

准备知识

这里介绍了VQ-VAE技术, U-Net结构, CLIP用于文本编码, diffusion加噪去噪过程, 残差块, ControlNet(是SD的延伸, 复制SD的编码结构, 学习特征残差)

MagicPose

MagicPose-overview

先重新说了一遍自己的任务, 为了保证生成的质量, MagicPose尽可能的继承sd的参数, "appearance controller"复制SD的UNet参数, 在人类视频数据集上训练.

探索外表控制机制

引用其他论文"自注意力层和外表的生成高度相关"的观点, 他们设计了一个实验, 其实就是animate anyone里的ReferenceNet, 发现生成的图片和参考图片外貌保持很好, 然后解释了一下原因, 并指出生成结果不稳定的问题.

外表控制(Appearance Controller)预训练

直接看公式和图就行, 很清楚

Our_Attn=softmax ⁣(Q1(K1K2)Td)(V1V2)Our\_Attn = softmax\!\left(\frac{Q_{1}\cdot (K_{1} \oplus K_{2})^{T}}{\sqrt{d}}\right) \cdot (V_{1} \oplus V_{2})

这一阶段还没有pose controller, 主Unet也不训练, 只训练Appearance Controller

外表解耦的姿态控制

为了生成对应姿态的图表, 直接的方法是集成预训练的OpenPose, 但是对与外观无关的姿态控制很困难, 它的设计是这样的, 结合上图.

Pose Controller重用了Appearance Controller的下采样部分参数, 上采样部分换成了零卷积(这里让我想到了X-dancer), 下采样的输出与主Unet的下采样输出相加, 用于控制姿态.

实验

TikTok, Everybody Dance Now数据集和自收集的卡通风格图像, 使用OpenPose提取pose. Appearance Controller的预训练在8个A100, batch_size=192训练10k步, 图片大小512x512学习率1e-4, 接着连接Pose Controller在batch_size=16训练20k步, SD参数在整个过程中冰冻.

定性和定量实验就不细看了, 消融实验部分分别删掉Appearance Controller(当然Pose Controller因为依赖App Controller也没有), Pose Controller, classifier free guidance和数据增强, 比较了一些指标, 好奇没有了Appearance是指不添加控制信号了吗, 认为这里把他换成类似OpenPose Controller更合理.

感受

感觉他的工作量有点小, SD讲得很细, 真正讲方法的部分很少, 方法很像Lora. 耍了些低劣的小聪明, 读起来很不舒服.

再说有用的信息, 1)对ControlNet的介绍是第一次见, 2)自注意力层和外表的生成高度相关

On this page