核心内容摘要
基于STM32的图书馆环境监测系统(开题报告)
本文主要聚焦于EVA GitHub项目论文框架的初步理解以及在Linux的环境配置操作部分内容可能存在错误望提出本文中存在的问题并作出指正以及对内容进行补充谢谢
论文框架基于其整体流程以及与3DGS原理核心框架进行对比理解
1 输入与对齐 (Monocular RGB SMPLX Alignment)流程从一段单目普通相机视频开始SMPLX Alignment这是复现的工作EVA/SMPLer-X发挥作用的地方。
系统首先通过视频提取出每一帧人体的 3D 骨架参数提取的 .pkl 特征。
SMPLX Template这就是那个标准的“数字人模板”它为后续的高斯泼溅提供了一个基础形状Prior。
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来增加或删减高斯球。
例如在手指、五官等细节复杂的区域增加球的数量在平整的躯干部分减少球的数量。
3 渲染与损失函数 (Rendered Image Loss)Rendered Image vs. GT Image系统将生成的虚拟人渲染出来并与视频原图GT进行像素级对比。
Confidence-aware Loss这是一种“聪明”的损失函数。
它会识别哪些区域是遮挡的哪些是模糊的并给这些区域分配不同的权重Confidence防止错误的数据干扰模型学习。
4 最终目标驱动与动画 (Animate Avatar)通过这个循环系统最终得到了一个既有 SMPL-X 的骨架约束又有 3DGS 的照片级质感的数字人模型。
可以输入一段新的动作序列比如跳舞的参数。
模型会通过学习好的 Learnable LBS 将高斯球变换到对应的位置。
最终生成一个可以从任意角度观看、动作流畅的 可驱动虚拟人。
1 初始化的来源从 SfM 转向 SMPLX在传统的 3DGS 中通常通过 SfM运动恢复结构产生稀疏点云来撒下初始高斯球。
但在 EVA 这个针对人体建模的框架中并非使用 SfM 点云架构图明确显示初始化的输入源是SMPLX TemplateSMPLX 模板。
模板初始化Init图中左侧有一条标为 Init 的箭头直接从 SMPLX Template 指向 Gaussians。
这意味着算法是直接在 SMPLX 模型的顶点或其包络空间内布置初始的三维高斯球。
2 初始化后的参数定义一旦在 SMPLX 模板上撒下初始点每个高斯球会获得以下关键参数p中心位置 (Position)R旋转 (Rotation)S缩放 (Scaling)u,c,α分别对应颜色/球谐系数以及不透明度 (Opacity)
3 为什么 EVA 选择 SMPLX 而非 SfM人体先验 (Prior)单目视频Monocular RGB Video很难通过 SfM 获得高质量的动态人体点云。
使用 SMPLX 这种参数化人体模型作为初始点可以提供极强的几何约束。
驱动需求由于项目目标是 Animate Avatar动画化化身从 SMPLX 模板开始初始化可以更方便地将高斯球与 Learnable LBS可学习的线性混合蒙皮 绑定从而实现后续的动作驱动。
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真实照片进行对比。
环境配置
准备阶段请先在OneDrive将EVA必要的文件ckpt.tar下载下来总计约25GB随后解压至EVA_Official项目的文件夹中。
在官方提供的真实世界视频素材将该
zip下载下来
主要环境首先在环境中安装好CUDA
1
1供eva环境使用以及CUDA
1
6供smpler_x环境使用例如语句wget https://developer.download.nvidia.com/compute/cuda/
11.
0/local_installers/cuda_
11.
0_
510.
3
01_linux.run wget https://developer.download.nvidia.com/compute/cuda/
12.
0/local_installers/cuda_
12.
0_
530.
3
02_linux.run随后执行安装sudo sh cuda_
11.
0_
510.
3
01_linux.run sudo sh cuda_
12.
0_
530.
3
02_linux.run现在我们来创建eva环境conda create -n eva -y python
10 conda activate eva然后输入下行语句vim ~/.bashrc打开后将最后几行对应部分改为下列的形式目的是让该环境指向对应的cuda
1
1版本创建smpler_x环境时也需要相同操作让其指向cuda
1
6版本export PATH/cuda-
1
1/bin:\$PATH export LD_LIBRARY_PATH/cuda-
1
1/lib64:\$LD_LIBRARY_PATH export CUDA_HOME/cuda-
1
1在bashrc中保存上述改动并退出后刷新一下配置source ~/.bashrc随即bash scripts/env_install.sh在执行上述命令时如若遇见了无法下载到human_body_prior的情况建议到此链接自己下载下来然后解压并装到EVA_Official目录下如cd /EVA_Official/ unzip human_body_prior-cvpr
zip cd human_body_prior-cvpr19 # 关键因为似乎是版本不兼容所以使用--no-deps绕过对 torch
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是显示
1
1或类似版本就是正确的是不对应的话建议重新执行vim/.bashrc语句修改接下来退出eva环境已基本配好了去配smpler_x环境conda deactivate conda create -n smpler_x python
8 -y conda activate smpler_x然后跟上文eva环境指向cuda
1
1版本类似操作一遍使smpler_x环境指向cuda
1
6版本完成这步后就pip install torch
1.
1
0cu116 torchvision
0.
1
0cu116 --extra-index-url https://download.pytorch.org/whl/cu116 pip install mmcv-full
1.
1 -f https://download.openmmlab.com/mmcv/dist/cu116/torch
1.
1
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(fTorch: {torch.__version__}); print(fCUDA: {torch.version.cuda}); print(fGPU Available: {torch.cuda.is_available()})查看版本对齐后一步一步来cd preprocess/SMPLer-X/main/transformer_utils pip install -v -e .cd ../../../../ pip install setuptools
69.
1 yapf
0.
4
1 numpy
1.
2