news 2026/6/15 21:13:26

EVA Human论文复现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
EVA Human论文复现

本文主要聚焦于EVA GitHub项目论文框架的初步理解以及在Linux的环境配置操作,部分内容可能存在错误,望提出本文中存在的问题并作出指正以及对内容进行补充,谢谢

一、论文框架

基于其整体流程以及与3DGS原理核心框架进行对比理解

1.1 输入与对齐 (Monocular RGB & SMPLX Alignment)

流程从一段单目(普通相机)视频开始:SMPLX Alignment:这是复现的工作(EVA/SMPLer-X)发挥作用的地方。系统首先通过视频提取出每一帧人体的 3D 骨架参数(提取的 .pkl 特征)。SMPLX Template:这就是那个标准的“数字人模板”,它为后续的高斯泼溅提供了一个基础形状(Prior)。

1.2 高斯头像建模 (Gaussian Avatar Modeling)

这是图中虚线框内的核心部分,分为三个关键步骤:

A. 标准空间与初始化 (Canonical Space & Init)

Canonical Space:这是一个标准的“T-Pose”空间。系统在这里初始化 Gaussians(高斯球)。属性定义:每个高斯球都有位置 、旋转 、缩放 、不透明度和颜色等参数。Init (初始化):这些高斯球不是乱撒的,而是绑定在 SMPLX 模板的表面。这解决了 3DGS 难以处理大幅度动态变形的痛点。

B. 可学习的 LBS 变形 (Learnable LBS)

LBS (Linear Blend Skinning):这是一种经典的动画技术,让皮肤随骨骼摆动。Learnable (可学习):EVA 的改进在于,它让这个变形过程变得可优化。系统能自动学习到衣服褶皱、肌肉拉伸等 SMPL-X 模板无法表达的细节,从而让动作更自然。

C. 自适应密度控制 (Context-aware Adaptive Density Control)

这是对 3DGS 核心算法的升级。它会根据人体的语义上下文(Context)来增加或删减高斯球。例如,在手指、五官等细节复杂的区域增加球的数量,在平整的躯干部分减少球的数量。

1.3 渲染与损失函数 (Rendered Image & Loss)

Rendered Image vs. GT Image:系统将生成的虚拟人渲染出来,并与视频原图(GT)进行像素级对比。Confidence-aware Loss:这是一种“聪明”的损失函数。它会识别哪些区域是遮挡的,哪些是模糊的,并给这些区域分配不同的权重(Confidence),防止错误的数据干扰模型学习。

1.4 最终目标:驱动与动画 (Animate Avatar)

通过这个循环,系统最终得到了一个既有 SMPL-X 的骨架约束,又有 3DGS 的照片级质感的数字人模型。可以输入一段新的动作序列(比如跳舞的参数)。模型会通过学习好的 Learnable LBS 将高斯球变换到对应的位置。最终生成一个可以从任意角度观看、动作流畅的 可驱动虚拟人。

2.1 初始化的来源:从 SfM 转向 SMPLX


在传统的 3DGS 中,通常通过 SfM(运动恢复结构)产生稀疏点云来撒下初始高斯球。但在 EVA 这个针对人体建模的框架中,并非使用 SfM 点云:架构图明确显示,初始化的输入源是SMPLX Template(SMPLX 模板)。

模板初始化(Init):图中左侧有一条标为 "Init" 的箭头,直接从 SMPLX Template 指向 Gaussians。这意味着算法是直接在 SMPLX 模型的顶点或其包络空间内布置初始的三维高斯球。

2.2 初始化后的参数定义


一旦在 SMPLX 模板上撒下初始点,每个高斯球会获得以下关键参数:

p:中心位置 (Position)

R:旋转 (Rotation)

S:缩放 (Scaling)

u,c,α:分别对应颜色/球谐系数以及不透明度 (Opacity)

2.3 为什么 EVA 选择 SMPLX 而非 SfM?


人体先验 (Prior):单目视频(Monocular RGB Video)很难通过 SfM 获得高质量的动态人体点云。使用 SMPLX 这种参数化人体模型作为初始点,可以提供极强的几何约束。

驱动需求:由于项目目标是 "Animate Avatar"(动画化化身),从 SMPLX 模板开始初始化,可以更方便地将高斯球与 Learnable LBS(可学习的线性混合蒙皮) 绑定,从而实现后续的动作驱动。

2.4 动态调整过程


Context-aware Adaptive Density Control(上下文感知自适应密度控制) 对应了“撒下高斯球”后的调整阶段。它会根据 Confidence-aware Loss(置信度感知损失) 的反馈,动态地增加(分裂)或减少(修剪)高斯球的密度,以填充 SMPLX 模板无法完全覆盖的细节(如衣服褶皱或长发)。
第二阶段:渲染与投影 (Projection & Rasterization)图中从 Canonical Space 到 Rendered Image 的过程就是渲染与投影阶段。

Learnable LBS(可学习的线性混合蒙皮):这是 EVA 投影过程中的关键。它负责将存储在“标准空间(Canonical Space)”中的高斯球,根据当前帧的动作姿态,投影(变形)到最终的观察空间中。

Rendered Image(生成图像):图中右侧的方框明确标注了渲染产出的结果。虽然图中没有直接写出“Rasterizer”字样,但在 3DGS 架构中,这个过程是由可微切片光栅化完成的,它是从三维高斯参数转化为这张 Rendered Image 的技术实现。

第三阶段:对比与进化 (Gradient Flow & Density Control)下方的闭环回路完美展示了“对比-反馈-进化”的过程。对比与误差计算:图中右下角的 Confidence-aware Loss(置信度感知损失) 模块,负责将 Rendered Image(渲染图)与 GT Image(真实照片)进行对比。

二、环境配置

1.准备阶段

请先在OneDrive将EVA必要的文件ckpt.tar下载下来,总计约25GB,随后解压至EVA_Official项目的文件夹中。

在官方提供的真实世界视频素材将该001.zip下载下来

2.主要环境

首先在环境中安装好CUDA 12.1(供eva环境使用)以及CUDA 11.6(供smpler_x环境使用),例如语句

wget https://developer.download.nvidia.com/compute/cuda/11.6.0/local_installers/cuda_11.6.0_510.39.01_linux.run wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_530.30.02_linux.run

随后执行安装

sudo sh cuda_11.6.0_510.39.01_linux.run sudo sh cuda_12.1.0_530.30.02_linux.run

现在我们来创建eva环境

conda create -n eva -y python=3.10 conda activate eva

然后输入下行语句

vim ~/.bashrc

打开后,将最后几行对应部分改为下列的形式,目的是让该环境指向对应的cuda12.1版本,创建smpler_x环境时也需要相同操作让其指向cuda11.6版本

export PATH=/cuda-12.1/bin:\$PATH export LD_LIBRARY_PATH=/cuda-12.1/lib64:\$LD_LIBRARY_PATH export CUDA_HOME=/cuda-12.1

在bashrc中保存上述改动并退出后刷新一下配置

source ~/.bashrc

随即

bash scripts/env_install.sh

在执行上述命令时,如若遇见了无法下载到human_body_prior的情况,建议到此链接自己下载下来然后解压并装到EVA_Official目录下

cd /EVA_Official/ unzip human_body_prior-cvpr19.zip cd human_body_prior-cvpr19 # 关键:因为似乎是版本不兼容,所以使用--no-deps绕过对 torch 1.1.0的版本检查 pip install -e . --no-deps

如果遇到detectron2也无法下载的情况,可以参考上面的操作,detectron2下载链接在这

如果还遇到了simple-knn等无法正确加装的情况,大概是torch冲突的原因,可以执行类似以下语句来解决

# --no-build-isolation 是关键,它会强迫 pip 使用你当前环境中的 torch pip install -e . --no-build-isolation cd ~/EVA_Official/third_party/simple-knn pip install -e . --no-build-isolation cd ~/EVA_Official/third_party/torch-mesh-isect pip install -e . --no-build-isolation cd ~/EVA_Official/third_party/neural_renderer pip install -e . --no-build-isolation

如果没有遇见上述的几个问题,接下来执行

cd /EVA_Official/ bash scripts/bug_fix_eva.sh

现在最好是执行一下以下语句检查一下cuda环境是否对应

echo $CUDA_HOME nvcc --version

是显示12.1或类似版本就是正确的,是不对应的话建议重新执行vim~/.bashrc语句修改

接下来退出eva环境(已基本配好了),去配smpler_x环境

conda deactivate conda create -n smpler_x python=3.8 -y conda activate smpler_x

然后跟上文eva环境指向cuda12.1版本类似,操作一遍使smpler_x环境指向cuda11.6版本,

完成这步后就

pip install torch==1.12.0+cu116 torchvision==0.13.0+cu116 --extra-index-url https://download.pytorch.org/whl/cu116 pip install mmcv-full==1.7.1 -f https://download.openmmlab.com/mmcv/dist/cu116/torch1.12.0/index.html pip install -r preprocess/SMPLer-X/requirements.txt

此时为了保险,你也可以执行以下语句查看当前smpler_x环境的配置

conda activate smpler_x echo $CUDA_HOME nvcc --version python -c "import torch; print(f'Torch: {torch.__version__}'); print(f'CUDA: {torch.version.cuda}'); print(f'GPU Available: {torch.cuda.is_available()}')"

查看版本对齐后,一步一步来

cd preprocess/SMPLer-X/main/transformer_utils pip install -v -e .
cd ../../../../ pip install setuptools==69.5.1 yapf==0.40.1 numpy==1.23.5
bash scripts/bug_fix.sh

现在环境已经配置基本齐全了

然后回到eva环境以及EVA_Official文件目录下,执行

bash Prepare_ckpt.sh

通过该语句创建好了/EVA_Official/CKPT_FOLDER

后将我们最初准备阶段下载的001.zip解压到该目录下

unzip 001.zip -d /home/new_user2/EVA_Official/CKPT_FOLDER

我将该001改名为了010,目录呈现的效果如下

就可以开始跑了

建议按顺序一条一条跑通/EVA_Official/Full_running_command.sh里的语句,例如

ROOT_PATH=/EVA_Official/CKPT_FOLDER/010 bash -c "source scripts/config.sh && bash scripts/S1_dwpose_extract.sh"

到了最后一步时,如遇到显存问题而跑不动,输入

vim scripts/F1_run_avatar.sh

将缩放比率--image_scaling 1.0换成0.5,保存并退出就可以跑动了

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 16:22:03

基于调频能力裕度的风电系统频率调节控制策略研究

1. 基于调频能力裕度的风电系统频率调节控制策略研究 2. 论文的主要内容概括 本文针对高比例可再生能源并网导致电力系统频率稳定性下降的问题,从风电机组(WTG)和多风电场站集群(Multi-Wind Farms)两个维度,围绕风电系统一次频率调节控制策略展开研究。论文首先建立了含…

作者头像 李华
网站建设 2026/6/15 12:53:59

多模融合 一体替代:金仓数据库 KingbaseES 重构企业级统一数据基座

针对企业数字化转型中“一事一库”引发的技术栈复杂、数据孤岛、迁移成本高等痛点,金仓数据库(KingbaseES)提出“一体替代”解决方案。该方案基于多模融合内核架构,实现对Oracle、MySQL、SQL Server等主流数据库的平滑替代&#x…

作者头像 李华
网站建设 2026/6/15 18:46:40

Sora Video2深度解析:AI视频创作的效率革命与生态进化

当OpenAI在2026年初正式推出Sora Video2(以下简称Sora 2),这款被定义为“旗舰级视频音频生成模型”的工具,迅速在内容创作、企业营销等多个领域掀起波澜。相较于2024年初代Sora的“破冰试水”,Sora 2以物理真实感的跃升…

作者头像 李华
网站建设 2026/6/15 15:24:08

青木科技的GEO业务如何?“青木青灵”把增长做成可验证的系统能力

如果把 GEO 理解成“让 AI 更容易提到品牌”,那它只是曝光层面的优化;但在真实生意里,品牌更在意的是:用户问完之后,会不会更愿意点进来、下单、复购。因此,当有人在 AI 平台提问“青木科技的geo业务如何”…

作者头像 李华
网站建设 2026/6/15 12:39:08

90%的老板用人翻车,问题究竟出在哪一步?

问:为什么大多数企业招聘效果不佳,用人频频"翻车"?核心痛点是什么?答:深度调研显示,90%的企业用人问题根源在于缺乏系统化的人才甄别工具,导致招聘决策过度依赖主观经验而非科学数据。…

作者头像 李华
网站建设 2026/6/15 15:33:40

AOP动态代理与静态织入区别详解,哪种方式更适合你的项目?

在软件开发中,AOP(面向切面编程)是解决横切关注点的重要技术。其中动态代理和静态织入是实现AOP的两种主要方式。作为长期应用这两种技术的架构师,我认为理解它们的区别和适用场景对设计健壮的系统至关重要。 AOP动态代理和静态织…

作者头像 李华