[项目构建]ubuntu24.04下从零部署limap步骤与问题解决方案

[项目构建]ubuntu24.04下从零部署limap步骤与问题解决方案
@水墨不写bug


cpp 复制代码
//
//                       _oo0oo_
//                      o8888888o
//                      88" . "88
//                      (| -_- |)
//                      0\  =  /0
//                    ___/`---'\___
//                  .' \\|     |// '.
//                 / \\|||  :  |||// \
//                / _||||| -:- |||||- \
//               |   | \\\  -  /// |   |
//               | \_|  ''\---/''  |_/ |
//               \  .-\__  '-'  ___/-. /
//             ___'. .'  /--.--\  `. .'___
//          ."" '<  `.___\_<|>_/___.' >' "".
//         | | :  `- \`.;`\ _ /`;.`/ - ` : | |
//         \  \ `_.   \_ __\ /__ _/   .-` /  /
//     =====`-.____`.___ \_____/___.-`___.-'=====
//                       `=---='
//
//
//     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
//               佛祖保佑         永无BUG
// 			佛曰:
// 				 写字楼里写字间,写字间里程序员;
//               程序人员写程序,又拿程序换酒钱。
// 				 酒醒只在网上坐,酒醉还来网下眠;
// 				 酒醉酒醒日复日,网上网下年复年。
// 				 但愿老死电脑间,不愿鞠躬老板前;
// 				 奔驰宝马贵者趣,公交自行程序员。
// 				 别人笑我忒疯癫,我笑自己命太贱;
// 				 不见满街漂亮妹,哪个归得程序员?

导师任务需求线规范三维高斯分布,由此想到3Dline++和limap,3Dline++是一个老项目了,在新版ubuntu24.04的环境下绝大多数环境不兼任,所以部署limap。


在部署limap过程中,可以按照如下步骤从0开始进行:

一、确保基础环境

假设你已经安装conda,并且会使用conda创建虚拟环境。

(Conda是一个开源的跨平台包管理器和环境管理器,用于安装、运行和升级软件包及其依赖项,并支持创建和管理独立的项目环境。)

如果有困难,则请先寻找其他文章或者视频教程安装conda环境

bash 复制代码
conda create -n limap python=3.9 -y
conda activate limap

# 保证 cmake 版本满足 >= 3.17(用 conda-forge 通常最省事)
conda install -c conda-forge cmake>=3.17 ninja -y

二、安装其他依赖

编译安装 COLMAP:按照官方指南安装 COLMAP 3.8,确保使用 tag 3.8。

官方github: https://github.com/colmap/colmap

编译安装 PoseLib:按照 PoseLib 的安装指南进行安装。

官方github: https://github.com/PoseLib/PoseLib

安装 HDF5:直接使用bash

bash 复制代码
sudo apt-get install libhdf5-dev 

安装 HDF5 库到系统。

安装 Python 依赖

先激活虚拟环境:

bash 复制代码
conda init;
conda activate Limap;

运行以下命令安装所需的 Python 包:(在Limap虚拟环境中进行!!

python 复制代码
python -m pip install torch==1.12.0 torchvision==0.13.0
python -m pip install -r requirements.txt

三、开始安装Limap!

下一步就可跟着官方步骤来了,直接执行如下命令:

bash 复制代码
#找一个存放项目的位置
git clone https://github.com/cvg/limap.git
cd limap
git submodule update --init --recursive#初始化子模块

检查子模块状态:

bash 复制代码
git submodule status

正常情况输出3-4行白色字体,标识子模块存在。

安装必要的依赖(在limap目录下,Limap虚拟环境中)

bash 复制代码
python -m pip install -r requirements.txt

最后一步骤安装:

bash 复制代码
python -m pip install -Ive . 

在进行这个步骤之前,先关闭不必要的进程,包括游戏,音乐,QQ,微信,甚至是浏览器!

这一个步骤十分吃CPU资源。作者在进行这一步时,多次触发系统致命错误,无法修复导致会话直接退出了,在后来才发现在编译过程中内存占用接近100%!!,十分极限的完成了编译。

原因可能是:

编译工具(如 make)默认会根据 CPU 核心数启动并行任务(例如 make -j$(nproc))。如果每个编译进程(特别是 C++ 编译)占用几百 MB 甚至数 GB 内存,同时运行多个进程会迅速耗尽物理内存,导致系统使用大量交换空间,最终因内存耗尽而卡死或触发 OOM Killer。

LIMAP 可能依赖大型模板库(如 Eigen、CGAL、Ceres Solver 等),或者在源文件中包含了大量模板实例化。某些 C++ 文件在编译时(特别是开启优化)可能临时消耗数 GB 内存,如果多个这样的文件并行编译,内存压力会急剧上升。


如果关闭所有不必要的进程之后仍然爆内存了,解决方案参考如下:

1. 限制并行编译任务数

最直接有效的办法是降低并行度,确保总内存需求不超过物理内存。

bash 复制代码
make -j2
#或者使用更保守的 -j1(单线程编译)
make -j1

可以先用单线程编译测试是否稳定,再逐步增加并行数。

2. 增加交换空间

如果物理内存确实紧张,可以临时增加 swap 空间作为缓冲。

创建一个 4GB 的交换文件(大小根据需要调整)

bash 复制代码
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

# 编译完成后可关闭(重启后失效)
sudo swapoff /swapfile

四、安装完成后


接下来可以按照官方的步骤进行初步测试了~~


完~

转载请与作者联系

相关推荐
进击的雷神2 小时前
无分页一次性加载、多级CSS类名定位、动态User-Agent轮换、断点本地备份——意大利塑料展爬虫四大技术难关攻克纪实
前端·css·爬虫·python
一灰灰blog2 小时前
从零掌握 Spring AI Alibaba Skill:定义、注册与渐进式披露
人工智能·python·spring
winfredzhang2 小时前
Python 从零打造桌面文件管理工具开发全过程实录与源码深度解析
python·pdf·视频·图片·docx·xlsx
pupudawang2 小时前
Java进阶——IO 流
java·开发语言·python
旺旺仙贝呦2 小时前
Java常用注解
java·开发语言·python
南 阳2 小时前
Python从入门到精通day51
开发语言·python
Q一件事2 小时前
结构方程相关
python·算法·机器学习
SunnyDays10112 小时前
使用 Python 轻松操控 Excel 网格线:隐藏、显示与自定义颜色
开发语言·python·excel