苹果把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视频,就能重构人物动作和场景的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/839034

相关文章

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Spring Security 前后端分离场景下的会话并发管理

《SpringSecurity前后端分离场景下的会话并发管理》本文介绍了在前后端分离架构下实现SpringSecurity会话并发管理的问题,传统Web开发中只需简单配置sessionManage... 目录背景分析传统 web 开发中的 sessionManagement 入口ConcurrentSess

99%的人都选错了! 路由器WiFi双频合一还是分开好的专业解析与适用场景探讨

《99%的人都选错了!路由器WiFi双频合一还是分开好的专业解析与适用场景探讨》关于双频路由器的“双频合一”与“分开使用”两种模式,用户往往存在诸多疑问,本文将从多个维度深入探讨这两种模式的优缺点,... 在如今“没有WiFi就等于与世隔绝”的时代,越来越多家庭、办公室都开始配置双频无线路由器。但你有没有注

深入解析Java NIO在高并发场景下的性能优化实践指南

《深入解析JavaNIO在高并发场景下的性能优化实践指南》随着互联网业务不断演进,对高并发、低延时网络服务的需求日益增长,本文将深入解析JavaNIO在高并发场景下的性能优化方法,希望对大家有所帮助... 目录简介一、技术背景与应用场景二、核心原理深入分析2.1 Selector多路复用2.2 Buffer

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

Java Stream流之GroupBy的用法及应用场景

《JavaStream流之GroupBy的用法及应用场景》本教程将详细介绍如何在Java中使用Stream流的groupby方法,包括基本用法和一些常见的实际应用场景,感兴趣的朋友一起看看吧... 目录Java Stream流之GroupBy的用法1. 前言2. 基础概念什么是 GroupBy?Stream

java如何实现高并发场景下三级缓存的数据一致性

《java如何实现高并发场景下三级缓存的数据一致性》这篇文章主要为大家详细介绍了java如何实现高并发场景下三级缓存的数据一致性,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 下面代码是一个使用Java和Redisson实现的三级缓存服务,主要功能包括:1.缓存结构:本地缓存:使

C++中detach的作用、使用场景及注意事项

《C++中detach的作用、使用场景及注意事项》关于C++中的detach,它主要涉及多线程编程中的线程管理,理解detach的作用、使用场景以及注意事项,对于写出高效、安全的多线程程序至关重要,下... 目录一、什么是join()?它的作用是什么?类比一下:二、join()的作用总结三、join()怎么

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

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 命令的详细解析,结合实际应