ubuntu20.0.4源码安装Colmap流程

AudioSeal 音频水印系统

AudioSeal 音频水印系统

语音合成
PyTorch
Cuda

**AudioSeal** 是 Meta 开源的语音水印系统,用于 AI 生成音频的检测和溯源。

系统环境

ubuntu20.0.4,已经预装了cuda toolkit,cuda版本11.8

动机

通过apt install的已编译的版本方式也可以成功安装,但是不支持GPU加速。导致特征点匹配的速度非常慢。在本地机器测试,960*540分辨率上的特征点匹配需要3s钟。使用GPU加速可以减少1到2个数量级。

Colmap用到的SiftGPU,SIFTGPU通过图形硬件管线实现特征提取的并行加速

安装流程:

主要参考官方文档的流程:

https://colmap.github.io/install.html#build-from-source,just

从git上pull下来的Colmap版本是3.13.0,是比较新的代码。

按照官方文档,需要安装依赖软件

Dependencies from the default Ubuntu repositories:

比较顺利,完成安装。

执行cmake命令,报错:

原因:

Ubuntu20.0.4,Apt install cmake的版本是3.16。

然而Colmap的cmake/FindDependencies.cmake:147要求cmake的版本3.17以上。

提升cmake的版本,参考https://www.cnblogs.com/Maker-Liu/p/16550381.html,通过源码安装。

Cmake 3.22安装成功,比较顺利

执行cmake,没有报错:

执行ninja报错

原因:

这个错误是 类型不匹配 导致的:point3D.xyz.data() 返回 const double*(常量指针),但 Ceres Solver 的 IsParameterBlockConstant 函数要求输入 double*(非 const 指针),C++ 不允许直接将 const 指针转换为非 const 指针。

核心原因:

Colmap 代码与你系统中安装的 Ceres Solver 版本不兼容—— 旧版本 Ceres 的 IsParameterBlockConstant 函数参数为非 const 指针,而 Colmap 新版本代码中 point3D.xyz 是 const 类型,导致类型冲突。

Apt install的Ceres是1.14.0,存在接口参数类型问题。在最新的代码中修复了这个问题。

修改办法,不想重新编译Ceres,修改了bundle_adjustment.cc中的代码,总共4处


if (problem.IsParameterBlockConstant(const_cast<double*>(point3D.xyz.data())) &&

继续ninja编译,仍然存在问题:

解决办法:

参考https://blog.csdn.net/qq_30565883/article/details/133778529

编译成功

您可能感兴趣的与本文相关的镜像

AudioSeal 音频水印系统

AudioSeal 音频水印系统

语音合成
PyTorch
Cuda

**AudioSeal** 是 Meta 开源的语音水印系统,用于 AI 生成音频的检测和溯源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值