[项目构建]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

四、安装完成后


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


完~

转载请与作者联系

相关推荐
青 春 记 忆5 小时前
Dify Docker Compose 通用无损升级指南:从备份、双版本预演到切换与回滚
运维·人工智能·python·docker·容器
GlueNa2SiO35 小时前
03-Flask模板引擎Jinja2详解
笔记·python·flask
临沂GEO8 小时前
GEO搜索优化科普|正规地理位置流量运营入门指南
大数据·人工智能·python·流量运营
大模型码小白8 小时前
Spring AI Tool 实现自然语言操作 MySQL 数据库详解
服务器·开发语言·数据库·人工智能·python·mysql·spring
荷蒲9 小时前
【小白量化Qbuddy】利用AI学习中文Python
人工智能·python·学习
数据狐(Datafox)11 小时前
京东商品列表API技术解析与落地应用(含标准 JSON 示例)
java·大数据·前端·人工智能·python·数据分析·json
量化吞吐机11 小时前
2026年下半年手工交易规则走向量化表达,产品该先接住哪一步
人工智能·python
Metaphor69212 小时前
使用 Python 读取和删除 Excel 文件属性
python·excel
迷迭香yy12 小时前
Python构建转融券多空识别系统从接口到因子的全流程 IG50免费开源股票数据API接口
开发语言·python·开源
月光船幽幽13 小时前
真实即粗糙,光滑是伪造
人工智能·python