FoundationPose实战:从零部署到Demo运行全记录

张开发
2026/4/14 21:22:00 15 分钟阅读

分享文章

FoundationPose实战:从零部署到Demo运行全记录
1. 环境准备从零搭建Ubuntu开发环境第一次接触FoundationPose时我花了两天时间才把环境完全配好。这里分享下我的完整配置过程帮你避开那些坑人的依赖问题。我的设备是RTX 4080显卡配Ubuntu 22.04系统这个组合实测兼容性最好。显卡驱动是第一个门槛。建议直接用官方驱动别用开源版本。在终端输入nvidia-smi确认驱动版本至少525以上否则后续CUDA会出各种幺蛾子。我遇到过最诡异的问题是PyTorch能识别GPU但跑Demo就崩溃最后发现是驱动版本太老。CUDA Toolkit的选择很关键。官方推荐11.8版本但默认源安装的可能是12.x。这里有个隐藏技巧先卸载现有CUDA再安装指定版本。执行下面这组命令可以彻底清理旧版本sudo apt-get purge nvidia-cuda* sudo apt-get autoremove wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run sudo sh cuda_11.8.0_520.61.05_linux.run安装时记得取消勾选Driver选项如果已装好驱动。完成后在~/.bashrc添加环境变量export PATH/usr/local/cuda-11.8/bin${PATH::${PATH}} export LD_LIBRARY_PATH/usr/local/cuda-11.8/lib64${LD_LIBRARY_PATH::${LD_LIBRARY_PATH}}2. 项目部署克隆与依赖安装从GitHub克隆项目时建议加上--recursive参数否则子模块缺失会导致后续构建失败git clone --recursive https://github.com/NVlabs/FoundationPose.git cd FoundationPose权重文件的存放位置是个易错点。必须在项目根目录创建weights文件夹注意是复数形式下载的*.pth文件放这里。我试过用单数weight命名结果Demo死活找不到模型文件。用conda创建虚拟环境时python版本锁定3.9最稳妥。3.10以上会遇到torch与pytorch3d的兼容性问题conda create -n foundationpose python3.9 conda activate foundationpose安装依赖时有个隐藏坑点官方requirements.txt里的nvdiffrast需要单独处理。先手动安装这个库再装其他依赖pip install githttps://github.com/NVlabs/nvdiffrast.git pip install -r requirements.txt3. 关键依赖Eigen3与C扩展编译Eigen3的安装让我踩了最大的坑。conda源里的3.3.9版本会导致C扩展编译失败必须手动装3.4.0。建议按这个流程操作cd ~ wget https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.tar.gz tar -xzf eigen-3.4.0.tar.gz cd eigen-3.4.0 mkdir build cd build cmake .. -DCMAKE_BUILD_TYPERelease -DCMAKE_CXX_FLAGS-stdc14 sudo make install编译C扩展时如果报Eigen3 not found错误在build_all_conda.sh开头添加export Eigen3_DIR/usr/local/include/eigen3完整的构建命令需要指定conda环境路径CMAKE_PREFIX_PATH$CONDA_PREFIX/lib/python3.9/site-packages/pybind11/share/cmake/pybind11 bash build_all_conda.sh这个过程大概要15-20分钟期间会有大量warning特别是关于nvidia的只要最后显示[100%] Built target mycpp就是成功了。4. 常见报错与解决方案CUDA版本冲突是最常见的问题。如果遇到undefined symbol: _ZN2at4_ops19empty_memory_format4callExN2at10ArrayRefIlEENS1_10TensorOptionsENS1_10c10::string_viewE这类错误说明torch和CUDA版本不匹配。用这个组合绝对稳pip install torch2.0.0cu118 torchvision0.15.1cu118 --extra-index-url https://download.pytorch.org/whl/cu118数据类型报错比如expected scalar type Half but found Float通常是因为torch版本过低。升级到2.0即可解决。有个取巧的方法是在报错代码处强制类型转换# 在run_demo.py中找到报错位置添加 input input.half() if input.dtype torch.float32 else inputDemo运行崩溃时先检查demo_data文件夹结构是否正确。正确的目录树应该是demo_data/ ├── example_1 │ ├── color │ ├── depth │ └── meta └── example_2 ├── color ├── depth └── meta5. 性能优化与调试技巧内存不足的问题可以通过修改configs/default.yaml解决。把batch_size从默认的8降到4显存占用能减少40%。我的RTX 4080实测数据参数原始值优化值显存占用batch_size8418GB → 11GBnum_workers42内存降低30%可视化调试有个实用技巧在run_demo.py里添加这段代码可以实时显示检测框import matplotlib.pyplot as plt plt.imshow(output_image) plt.show()如果遇到进程卡死可能是OpenGL上下文问题。在Docker环境下需要加这个参数docker run --gpus all --ipchost --ulimit memlock-1 -it ...最后提醒一个容易忽视的细节所有路径都不要包含中文或空格否则C扩展可能静默失败。我在/home/我的项目目录下折腾了半天才发现这个问题

更多文章