MonoHuman: Animatable Human Neural Field from Monocular Video 精读

news2024/11/13 21:50:48

一、共享双向变形模块

1. 模块的核心思想

共享双向变形模块的核心目标是解决从单目视频中生成不同姿态下的3D人体形状问题。因为视频中的人物可能处于各种动态姿态下,模型需要能够将这些不同姿态的几何形状进行变形处理,以适应标准的姿态表示并生成新的姿态。

  • 双向性:该模块支持前向和反向的几何变形,即:

    • 前向变形:将标准姿态(如T-pose)变形为特定的目标姿态。
    • 反向变形:将目标姿态的几何形状反向变形成标准姿态,以便在生成过程中保持姿态之间的连贯性。
  • 共享参数:双向变形模块共享同一套变形参数,这意味着前向和反向变形使用相同的学习机制,从而简化了网络的结构并提高了学习的效率。

2. 输入和输出

  • 输入

    • 标准姿态的几何信息:模型的初始状态,比如T-pose形状。
    • 目标姿态的几何信息:需要转换的目标姿态(例如,某个动作中的姿态)。
    • 姿态变换参数:这通常是从视频中提取的姿态关节信息,用于指导变形过程。
  • 输出

    • 变形后的目标姿态:前向变形后的结果,即标准姿态变形成目标姿态。
    • 变形后的标准姿态:反向变形后的结果,即将目标姿态重新变形成标准姿态。

3. 前向变形与反向变形的作用

  • 前向变形:该过程通过输入的标准姿态和目标姿态的姿态参数,生成一个符合目标姿态的形状。网络会学习如何通过标准姿态进行形状变形,从而使人体模型能够在各种姿态下保持自然形态。

  • 反向变形:反向变形是将变形后的目标姿态恢复为标准姿态。这个步骤确保了即使人体在不同姿态下变化,模型依然可以回到一致的标准形状,这对于保持模型的姿态一致性和生成高质量的渲染图像非常重要。

4. 学习机制

共享双向变形模块通过神经网络进行端到端学习。训练过程中,网络通过对比标准姿态和目标姿态的几何结构,学习如何进行前向和反向的变形。其主要学习机制包括:

  • 监督学习:网络利用姿态变化的监督信号来最小化目标姿态和标准姿态之间的几何差异,确保生成的姿态变换是准确的。

  • 损失函数:通常使用的损失函数可能包括姿态一致性损失和几何形状重建损失,确保前向和反向变形在保持几何一致性的同时,生成的形状具有自然的外观。

5. 模块在渲染中的作用

共享双向变形模块的输出为渲染模块提供了准确的姿态几何信息。具体来说:

  • 前向变形后的目标姿态几何信息会被输入到渲染模块,用于生成目标姿态下的高质量渲染。
  • 反向变形后的标准姿态信息可以用于进一步的优化,确保不同姿态之间的转换保持一致。

6. 简单易懂的例子

假设你正在制作一个动画人物模型,初始状态是站立的T-pose姿态(标准姿态)。通过共享双向变形模块,你可以实现以下操作:

  1. 前向变形:你输入T-pose姿态的小人和一个新的姿态(例如,弯腰),模块会学习如何将T-pose变形成弯腰姿态。
  2. 反向变形:如果你想将弯腰的小人恢复到T-pose,反向变形模块会利用共享的学习参数进行姿态的反向变形。

通过这种双向变形,模型能够灵活处理不同姿态,并且保持姿态转换时的几何一致性。

总结

共享双向变形模块在《MonoHuman》系统中的作用是核心的,它通过双向的姿态变形确保人体模型能够在标准姿态和目标姿态之间进行自然的过渡。这一模块的设计大大提升了姿态重建的准确性,同时通过共享参数的方式简化了学习过程,使得网络能够更高效地生成自然且一致的3D人体模型。

二、正向通信搜索模块

1. 正向通信搜索模块的作用

正向通信搜索模块的主要作用是从输入的单目视频中提取与人体姿态相关的关键信息,并将这些信息传递到后续的神经场生成模块中。该模块的主要目标是解决单目视频中获取人体3D几何形状和姿态变化的难题。

具体作用包括:

  • 姿态估计:从视频中提取人物在不同帧中的姿态信息,主要是关节位置信息和骨架结构。
  • 几何特征提取:提取视频中每一帧的几何特征信息(如轮廓、深度等),为后续的3D形状恢复和姿态变形提供支持。
  • 数据关联:将不同帧的姿态信息和几何特征信息进行关联,确保在动态姿态变化下,模型仍能保持一致性和连贯性。

2. 输入与输出

  • 输入

    • 单目视频帧:来自输入视频的序列帧,包含了人物的不同姿态和视角。
    • 初始的几何信息:通常是标准姿态(如T-pose)的初始人体模型信息,用于后续的姿态变形。
  • 输出

    • 姿态关节信息:提取出人体骨架的姿态信息(如3D关节位置、骨架角度等),这些信息被用于指导姿态变形。
    • 几何特征信息:提取出的几何特征,用于生成最终的3D形状和纹理。
    • 姿态变形参数:这些参数会传递给后续的双向变形模块,指导模型如何从标准姿态变形到目标姿态。

3. 正向通信搜索的工作机制

该模块的核心功能是通过深度学习技术(通常是卷积神经网络或变形网络)从视频帧中提取和关联关键几何和姿态信息。具体的工作流程可以分为以下几个步骤:

  1. 姿态估计

    • 首先,正向通信搜索模块会通过预训练的姿态估计网络(如OpenPose或SMPL等)从每一帧中提取人物的姿态关节信息。
    • 这些关节信息构成了人体的骨架,用于后续的姿态变形和渲染。
  2. 几何特征提取

    • 在提取出姿态信息的同时,正向通信搜索模块会通过卷积网络从视频帧中提取几何特征(如深度、轮廓、表面法线等)。
    • 这些几何特征被编码为特征向量,用于后续的人体形状重建。
  3. 数据关联与融合

    • 正向通信搜索模块不仅从单个帧中提取信息,还通过时序模型(如RNN或Transformer等)在不同帧之间进行特征关联。这样可以确保在姿态变化的过程中,姿态信息和几何特征能够连贯一致。
    • 这种关联确保了在动画生成过程中,不同姿态和视角下的人体模型能够保持形状一致性和自然过渡。
  4. 姿态变形指导

    • 正向通信搜索模块输出的姿态信息和几何特征信息会被用于指导后续的双向变形模块。这些信息确保模型能够从标准姿态变形成目标姿态,并保持高质量的渲染效果。

4. 正向通信搜索模块的学习机制

正向通信搜索模块的学习过程是通过大量的标注数据进行监督学习。具体来说,使用包含姿态标注、几何信息(如深度、骨架)的训练数据来训练该模块,使其能够从输入的视频帧中有效提取人体姿态和几何特征。

  • 损失函数:通常,模块会使用姿态估计损失、几何重建损失、特征匹配损失等来监督学习过程。
  • 预训练模型:为了提高姿态估计的准确性,正向通信搜索模块通常依赖于预训练的姿态估计模型(如SMPL或其他人体姿态估计网络)。

5. 正向通信搜索模块在渲染中的作用

正向通信搜索模块提取的姿态信息和几何特征为后续的渲染提供了基础数据。这些信息确保渲染模块能够在目标姿态下生成准确、逼真的3D模型。

总结

正向通信搜索模块在《MonoHuman》系统中的作用是从输入的单目视频中高效地提取人体姿态和几何特征信息,并将这些信息传递给后续的双向变形模块和渲染模块。它通过姿态估计、几何特征提取和数据关联,确保在不同姿态和视角下生成的一致、高质量的3D人体模型。

三、体积渲染和网络训练

1. 体积渲染(Volumetric Rendering)

体积渲染是NeRF方法中的核心部分,用于生成具有深度和光照效果的3D图像。在《MonoHuman》系统中,体积渲染的主要作用是将人体在不同姿态和视角下的3D形状生成为逼真的2D图像。

工作原理

体积渲染的核心思想是通过模拟光线在3D空间中的传输过程,生成2D图像。以下是体积渲染的主要步骤:

  1. 采样光线(Ray Sampling)

    • 在渲染过程中,从观察者的相机位置发出光线,并沿着光线方向在3D空间中进行采样。
    • 每条光线会穿过3D空间中的多个体素(Volumetric Voxels),这些体素代表了3D空间中不同位置的体积密度和颜色。
  2. 累积颜色和密度(Color and Density Accumulation)

    • 对于每个采样点,模型会根据其坐标预测该点的颜色(RGB值)和密度(用于表示光线在该点的衰减程度)。
    • 系统会对沿着光线的所有采样点的颜色和密度进行累积,生成最终的2D像素值。
  3. 体积积分(Volumetric Integration)

    • 累积过程使用了体积渲染方程,通过对光线在3D空间中的颜色和密度进行加权求和,最终得到每个像素的颜色。公式如下: 

其中,C(r)是光线的最终颜色,σ(t)是体积密度,c(t) 是颜色,T(t) 是光线在该点处的透射率,表示光线到达该点时的累积衰减。   

  4. 深度估计(Depth Estimation)

        体积渲染还可以估计每条光线的深度,通过计算体积密度的累积值来确定物体的前景和背景,从而实现逼真的3D效果。

体积渲染的作用
  • 视角独立性:通过体积渲染,可以在任何视角下生成同一物体的图像,这在生成多视角的3D人体模型时非常重要。
  • 逼真的光照和反射效果:体积渲染能够模拟光线与物体表面的相互作用,生成具有逼真光照效果的图像,确保人体在不同姿态下的渲染质量。

2. 网络训练(Network Training)

网络训练部分通过端到端的监督学习,优化网络参数,使其能够在输入单目视频帧的情况下生成准确的3D人体模型和姿态变换。整个训练过程包括以下几个关键要素:

2.1. 网络结构

《MonoHuman》系统基于NeRF框架,使用多层感知机(MLP)网络来表示3D空间中的颜色和密度场。具体结构如下:

  • 输入
    • 3D坐标 (x,y,z)和光线方向 (dx​,dy​,dz​)。
    • 人体的姿态编码(通过姿态估计模块提取的姿态信息)。
  • 输出
    • 颜色值 (r,g,b) 和 体积密度 σ。

通过输入3D空间中的坐标和光线方向,网络会输出对应点的颜色和密度,这些信息用于体积渲染过程。

2.2. 训练数据

网络训练时使用单目视频帧作为输入,目标是重建每一帧中的人体形状和姿态。为了训练网络,系统使用了以下几种数据:

  • 图像数据:从单目视频中提取的帧图像。
  • 姿态数据:通过预训练的姿态估计网络(如SMPL模型)提取的关节位置和人体骨架信息。
  • 相机参数:每一帧的相机内参和外参,用于指导光线采样的方向。
2.3. 损失函数(Loss Function)

为了训练网络,系统使用了多种损失函数来指导优化过程:

  • 重建损失(Reconstruction Loss)

    • 主要用于度量生成图像与真实图像之间的差异,确保渲染结果与输入视频帧保持一致。通常使用L2损失或L1损失来计算像素级别的差异。
  • 姿态一致性损失(Pose Consistency Loss)

    • 用于确保生成的人体姿态与姿态估计模块提取的关节位置一致,从而保证模型能够准确生成不同姿态下的人体形状。
  • 几何约束损失(Geometric Consistency Loss)

    • 用于保证模型生成的3D形状在不同视角下保持一致,避免形状变得不自然或不稳定。
2.4. 优化过程

网络的训练是通过梯度下降法(如Adam优化器)来最小化损失函数。随着训练的进行,网络不断调整其权重,使其能够更好地从单目视频中生成高质量的3D人体模型和动画。

3. 体积渲染与网络训练的关系

  • 体积渲染的输出作为监督信号:体积渲染模块生成的2D图像会与输入视频帧进行对比,网络通过损失函数来计算生成图像与真实图像之间的差异。这一差异作为监督信号,指导网络调整其参数。

  • 体积渲染引导网络学习:体积渲染过程涉及对3D空间中光线的采样和积累,网络通过学习如何从3D坐标生成正确的颜色和密度场,从而生成逼真的2D图像。这个过程直接影响网络训练的效果。

总结

  • 体积渲染:通过采样光线、计算颜色和密度,模拟光线在3D空间中的传播,生成逼真的2D图像。
  • 网络训练:通过多种损失函数优化网络参数,使其能够从单目视频中生成准确的3D人体模型。

两者的结合使《MonoHuman》系统能够从单目视频生成逼真的多视角3D人体动画。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2115364.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

# VMware 共享文件

VMware tools快速安装 VMware 提供了 open-vm-tools,这是 VMware 官方推荐的开源工具包,通常不需要手动安装 VMware Tools,因为大多数 Linux 发行版(包括 Ubuntu、CentOS 等)都包含了 open-vm-tools,并且已…

FreeRTOS内部机制学习02(消息队列深度学习)

文章目录 队列的核心以及好处队列的核心队列的好处 深入源码了解队列机制深入队列读取操作深入队列写入操作读写队列出超时时间 信号量深入信号量获取以及释放操作 互斥量互斥量和信号量的不同深入源码看优先级继承是怎么操作到的 队列的核心以及好处 队列的核心 队列的核心就…

如何打造高效办公楼物业管理系统?Java SpringBoot+Vue架构详解,实现智能化管理,提升工作效率

🍊作者:计算机毕设匠心工作室 🍊简介:毕业后就一直专业从事计算机软件程序开发,至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长:按照需求定制化开发项目…

GraphPad Prism 10 for Mac/Win:高效统计分析与精美绘图的科学利器

GraphPad Prism 10 是一款专为科研工作者设计的强大统计分析与绘图软件,无论是Mac还是Windows用户,都能享受到其带来的便捷与高效。该软件广泛应用于生物医学研究、实验设计和数据分析领域,以其直观的操作界面、丰富的统计方法和多样化的图表…

Redis中使用布隆过滤器解决缓存穿透问题

一、缓存穿透(失效)问题 缓存穿透是指查询一个一定不存在的数据,由于缓存中没有命中,会去数据库中查询,而数据库中也没有该数据,并且每次查询都不会命中缓存,从而每次请求都直接打到了数据库上,这会给数据…

认知杂谈53

今天分享 有人说的一段争议性的话 I I 1.自助者天助 首先呢,咱得好好琢磨琢磨“自助者天助”这句话。这话说起来好像有点高深莫测的感觉,其实啊,道理特别简单。 就是说要是你自己都不乐意努力,那老天爷也不会平白无故地来帮你…

[环境配置]ubuntu20.04安装后wifi有图标但是搜不到热点解决方法

最近刚入手一台主机,暗影精灵8plus电竞主机,安装ubuntu后wifi怎么都搜不到热点,前后重装系统6次才算解决问题。这个心酸历程只有搞技术人才明白。下面介绍我解决过程。 首先主机到手后是个windows10系统,我用无线网连接了一下&am…

【每日刷题】Day113

【每日刷题】Day113 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 91. 解码方法 - 力扣(LeetCode) 2. LCR 098. 不同路径 - 力扣(…

服务器流量监控工具vnStat的简单使用以及关于Linux的软中断信号(signal)的一点内容

一、服务器流量监控工具vnStat的简单使用 vnStat是为Linux和BSD设计的基于控制台的网络流量监控工具,通过它可以非常方便在命令行查看流量统计情况。它可以保留某个或多个所选择的网络接口的网络流量日志。为了生成日志,vnStat使用内核提供的信息。换句话…

2024年必看的4款录屏新星,谁才是你的菜?

嘿,小伙伴们,你们的职场好帮手来啦。今天我们要说说办公室里经常被忽略但实际上超有用的东西——录屏软件。现在大家都用数字化工具办公了,不管是做教学视频、记录会议,还是直播玩游戏,录屏软件都是必不可少的。可是市…

FRP内网穿透使用常见问题

本文解答一些关于FRP内网穿透的常见问题 FRP简介 FRP是一款开源的高性能反向代理应用,支持多种协议的内网穿透。它允许用户在外网环境中访问位于内网中的服务器和服务,如Web服务器、MySQL数据库、以及其他基于TCP/UDP的应用程序。FRP以其灵活的配置选项…

C++实现俄罗斯方块(Windows控制台版)

C实现俄罗斯方块(Windows控制台版) 在油管上看到一个使用C控制台编写的俄罗斯方块小游戏,源代码200多行,B站上也有相关的讲解视频,非常不错,值得学习。 B站讲解视频地址为:【百万好评】国外技术…

Unet改进27:添加DGCST|Vision Transformer与DGSM模块集成在一起的创新结构

本文内容:在不同位置添加DGCST 目录 论文简介 1.步骤一 2.步骤二 3.步骤三 4.步骤四 论文简介 随着移动计算技术的快速发展,在移动设备上部署高效的目标检测算法成为计算机视觉的一个关键研究领域。本研究的重点是优化YOLOv7算法,以提高其在移动平台上的运行效率和速度…

【Linux】传输层协议——UDP

零、传输层的作用是负责数据能够从发送端传输到接收端 一、再来认识一下端口号 端口号(Port)标识了一个主机进行通信的不同的应用程序。在TCP/IP协议中,用“源IP”,“源端口号”,“目的IP”,“目的端口号”…

Request Response

1 前言 1.1 内容概要 理解Request、Response和HTTP报文之间的关系掌握通过Request能够获得的信息 请求URL、URI、请求协议请求头、客户机和主机请求参数 掌握通过Response能够完成的设置 响应中文乱码问题响应(Json)字符串、图片(文件&a…

【网络】UDP协议的简单使用

目录 服务器 客户端 测试 UDP是基于socket进行网络通信的,那我们这篇博客就来介绍一下基于UDP通信的基本流程,先让服务端和客户端进行简单的跨网络通信。 服务器 首先我们需要创建UDP套接字,用到的接口是 man socket 如果要使用UDP通信&am…

【Python知识宝库】面向对象编程:Python类的深度剖析

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、类的定义二、类的属性1. 类属性2. 实例属性 三、类的方法1. 实例方法2. 类方法 四、继承五、总结 前言 面向…

【C++ Primer Plus习题】12.3

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream> #include "stock20.h&quo…

嵌入式OpenHarmony源码基本原理详解

大家好,今天主要给大家分享一下,如何分析与使用OpenHarmony源码,欢迎交流学习。 第一:OpenHarmony源码简介 在3.0版本中,Lite系统(即轻量系统和小型系统)、标准系统各有一套独立的构建入口和上层的构建流程,但在3.2版本中,两者开始互相借鉴,取长补短并实现了融合统一;…

【环境领域EI稳定 I 院士主讲】第九届能源与环境研究进展国际学术会议(ICAEER 2024)

ICAEER 2024会议投稿经过2-3位组委会专家严格审核之后&#xff0c;符合Springer ESE征稿要求的论文将由斯普林格&#xff08;Springer-Nature&#xff09;旗下的 Environmental Science and Engineering (ISSN: 1863-5520) 出版&#xff0c;出版后提交至EI Compendex&#xff…