MagicPose: Realistic Human Poses and Facial Expressions Retargeting with Identity-aware Diffusion
(任务简述我总结了几次, 感觉都没有原文好, 我直接翻译吧): '在这个工作, 我们提出了基于diffusion的模型用于2D人类姿势和面部表情的重构. 给一张参考图, 我们旨在生成一张人类的新的图片, 控制人的姿势或者是面部表达, 保持任务的ip不变'. 讲方法: 使用两阶段训练策略分解人类的动作和外观. 讲效果: 在面部, pose甚至是背景实现稳健的ip控制, 零样本生成, 可作为sd的拓展插件.
介绍
人类动作转换任务有挑战性, 有广阔的应用场景.
传统方法从零开始训练, 例如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尽可能的继承sd的参数, "appearance controller"复制SD的UNet参数, 在人类视频数据集上训练.
探索外表控制机制
引用其他论文"自注意力层和外表的生成高度相关"的观点, 他们设计了一个实验, 其实就是animate anyone里的ReferenceNet, 发现生成的图片和参考图片外貌保持很好, 然后解释了一下原因, 并指出生成结果不稳定的问题.
外表控制(Appearance Controller)预训练
直接看公式和图就行, 很清楚
这一阶段还没有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)自注意力层和外表的生成高度相关