阿里新模型——Champ:实现3D人物图像转视频!

一张照片 + 一段视频,就能让照片活起来?今天给大家介绍的就是这款神器的视频生成框架—Champ!

关于Champ

Champ是由阿里巴巴、南京大学和复旦大学的研究人员共同提出的一种旨在提供可控且与原始人物保持一致性的人物图像动画视频生成框架。

通俗点来讲,它能把静态照片变成动态视频,这技术在人体视频生成领域能打!跟别的工具比,Champ的动作控制更精准,假影少,外观匹配度高,稳定性强,还能处理各种不同体型的人像,简直不要太棒!

模型原理

Champ 利用先进的人体网格恢复模型,从输入的人体视频中提取出对应的参数化三维人体网格模型 SMPL 序列(Skinned Multi-Person Linear Model),进一步从中渲染出对应的深度图,法线图,人体姿态与人体语义图,作为对应的运动控制条件去指导视频生成,将动作迁移到输入的参考人像上,能够显著地提升人体运动视频的质量,以及几何和外观一致性。

图片

来看下 Champ 在真实世界人像上的视频效果,以下图左上角的动作视频为输入,Champ 能让不同的人像「复制」相同的动作:

图片

应用场景

Champ模型的应用前景广阔。在娱乐行业,它可以为电影和游戏角色提供更加逼真的动作捕捉;在社交媒体上,用户可以创建个性化的动态头像,让社交互动更加生动有趣;对于艺术家和内容创作者来说,Champ提供了一个全新的创作工具,让他们的作品更具吸引力和表现力。

图片

图片

如何使用?

Champ目前已经全面开源,大家直接上GitHub下载代码就行。当然了,Hugging Face上也有Demo,想先试水的可以在线玩~

项目地址:

https://fudan-generative-vision.github.io/champGitHub

地址:

https://github.com/fudan-generative-vision/champ

论文地址:

https://arxiv.org/pdf/2403.14781

Hugging Face 链接:

https://huggingface.co/fudan-generative-ai/champ

*西安觉醒元宇宙AI,是专注线上AI培训、AI绘画辅导、AI开发服务的专业教育平台!

扫描下方二维码进入AI交流学习群,获取超多AI前沿知识

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一段 C++ 代码,包含了几个语句,主要功能是订阅ROS话题,加载URDF模型,并获取ROS节点的命名空间。 具体来说,这段代码中: - `if (orientation_from_imu_)` 表示如果满足条件 `orientation_from_imu_`,则执行下面的语句。这里的 `orientation_from_imu_` 是一个成员变量,可能是一个布尔类型的变量。 - `imu_subscriber_ = nh->subscribe<sensor_msgs::Imu>("imu/data", 1, &StateEstimation::imu_callback_, this);` 表示创建了一个 ROS 订阅者对象 `imu_subscriber_`,订阅了名为 "imu/data" 的话题,并指定了回调函数 `&StateEstimation::imu_callback_`。其中,`nh` 是一个 ROS 节点句柄,用于创建 ROS 订阅者对象;`1` 表示订阅话题的队列长度为 1;`this` 表示回调函数的对象是当前对象。 - `base_.setGaitConfig(gait_config_);` 表示调用对象 `base_` 的成员函数 `setGaitConfig()`,并将参数 `gait_config_` 传递给该函数。这里的 `base_` 可能是一个对象。 - `champ::URDF::loadFromServer(base_, nh);` 表示调用 `champ::URDF` 命名空间中的静态成员函数 `loadFromServer()`,并将 `base_` 和 `nh` 作为参数传递给该函数。这个函数的作用是从 ROS 参数服务器中加载 URDF 模型,然后将模型设置到 `base_` 对象中。 - `joint_names_ = champ::URDF::getJointNames(nh);` 表示调用 `champ::URDF` 命名空间中的静态成员函数 `getJointNames()`,并将 `nh` 作为参数传递给该函数。这个函数的作用是从 ROS 参数服务器中获取机器人关节名称列表,并将结果保存到 `joint_names_` 变量中。 - `node_namespace_ = ros::this_node::getNamespace();` 表示调用 ROS API 中的 `ros::this_node::getNamespace()` 函数,获取当前节点的命名空间,并将结果保存到 `node_namespace_` 变量中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值