news 2026/5/2 8:56:48

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/4/30 22:50:19

基于微信小程序的在线预约挂号系统(源码+lw+部署文档+讲解等)

课题介绍 本课题聚焦基于微信小程序的在线预约挂号系统的设计与实现,后端依托SpringBoot架构提供稳定业务支撑,针对性解决传统医疗就诊中挂号排队耗时久、号源管控混乱、医生排班不透明、就诊提醒缺失、跨院病历不通等核心痛点,构建集在线挂号…

作者头像 李华
网站建设 2026/4/28 10:32:32

复现论文基于标题状态空间建模的电网跟随与电网形成变换器稳定性分析

1. 基于标题状态空间建模的电网跟随与电网形成变换器稳定性分析 2. 论文主要内容概括 本文通过状态空间建模方法,对电网跟随(GFL)和电网形成(GFM)电压源变换器的稳定性进行了全面分析和比较。论文建立了1.5kW并网变换器的详细模型,采用特征值轨迹法分析不同短路比(SCR)下的…

作者头像 李华
网站建设 2026/5/1 19:04:40

流域径流模拟与模型优化

以下为一个完整的MATLAB实现方案,用于使用XGBoost和LightGBM进行流域径流模拟。这个方案包含数据预处理、模型训练、评估和可视化等完整流程。 1. 项目结构设计 %% 主程序:径流模拟主程序 clear; clc; close all; addpath(genpath(./utils)); % 添加工具函数路径%% 1. 设置…

作者头像 李华
网站建设 2026/5/1 4:09:25

论文复现:KIVI: 一种无需调优的2位KV缓存量化算法

论文复现:KIVI: 一种无需调优的2位KV缓存量化算法 1. 论文标题 KIVI:一种无需调优的2位KV缓存量化算法,用于在LLM推理中实现更大的批处理大小 2. 论文内容: 本论文针对大语言模型(LLM)推理中KV缓存成为内存和速度瓶颈的问题,提出了一种名为KIVI的2位KV缓存量化方法。研…

作者头像 李华
网站建设 2026/4/28 11:43:51

城市生命线之供排水与内涝积水监测设备技术应用分析

一.引文 城市供排水与内涝积水监测是城市生命线工程的核心组成部分,其配套监测设备的技术性能直接决定城市水务系统的运行稳定性与防汛应急的响应效率。 二.监测原理 供排水监测设备的设计围绕管网水质、水位、流量三大核心监测维度展开&…

作者头像 李华