2. BundleSDF的虚拟环境搭建
在这里从零开始完整搭建 conda环境下的BundleSDF。首先我们是在Ubuntu 22.04系统下搭建环境搭建步骤如下1.安装 Miniconda管理 Python 环境2.创建项目专用 Python 环境3.0pencv安装3.1 安装依赖sudo apt update sudo apt install -y \ cmake gcc g libgtk2.0-dev libavcodec-dev libavformat-dev libswscale-dev \ libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev \ libopenblas-dev libeigen3-dev3.2 下载 OpenCV 源码含 CUDA 依赖模块mkdir -p ~/libs cd ~/libs # 下载 OpenCV 4.5.5稳定版兼容性好 git clone https://github.com/opencv/opencv.git -b 4.5.5 git clone https://github.com/opencv/opencv_contrib.git -b 4.5.5 cd opencv mkdir build cd build3.3 编译配置关键开启 CUDAcmake -D CMAKE_BUILD_TYPERELEASE \ -D CMAKE_INSTALL_PREFIX/usr/local \ -D WITH_CUDAON \ -D WITH_CUDNNON \ -D OPENCV_EXTRA_MODULES_PATH~/libs/opencv_contrib/modules \ -D BUILD_opencv_cudaimgprocON \ -D BUILD_opencv_cudafeatures2dON \ -D WITH_TBBON \ -D WITH_EIGENON \ -D BUILD_EXAMPLESOFF \ -D BUILD_PERF_TESTSOFF \ -D BUILD_TESTSOFF ..3.4 编译并安装# 用所有 CPU 核心编译加快速度 make -j$(nproc) sudo make install sudo ldconfig3.5 验证 CUDA 模块是否安装成功# 检查 CUDA 头文件是否存在 ls /usr/local/include/opencv4/opencv2 | grep -E cuda|cudaimgproc|cudafeatures2d # 检查 OpenCV 是否识别到 CUDA pkg-config --modversion opencv4 opencv_version --verbose | grep -i cuda3.6 可能出现的错误3.6.1/usr/local/lib目录下没有pkgconfig文件夹先创建pkgconfig目录sudo mkdir -p /usr/local/lib/pkgconfig创建opencv4.pc文件sudo nano /usr/local/lib/pkgconfig/opencv4.pc粘贴完整内容prefix/usr/local exec_prefix${prefix} libdir${exec_prefix}/lib includedir${prefix}/include/opencv4 Name: opencv4 Description: Open Source Computer Vision Library Version: 4.5.5 Libs: -L${libdir} -lopencv_stitching -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dnn_superres -lopencv_dpm -lopencv_highgui -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_optflow -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_videostab -lopencv_videoio -lopencv_xfeatures2d -lopencv_shape -lopencv_ml -lopencv_ximgproc -lopencv_video -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_imgcodecs -lopencv_features2d -lopencv_flann -lopencv_xphoto -lopencv_videoio -lopencv_imgproc -lopencv_core Libs.private: -ldl -lm -lpthread -lrt Cflags: -I${includedir}保存退出按CtrlO→ 按回车保存按CtrlX退出编辑器配置并验证echo export PKG_CONFIG_PATH/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH ~/.bashrc source ~/.bashrc pkg-config --modversion opencv4输出4.5.5就说明成功了 ✅4.安装PCLUbuntu22.04自带的PCL版本可能和项目的版本不匹配则可以先将原有的版本清除重新安装合适的版本。4.1 完全卸载系统自带的 PCL 1.12sudo apt remove libpcl-dev pcl-tools -y sudo apt autoremove -y sudo apt clean4.2 安装依赖Ubuntu 22.04 专用sudo apt install build-essential libboost-all-dev libflann-dev libvtk9-dev libvtk9-qt-dev libopenni-dev libusb-1.0-0-dev libpng-dev libjpeg-dev libgtest-dev -y4.3 下载 编译 安装 PCL 1.10.1兼容版cd ~ wget https://github.com/PointCloudLibrary/pcl/archive/refs/tags/pcl-1.10.1.tar.gz tar -zxvf pcl-1.10.1.tar.gz cd pcl-pcl-1.10.1 mkdir build cd build cmake \ -DCMAKE_BUILD_TYPERelease \ -DBUILD_visualizationON \ -DBUILD_examplesOFF \ -DBUILD_testsOFF \ -DBUILD_appsOFF \ .. make -j$(nproc) sudo make install4.4 验证安装成功pcl_viewer --version5. 安装gridencoder5.1 下载gridencoder进入网页https:/github.com/asgawkey/torch-npg/tree/main下载文件夹打开文件内的文件如下里面有一个gridencoder文件该文件就是我们要下载的文件。5.2编译gridencoder5.2.1 回到gridencoder源码目录cd /public/torch-ngp-main/gridencoder conda activate bundlesdf5.2.2 用当前环境的 Python 3.8 编译python setup.py clean python setup.py build_ext --inplace5.2.3 把新编译好的文件复制到项目目录cp gridencoder.cpython-38-x86_64-linux-gnu.so /home/wyq/public/BundleSDF/5.2.4 一次性配置路径并运行cd /home/wyq/public/BundleSDF conda activate bundlesdf export LD_LIBRARY_PATH./BundleTrack/build:$CONDA_PREFIX/lib/python3.8/site-packages/torch/lib:$CONDA_PREFIX/lib:/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH export PYTHONPATH./:$PYTHONPATH python run_custom.py6.安装pytorch3d由于pytorch3d安装比较严格需要与pytorch的版本对应我们直接在虚拟环境中安装pytorch3d时可能报错若报错需要单独安装。6.1下载pytorch3d安装包直接克隆pytorch3d仓库到本地cd /home/wyq/public/ git clone https://github.com/facebookresearch/pytorch3d.git cd pytorch3d若不能直接下载可以进入https://github.com/facebookresearch/pytorch3d.git下载zip文件再解压。6.2 安装编译依赖conda activate bundlesdf cd /public/pytorch3d-main pip install fvcore0.1.5 iopath0.1.7 pip install .⚠️ 这个过程会根据你的环境自动编译 C/CUDA 扩展可能需要几分钟耐心等待即可。6.3 验证安装是否成功python -c import pytorch3d from pytorch3d.transforms import so3_exp_map print(✅ pytorch3d 安装成功版本, pytorch3d.__version__) 如果没有报错并打印了版本号说明安装完全成功回到你的项目继续运行脚本cd /home/wyq/public/BundleSDF python run_custom.py7.docker安装1. 卸载旧版本如有sudo apt remove -y docker docker-engine docker.io containerd runc2. 安装依赖、添加官方 GPG 密钥与源# 更新包索引、安装基础工具 sudo apt update sudo apt install -y ca-certificates curl gnupg lsb-release # 创建密钥目录、添加Docker官方GPG密钥 sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod ar /etc/apt/keyrings/docker.gpg # 添加Docker官方APT源 echo \ deb [arch$(dpkg --print-architecture) signed-by/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null3. 安装 Docker 引擎含 CLI、containerd、composesudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin4. 启动并设置开机自启sudo systemctl start docker sudo systemctl enable docker5. 配置非 root 用户免 sudo 使用 Docker重要避免每次 sudosudo usermod -aG docker $USER newgrp docker # 立即生效无需重启6. 验证安装成功docker --version docker compose version docker run hello-world # 输出Hello from Docker!即成功7. 可选配置国内镜像加速若验证不成功sudo tee /etc/docker/daemon.json -EOF { registry-mirrors: [ https://registry.docker-cn.com, https://hub-mirror.c.163.com, https://dockerhub.azk8s.cn ], dns: [114.114.114.114, 8.8.8.8], ipv6: false } EOF重启 Docker 服务sudo systemctl daemon-reload sudo systemctl restart docker直接用 IP 拉取官方镜像绕开 DNSdocker pull hello-world docker run hello-world8. docker打包ubuntu:22.04在宿主机上安装所有依赖和容器里一样# 1. 安装系统依赖 sudo apt update sudo apt install -y \ wget bzip2 ca-certificates curl git vim tmux \ g gcc build-essential cmake checkinstall gfortran \ libjpeg8-dev libtiff5-dev libpng-dev pkg-config yasm \ libavcodec-dev libavformat-dev libswscale-dev \ libdc1394-dev libxine2-dev libv4l-dev \ qtbase5-dev libgtk2.0-dev libtbb-dev libatlas-base-dev \ libprotobuf-dev protobuf-compiler libgoogle-glog-dev \ libhdf5-dev doxygen libyaml-cpp-dev libzmq3-dev freeglut3-dev # 2. 安装 CUDA 11.3和容器里一样 sudo chmod x ./cuda_11.3.1_465.19.01_linux.run sudo ./cuda_11.3.1_465.19.01_linux.run --silent --toolkit --override --no-opengl-libs # 3. 配置 CUDA 环境变量 echo export PATH/usr/local/cuda-11.3/bin:$PATH ~/.bashrc echo export LD_LIBRARY_PATH/usr/local/cuda-11.3/lib64:$LD_LIBRARY_PATH ~/.bashrc echo export CUDA_HOME/usr/local/cuda-11.3 ~/.bashrc source ~/.bashrc # 4. 安装 Eigen、OpenCV、PCL 等和你原来的 Dockerfile 里一样 # 直接在宿主机上执行这些命令就不用在容器里构建了打包成 Docker 镜像# 1. 打包宿主机的文件系统只打包必要的部分 sudo tar --exclude./proc/* --exclude./sys/* --exclude./dev/* -cvf ubuntu-rootfs.tar / # 2. 导入成 Docker 镜像 cat ubuntu-rootfs.tar | docker import - local/ubuntu:22.04 # 3. 验证镜像 docker images | grep local/ubuntu用本地镜像构建你的 BundleSDF 镜像FROM local/ubuntu:22.04 # 复制 CUDA 安装包如果宿主机已经装了这步可以省略 COPY ./cuda_11.3.1_465.19.01_linux.run /root/ # 后续步骤和原来一样