苹果把NeRF玩出新高度:只需单个10s视频,就能重构人物动作和场景

2024-03-23 17:30

本文主要是介绍苹果把NeRF玩出新高度:只需单个10s视频,就能重构人物动作和场景,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

羿阁 发自 凹非寺
量子位 | 公众号 QbitAI

有了这个发明,以后演员拍戏再也不用抠图了?

答:可以直接一键合成。(手动狗头)

让我们赶紧来看看,这个由苹果最新研发的NeuMan框架:

只需输入一段10s左右的人物视频,就能合成该人物在新场景下做着各种新动作的影像。

前空翻?so easy!

c0744a2187240887838f8c1d0268acc3.gif

跳舞那也是不在话下。

这妖娆的舞姿,看来NeuMan心里也有一个舞魂~

84019e43dc068622a72fee396c4f4921.gif

有网友看完就表示:喔~简直是电影界未来的发展方向。

eeb7fb52e0852ea88170bd6bf8804b0c.png

目前,有关NeuMan的研究论文已被ECCV’22收录,并且已在GitHub上开源。

f62235fa993ab3890e3d4b12a96096f9.png

全新场景渲染

在介绍NeuMan的原理之前,让我们再来欣赏几个酷炫的例子~

如下图所示,左上角是输入的训练视频,左下角是新的背景,右边则是合成后小哥在新背景下跳跃的效果。

0597552b27341ac70dd44cfc0f27dd90.gif

不仅是跳跃这种常规操作,广播体操也完全没问题。

374b3688eda3e5497d1b93421edfe9d5.gif

更厉害的是,NeuMan还可以将上面例子中的两个人合成到一起。

2eaa2e938d48465b00f2e3b30221b4fe.gif

再加上一个人,立马变成魔性的广场舞视频。

cc123e719dd7c5cd7496f593f3d801d0.gif

这微笑的小表情,真的很难解释不是本人亲自跳的(手动狗头)

那么话说回来,这个神奇的NeuMan背后的原理是什么呢?

基于NeRF的新突破

事实上,自从伯克利和谷歌联合打造的NeRF(Neural Radiance Fields神经辐射场)横空出世,各种重建三维场景的研究层出不穷。

NeuMan原理也是基于此,简单来说,就是用单个视频训练一个人物NeRF模型和一个场景NeRF模型,然后再合成在一起生成新的场景。

0d120f16f89867b99499c87700977eac.png

首先,在训练场景NeRF模型时,我们先从输入的视频中提取相机姿态、稀疏场景模型和多视角-立体深度图。

对于原视频中被人体遮挡的部分,则使用Mask R-CNN进行图像实体分割,将人体掩模膨胀4倍,以确保人体被完全遮蔽。此时,就能做到仅在背景上训练场景NeRF模型。

至于人体NeRF模型训练,研究人员引入了一种端到端的SMPL优化(end-to-end SMPL optimization)和纠错神经网络(error-correction network)。

SMPL(Skinned Multi-Person Linear Model)是一种基于顶点的人体三维模型,能够精确地表示人体的不同形状和姿态。

如下图所示,使用端到端的SMPL优化的人体模型,能够更好地表现人体的典型体积。

fc30885f0f5b8138968f69bf7c2d5a86.png

纠错神经网络则是用来弥补SMPL模型无法表达的细节。值得一提的是,它只在训练过程中使用,在进行全新场景渲染时会被放弃,以免造成过度拟合。

接下来,在两个模型对齐的阶段,研究人员先使用COLMAP解决任意尺度下的对齐问题。然后通过假设人类始终与地面有至少一个接触点,来进一步估计该场景的比例。

850841e51d236207e503cebc74b39b89.png

最后,再应用SMPL网格和场景的点云叠加,就形成了新图像的渲染效果。

10f78556a48348b0bdd0dd2ca56c5b4b.png

最终成品显示,该场景NeRF模型方面模型能够有效地去除场景中的人类,并在有限的场景覆盖下生成高质量的新背景渲染图像。

807c1cc94921cef15aa7526d91c830ed.png

人物NeRF模型方面也能很好的捕捉人体的细节,包括袖子、衣领甚至衣服拉链,甚至在渲染新动作时,能执行难度极大的侧翻动作。

32e3dcc47d1d37bd09cc32bdc982c6da.png

值得一提的是,不同于现行的其他NeRF模型对训练视频要求很高,比如需要多个机位拍摄、曝光要保持不变、背景要干净等等,NeuMan的最大亮点是仅通过用户随意上传的单个视频就能达到同款效果。

3e162535be830b96ad43d03d8ad1713f.png

并且,在分别输入六组不同的视频后,数据显示,与此前方法相比,NeuMan的方法生成的视频渲染质量最佳。

5d0e52b3d0ec8a42210866de0ae47a49.png

不过,研究团队也承认,NeuMan的设计目前还存在一些缺陷。

例如,由于人在活动时手势的变化细微又多变,因此生成视频中对手部细节的把握还不是很准确。

另外,在NeRF模型渲染时,由于系统假设人类始终与地面有至少一个接触点,因此NeuMan不能适用于人与地面接触为零的视频,比如人做后空翻的视频。

要想解决这个问题,需要更智能的几何推理知识,这也是未来研究的一个发展方向。

研究团队

这项研究由苹果机器学习研究中心和英属哥伦比亚大学合作完成。

第一作者Wei Jiang,是英属哥伦比亚大学计算机科学专业的一名四年级博士生,目前在苹果机器学习研究中心实习。

主要研究方向是新视角合成、视觉定位和三维视觉。

5ef8c7c0bc4856d6b5efec458e538f6f.jpeg

他还是英属哥伦比亚大学计算机视觉实验室的一员,导师是Kwang Moo Yi 教授。

硕士毕业于波士顿大学计算机科学专业,本科毕业于浙江工业大学软件工程专业。

参考链接:
[1]https://twitter.com/anuragranj/status/1559606408789708800
[2]https://arxiv.org/abs/2203.12575
[3]https://machinelearning.apple.com/research/neural-human-radiance-field
[4]https://github.com/apple/ml-neuman
[5]https://jiangwei221.github.io/

这篇关于苹果把NeRF玩出新高度:只需单个10s视频,就能重构人物动作和场景的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/QbitAI/article/details/126457724
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/839034

相关文章

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

MyBatis-Plus 中 nested() 与 and() 方法详解(最佳实践场景)

《MyBatis-Plus中nested()与and()方法详解(最佳实践场景)》在MyBatis-Plus的条件构造器中,nested()和and()都是用于构建复杂查询条件的关键方法,但... 目录MyBATis-Plus 中nested()与and()方法详解一、核心区别对比二、方法详解1.and()

ModelMapper基本使用和常见场景示例详解

《ModelMapper基本使用和常见场景示例详解》ModelMapper是Java对象映射库,支持自动映射、自定义规则、集合转换及高级配置(如匹配策略、转换器),可集成SpringBoot,减少样板... 目录1. 添加依赖2. 基本用法示例:简单对象映射3. 自定义映射规则4. 集合映射5. 高级配置匹

python中Hash使用场景分析

《python中Hash使用场景分析》Python的hash()函数用于获取对象哈希值,常用于字典和集合,不可变类型可哈希,可变类型不可,常见算法包括除法、乘法、平方取中和随机数哈希,各有优缺点,需根... 目录python中的 Hash除法哈希算法乘法哈希算法平方取中法随机数哈希算法小结在Python中,

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

Python主动抛出异常的各种用法和场景分析

《Python主动抛出异常的各种用法和场景分析》在Python中,我们不仅可以捕获和处理异常,还可以主动抛出异常,也就是以类的方式自定义错误的类型和提示信息,这在编程中非常有用,下面我将详细解释主动抛... 目录一、为什么要主动抛出异常?二、基本语法:raise关键字基本示例三、raise的多种用法1. 抛

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解

Java 枚举的基本使用方法及实际使用场景

《Java枚举的基本使用方法及实际使用场景》枚举是Java中一种特殊的类,用于定义一组固定的常量,枚举类型提供了更好的类型安全性和可读性,适用于需要定义一组有限且固定的值的场景,本文给大家介绍Jav... 目录一、什么是枚举?二、枚举的基本使用方法定义枚举三、实际使用场景代替常量状态机四、更多用法1.实现接