当前位置: 首页 > news >正文

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-dev

3.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 build

3.3 编译配置(关键:开启 CUDA)

cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D WITH_CUDA=ON \ -D WITH_CUDNN=ON \ -D OPENCV_EXTRA_MODULES_PATH=~/libs/opencv_contrib/modules \ -D BUILD_opencv_cudaimgproc=ON \ -D BUILD_opencv_cudafeatures2d=ON \ -D WITH_TBB=ON \ -D WITH_EIGEN=ON \ -D BUILD_EXAMPLES=OFF \ -D BUILD_PERF_TESTS=OFF \ -D BUILD_TESTS=OFF ..

3.4 编译并安装

# 用所有 CPU 核心编译,加快速度 make -j$(nproc) sudo make install sudo ldconfig

3.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 cuda

3.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}

保存退出

  • Ctrl+O→ 按回车保存
  • Ctrl+X退出编辑器

配置并验证

echo 'export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH' >> ~/.bashrc source ~/.bashrc pkg-config --modversion opencv4

输出4.5.5就说明成功了 ✅

4.安装PCL

Ubuntu22.04自带的PCL版本可能和项目的版本不匹配,则可以先将原有的版本清除,重新安装合适的版本。

4.1 完全卸载系统自带的 PCL 1.12

sudo apt remove libpcl-dev pcl-tools -y sudo apt autoremove -y sudo apt clean

4.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 -y

4.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_TYPE=Release \ -DBUILD_visualization=ON \ -DBUILD_examples=OFF \ -DBUILD_tests=OFF \ -DBUILD_apps=OFF \ .. make -j$(nproc) sudo make install

4.4 验证安装成功

pcl_viewer --version

5. 安装gridencoder

5.1 下载gridencoder

进入网页https:/github.com/asgawkey/torch-npg/tree/main,下载文件夹,打开文件内的文件如下:

里面有一个gridencoder文件,该文件就是我们要下载的文件。

5.2编译gridencoder

5.2.1 回到gridencoder源码目录

cd /public/torch-ngp-main/gridencoder conda activate bundlesdf

5.2.2 用当前环境的 Python 3.8 编译

python setup.py clean python setup.py build_ext --inplace

5.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.py

6.安装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 "fvcore>=0.1.5" "iopath>=0.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.py

7.docker安装

1. 卸载旧版本(如有)

sudo apt remove -y docker docker-engine docker.io containerd runc

2. 安装依赖、添加官方 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 a+r /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/null

3. 安装 Docker 引擎(含 CLI、containerd、compose)

sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

4. 启动并设置开机自启

sudo systemctl start docker sudo systemctl enable docker

5. 配置非 root 用户免 sudo 使用 Docker(重要,避免每次 sudo)

sudo 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 拉取官方镜像(绕开 DNS)
docker pull hello-world docker run hello-world

8. 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/ # 后续步骤和原来一样
http://www.jsqmd.com/news/740858/

相关文章:

  • 告别机械电位器!用STM32和MCP4017打造你的智能亮度调节模块(教程+源码)
  • 115proxy-for-kodi:在Kodi中实现115网盘视频流式播放的技术实现
  • 通过 curl 命令直接测试 Taotoken 聊天补全接口的完整步骤
  • 别再傻傻改元组了!Python新手必懂的3种‘不可变’数据替换技巧(附代码对比)
  • 告别虚拟机卡顿:实测2015款iMac用Rufus直装Win11双系统,驱动与5K分辨率完美设置指南
  • Java String 类深入解析
  • 如何快速成为斗地主高手:DouZero AI助手完整使用指南
  • 从零搭建GPU监控看板:用Python脚本+nvidia-smi定时抓取数据并可视化
  • 从色卡到代码:手把手教你用Python实现CIE 1931色度图转换(附完整代码)
  • 告别symbolicatecrash:Xcode 13.3后,用atos和CrashSymbolicator.py高效解析iOS崩溃日志
  • DBA不会告诉你的事:90%性能问题源于这5个SQL错误
  • 多平台内容矩阵分发系统 核心模块技术实现与技术选型详解
  • 深入RTA-OS内核:手把手教你配置ETAS ISOLAR多核工程的中断(Category1 vs Category2详解)
  • 从用量看板观察不同模型调用的 token 消耗与成本分布
  • 1 7.4.4 PPPoE 上网配置(拨号 → 新连接 → 宽带 PPPoE)
  • 3分钟上手:N_m3u8DL-CLI-SimpleG视频下载终极指南
  • Python分布式训练配置终极检查表(含NCCL_TIMEOUT、TF_CPP_MIN_LOG_LEVEL、RANK/WORLD_SIZE等11个关键环境变量避雷解析)
  • Windows HEIC缩略图完整教程:让资源管理器完美预览iPhone照片
  • 滴滴测开面试复盘:从两道烧脑的智力题到‘猜数字’算法,我的真实闯关记录
  • 网状Meta分析结果怎么看?手把手教你解读gemtc输出:异质性检验、节点分割与SUCRA排序图
  • 利用Taotoken模型广场为你的应用场景选择最合适的大模型
  • 【RAG】【ingestion03】摄取管道与文档管理示例
  • 告别手忙脚乱:用这些Verdi快捷键和窗口操作技巧,让你的仿真效率翻倍
  • 紧急!医疗设备量产前最后72小时:C语言采集线程死锁自愈方案(含FreeRTOS优先级翻转熔断机制源码)
  • 如何快速突破百度网盘限速:Python直链解析工具完整指南
  • 算法训练营第19天|1047. 删除字符串中的所有相邻重复项
  • 【Python分布式机器学习训练配置黄金标准】:20年ML基础设施专家亲授——避坑指南+5大核心参数调优清单
  • 分布式大模型推理实战:TP/PP/EP并行策略深度解析与架构选型指南
  • 3种强大方案:将旧电视盒子变身高性能Linux服务器的终极指南
  • 全域数学·数术本源·高维代数卷(72分册)【乖乖数学】