百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

UC伯克利华人发布3DHM框架:一张图片即可模仿任意视频动作

ccwgpt 2024-10-17 08:18 69 浏览 0 评论

编辑:LRS

【新智元导读】无需标注数据,3DHM框架即可让照片动起来,模仿目标视频动作,衣服动起来也真实!


输入一张任意姿势的照片,想让照片里的人跟随「指定视频」来进行动作模仿并不简单,除了肢体动作的模仿外,模型还需要对运动过程中衣服、人物外观的变化进行建模。



如果输入图像是正面的,而模仿的视频动作包括转身的话,模型还需要「想象」出衣服的背面样子,以及衣服在转动过程中飘起的样子。


为了解决这个问题,来自加州大学伯克利分校的研究人员提出了一个两阶段的、基于扩散模型的框架3DHM,通过从单个图像完成纹理图来合成3D人体运动,然后渲染3D人体以模仿视频中actor的动作。


论文地址:https://arxiv.org/abs/2401.10889


3DHM模型中包含两个核心组件:


1. 学习人体和服装中不可见部分的先验知识。


研究人员使用填充扩散(in-filling diffusion)模型,在给定的单张图像中想象(hallucinate)出不可见部分,然后在纹理图空间(texture map space)上训练该模型,在姿势和视点不变的条件下提升采样效率。


2. 使用适当的服装和纹理渲染出不同的身体姿势。


研究人员开发了一个基于扩散模型的渲染pipeline,由3D人体姿势控制,从而可以生成目标人物在不同姿势下的逼真渲染,包括衣服、头发和看不见区域下的合理填充。


该方法可以生成一系列忠实于目标运动的3D姿态、在视觉上与输入更相似的图像;3D控件还能够使用各种合成相机轨迹来渲染人物。


实验结果表明,相比以前的方法,该方法在生成长时间运动和各种高难度的姿势上更有弹性(resilient)。


合成运动中的人物


纹理贴图涂色(Texture map Inpainting)


第一阶段模型的目标是通过涂色模仿者的不可见区域,生成可信的完整纹理贴图。


研究人员首先将三维网格渲染到输入图像上,然后按照4DHumans的方法对每个可见三角形进行颜色采样,从而提取部分可见的纹理图。


输入(input)


先利用一种常用的方法来推断像素到表面的对应关系,从而建立一个不完整的UV纹理图,用于从单张RGB图像中提取三维网格纹理。同时计算可见性掩码,以显示哪些像素在3D中可见,哪些不可见。


目标(target)


由于建模的目的是生成完整的纹理贴图,因此使用视频数据生成伪完整纹理贴图。


由于4DHumans可以随着时间的推移追踪人物,因此会不断更新其内部纹理图,将其表示为可见区域的移动平均值。


但为了生成更清晰的图像,研究人员发现中值滤波比移动平均法更适合生成任务;虽然该技术可以应用于任何视频中,但在本阶段使用的是2,205个人类视频,对于每段人类视频,首先从每帧视频中提取部分纹理图。


由于每段视频都包含360度的人类视角,因此从整段视频中计算出一个伪完整纹理图,并将其设置为第1阶段的目标输出,具体来说是提取视频纹理图可见部分的整体中值。


模型(Model)


研究人员直接在Stable Diffusion Inpainting模型上进行微调,该模型在图像补全任务中表现出色。



输入部分纹理贴图和相应的可见度掩码,然后得到复原的人类预测贴图;锁定文本编码器分支,并始终将「真人」(real human)作为固定稳定扩散模型的输入文本。训练好的模型称为 Inpainting Diffusion


人体渲染(Human Rendering)


第二阶段的目标是获得一个模仿actor动作的人的逼真渲染效果。


虽然中间渲染(根据演员的姿势和阶段1中的纹理贴图渲染)可以反映人体的各种动作,但这些SMPL网格渲染是紧贴人体的,无法表现出服装、发型和体形的逼真渲染效果。


例如,如果输入一个女孩穿着裙子跳舞的场景,中间的渲染可能是「跳舞」,但SMPL网格渲染却无法将裙子做成动画。


为了以完全自监督的方式训练模型,研究人员假定actor就是模仿者,毕竟一个好的actor应该是一个好的模仿者;然后就可以从4DHumans中获取任意视频和姿势序列,再获取任意单帧,并从阶段1中获取完整的纹理贴图,通过在三维姿势上渲染纹理贴图来获取中间渲染图。


有了中间渲染图和真实RGB图像的配对数据后,就可以收集大量的配对数据作为条件来训练第二阶段扩散模型。


输入(Input)


首先将第1阶段生成的纹理贴图(完全完整)应用到actor的三维身体网格序列中,并对模仿者执行演员动作的过程进行中间渲染。


需要注意的是,此时的中间渲染只能反映与三维网格相匹配的服装(贴身衣物),而无法反映SMPL身体以外的纹理,如裙子、冬季夹克或帽子的膨胀区域。


为了获得具有完整服装纹理的人体,研究人员将获得的中间渲染图和人体原始图像输入到渲染扩散中,以渲染出具有逼真外观的人体新姿势。


目标(Target)


由于在收集数据时假定actor是模仿者,所以基于中间渲染图和真实RGB图像的配对数据,可以在大量数据上训练该模型,而不需要任何直接的3D监督信号。


模型(Model)


与ControlNet类似,研究人员直接克隆稳定扩散模型编码器的权重作为可控分支(可训练副本)来处理3D条件。


冻结预先训练好的稳定扩散模型,并输入噪声潜点(64×64),同时将时间t的纹理映射三维人体和原始人体照片输入到固定的VAE编码器中,得到纹理映射三维人体潜码(64 × 64)和外观潜码(64 × 64)作为条件潜码(conditioning latents)。


然后将这两个条件潜码输入渲染扩散可控分支,该分支的主要设计原则是从人类输入中学习纹理,并在训练过程中通过去噪处理将其应用于纹理映射的三维人类。


目标是从第1阶段生成(纹理映射)的三维人体中渲染出具有生动纹理的真人。



通过扩散步骤程序和固定VAE解码器获得输出潜像,并将其处理为像素空间。

与第1阶段相同,锁定了文本编码器分支,并始终将「真人正在表演」(a real human is acting)作为固定稳定扩散模型的输入文本。


将训练好的模型称为渲染扩散(Rendering Diffusion)模型,逐帧预测输出。

实验结果

对比基线


用于对比的sota模型包括DreamPose、DisCo和ControlNet(姿势准确性比较)。


公平起见,所有方法的推理步骤都设为50步。


帧生成质量(Frame-wise Generation Quality)


研究人员在2K2K测试数据集上对比了3DHM和其他方法,该数据集由50个未见过的人体视频组成,分辨率为256×256。


每个人物视频拍摄30帧,代表每个未见者的不同视角,角度范围涵盖0度到360度,每12度取一帧,可以更好地评估每个模型的预测和泛化能力。



从结果中可以看到,3DHM在不同指标上都优于其他基线方法。


视频级生成质量(Video-level Generation Quality)


为了验证3DHM的时间一致性,研究人员还报告了与图像级评估相同的测试集和基线实施的结果。


与图像级对比不同的是,将每连续的16个帧串联起来,形成每个未见过的人在具有挑战性的视角上的样本。



角度范围从150度到195度,每3度取一帧,可以更好地评估每个模型的预测和泛化能力。


根据50个视频的总体平均得分结果中可以看到,尽管3DHM是按每帧进行训练和测试的,但与之前的方法相比仍具有显著优势,也表明3DHM在保持三维控制的时间一致性方面表现出色。


姿势准确率(Pose Accuracy)


为了进一步评估模型的有效性,研究人员首先通过先进的三维姿势估计模型 4DHumans从不同方法生成的人类视频中估计三维姿势,然后使用相同的数据集设置,并将提取的姿势与目标视频中的三维姿势进行比较。


由于ControlNet不输入图像,所以研究人员选择输入了相同的提示「真人正在活动」(a real human is acting)和相应的openpose作为条件。



从结果中可以看到,3DHM能够按照所提供的三维姿势非常准确地合成出活动的人;同时,以前的方法可能无法通过直接预测姿势到像素的映射达到同样的性能。


还可以注意到,即使DisCO和ControlNet由Openpose控制,DreamPose由DensePose控制,3DHM也能在2D指标和3D指标上取得优异的结果。

相关推荐

RACI矩阵:项目管理中的角色与责任分配利器

作者:赵小燕RACI矩阵RACI矩阵是项目管理中的一种重要工具,旨在明确团队在各个任务中的角色和职责。通过将每个角色划分为负责人、最终责任人、咨询人和知情人四种类型,RACI矩阵确保每个人都清楚自己...

在弱矩阵组织中,如何做好项目管理工作?「慕哲制图」

慕哲出品必属精品系列在弱矩阵组织中,如何做好项目管理工作?【慕哲制图】-------------------------------慕哲制图系列0:一图掌握项目、项目集、项目组合、P2、商业分析和NP...

Scrum模式:每日站会(Daily Scrum)

定义每日站会(DailyScrum)是一个Scrum团队在进行Sprint期间的日常会议。这个会议的主要目的是为了应对Sprint计划中的不断变化,确保团队能够有效应对挑战并达成Sprint目标。为...

大家都在谈论的敏捷开发&Scrum,到底是什么?

敏捷开发作为一种开发模式,近年来深受研发团队欢迎,与瀑布式开发相比,敏捷开发更轻量,灵活性更高,在当下多变环境下,越来越多团队选择敏捷开发。什么是敏捷?敏捷是一种在不确定和变化的环境中,通过创造和响应...

敏捷与Scrum是什么?(scrum敏捷开发是什么)

敏捷是一种思维模式和哲学,它描述了敏捷宣言中的一系列原则。另一方面,Scrum是一个框架,规定了实现这种思维方式的角色,事件,工件和规则/指南。换句话说,敏捷是思维方式,Scrum是规定实施敏捷哲学的...

敏捷项目管理与敏捷:Scrum流程图一览

敏捷开发中的Scrum流程通常可以用一个简单的流程图来表示,以便更清晰地展示Scrum框架的各个阶段和活动。以下是一个常见的Scrum流程图示例:这个流程图涵盖了Scrum框架的主要阶段和活动,其中包...

一张图掌握项目生命周期模型及Scrum框架

Mockito 的最佳实践(mock方法)

记得以前面试的时候,面试官问我,平常开发过程中自己会不会测试?我回答当然会呀,自己写的代码怎么不测呢。现在想想我好像误会他的意思了,他应该是想问我关于单元测试,集成测试以及背后相关的知识,然而当时说到...

EffectiveJava-5-枚举和注解(java枚举的作用与好处)

用enum代替int常量1.int枚举:引入枚举前,一般是声明一组具名的int常量,每个常量代表一个类型成员,这种方法叫做int枚举模式。int枚举模式是类型不安全的,例如下面两组常量:性别和动物种...

Maven 干货 全篇共:28232 字。预计阅读时间:110 分钟。建议收藏!

Maven简介Maven这个词可以翻译为“知识的积累”,也可以翻译为“专家”或“内行”。Maven是一个跨平台的项目管理工具。主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。仔...

Java单元测试框架PowerMock学习(java单元测试是什么意思)

前言高德的技术大佬在谈论方法论时说到:“复杂的问题要简单化,简单的问题要深入化。”这句话让我感触颇深,这何尝不是一套编写代码的方法——把一个复杂逻辑拆分为许多简单逻辑,然后把每一个简单逻辑进行深入实现...

Spring框架基础知识-第六节内容(Spring高级话题)

Spring高级话题SpringAware基本概念Spring的依赖注入的最大亮点是你所有的Bean对Spring容器的存在是没有意识的。但是在实际的项目中,你的Bean必须要意识到Spring容器...

Java单元测试浅析(JUnit+Mockito)

作者:京东物流秦彪1.什么是单元测试(1)单元测试环节:测试过程按照阶段划分分为:单元测试、集成测试、系统测试、验收测试等。相关含义如下:1)单元测试:针对计算机程序模块进行输出正确性检验工作...

揭秘Java代码背后的质检双侠:JUnit与Mockito!

你有没有发现,现在我们用的手机App、逛的网站,甚至各种智能设备,功能越来越复杂,但用起来却越来越顺畅,很少遇到那种崩溃、卡顿的闹心事儿?这背后可不是程序员一拍脑袋写完代码就完事儿了!他们需要一套严谨...

单元测试框架哪家强?Junit来帮忙!

大家好,在前面的文章中,给大家介绍了以注解和XML的方式分别实现IOC和依赖注入。并且我们定义了一个测试类,通过测试类来获取到了容器中的Bean,具体的测试类定义如下:@Testpublicvoid...

取消回复欢迎 发表评论: