3dmatch-toolbox详细安装教程-Ubuntu14.04
前言
paper: 3DMatch: Learning Local Geometric Descriptors from RGB-D Reconstructions 【CVPR-2017】
githup: :https://github.com/1447121704/3dmatch-toolbox
提示:3dmatch-toolbox源码作者只在Ubuntu 14.04上安装运行。
最近在docker的ubuntu14.04容器上配置3dmatch-toolbox运行环境时踩了很多坑,在这期间查阅了很多资料和博客,于是想对安装过程进行总结,方便自己反复查阅以及分享经验避免大家重复踩坑。
博主是用docker在ubuntu14.04容器中安装的3dmatch-toolbox,后续会打包成docker的镜像文件分享给大家。
docker搭建Ubuntu14.04
windows10下docker的安装教程参考博主之前的博文《【docker】Windows10系统下安装并配置阿里云镜像加速》,这里默认大家都装好docker了。
docker命令大全参考
bash
# 获取镜像ubuntu14.04
docker pull snoopy86/desktop-dockers
# 查看镜像
docker images
# 创建(并启动)gpu版本容器,将容器内部的端口5900和22映射到宿主机上的相同端口
docker run -it --privileged=True --shm-size 8g --gpus all --name 3dmatch -p 5900:5900 -p 22:22 -d snoopy86/desktop-dockers:latest
# 只查看正在运行的容器
docker ps
# 进入容器
docker attach 3dmatch
# 或者
docker exec -it 3dmatch /bin/bash
win10下cmd进行docker容器内部:
这里镜像博主找了很久,但是有个小问题,root用户的密码不知道:
解决办法如下,在cmd进行ubuntu容器时候设置root的密码
bash
# 设置root密码
passwd root
# 这里也重置ubuntu(用户)的密码
passwd ubuntu
bash
# 查看ubuntu版本
lsb_release -a
# 更新apt库,更新软件列表
sudo apt-get update
sudo apt-get upgrade
安装第三方库
安装cuda/cundnn
【参考】博主的ubuntu18.04下深度学习环境配置详细教程,按照比较类似博主不再赘述。
假如你是和博主一样用docker使用ubuntu14.04容器来搭建环境,推荐按照博主的选项来。
安装OpenCV
【OpenCV2.4.11官网地址】,直接下载安装即可(推荐)。
bash
# 安装依赖项
sudo apt-get install build-essential cmake libgtk2.0-dev pkg-config python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev
#下载源码包到Downloads(不推荐)
cd Downloads
wget https://github.com/opencv/opencv/archive/2.4.11.zip
# 解压opencv源代码并进入目录
sudo apt-get install unzip
unzip opencv-2.4.11.zip && cd opencv-2.4.11
# 创建并进入构建目录
mkdir build && cd build
# 开始编译和安装
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D CUDA_GENERATION=Kepler ..
# 4线程数量,根据电脑性能选择合适的数字
make -j4
sudo make install
#验证安装是否完成
# 安装pkg-config工具
sudo apt-get install -y pkg-config
# 查询OpenCV版本
pkg-config --modversion opencv
# 查询OpenCV库
pkg-config --cflags opencv
# 查询头文件目录
pkg-config --libs opencv
安装Matlab
【参考】
1.下载安装包和破解文件
matlabR2016b源码 提取码:kov1
下载的Linux matlabR2016b文件夹内有三个文件:
ubuntu14.04有个神坑,不能安装百度云,这里博主是下载到win10下,然后将三个文件夹打包后从win10主机复制文件到docker容器ubuntu14.04。
powershell
# 主机复制文件到docker容器
docker cp hostfilepath containerid:/filepath
# eg:
docker cp E:\BaiduNetdiskDownload\Linux.zip acd42a2ba5f2://home/ubuntu/Downloads
bash
# 解压文件夹
unzip Linux.zip
# 解压Matlab 2016b Linux64 Crack.rar文件
sudo apt-get install unrar
cd Linux && unrar x Matlab_2016b_Linux64_Crack.rar
# 解压出如下文件
# license_server.lic
# Matlab_2016b_Linux64_Crack.rar
# R2016b
# license_standalone.lic
# MATLAB_Production_Server
# readme.txt
# 在Documents下新建matlab文佳夹用于挂载镜像
mkdir /home/ubuntu/Downloads/matlab
# 挂载镜像1
sudo mount -t auto -o loop /home/ubuntu/Downloads/Linux/R2016b_glnxa64_dvd1.iso /home/ubuntu/Downloads/matlab
2.安装Matlab
bash
# 在挂载1的文件夹外执行
sudo /home/ubuntu/Downloads/matlab/install
同意条款下一步,在解压生成的readme.txt文件中找到"Use a File Installation Key":
一路下一步,直到系统提示挂载镜像2:
卸载镜像1,挂载镜像2,然后点击ok继续安装,等待程序运行结束:
bash
# 新开一个命令行
sudo umount /home/ubuntu/Downloads/matlab
# 挂载到同一位置
sudo mount -t auto -o loop /home/ubuntu/Downloads/Linux/R2016b_glnxa64_dvd2.iso /home/ubuntu/Downloads/matlab
3.注册并运行
bash
# 安装完成后,将解压得到的R2016b/bin文件复制到安装目录下替换原有文件
sudo cp -r /home/ubuntu/Downloads/Linux/R2016b/bin/ /usr/local/MATLAB/R2016b/
# 再将解压得到的license_standalone.lic复制到安装目录
sudo mkdir /usr/local/MATLAB/R2016b/bin/licenses/
sudo cp /home/ubuntu/Downloads/Linux/license_standalone.lic /usr/local/MATLAB/R2016b/bin/licenses/
# 完成上述操作后把挂载卸载
sudo umount /home/ubuntu/Downloads/matlab
# 执行命令运行
sudo /usr/local/MATLAB/R2016b/bin/matlab
弹出激活框,然后导入/usr/local/MATLAB/R2016b/bin/licenses/ 文件目录下选择license_standalone.lic这个文件,即可激活。
完成安装。
安装以及运行3dmatch-toolbox
1.安装测试3dmatch-toolbox(对齐两个点云)
源码作者给出的过程和效果示意图:
bash
# 新建3DMatch文件夹
mkdir 3DMatch && cd 3DMatch
# 通过git下载3dmatch-toolbox源码,需要科学上网
sudo apt-get install git
git clone https://github.com/andyzeng/3dmatch-toolbox.git 3dmatch-toolbox
cd 3dmatch-toolbox/core
# 编译 C++/CUDA 演示代码
./compile.sh
# 下载3DMatch预训练权重
./download-weights.sh # 3dmatch-weights-snapshot-137000.marvin
下载权重出现以下问题,打开download-weights.sh文件添加 "--no-check-certificate"
加载两个示例 3D 点云,计算其 TDF 体素网格体积,并计算随机表面关键点及其 3DMatch 描述符,保存到磁盘上的二进制文件。
bash
./demo ../data/sample/3dmatch-demo/single-depth-1.ply fragment-1
./demo ../data/sample/3dmatch-demo/single-depth-2.ply fragment-2
成功运行的截图:
保存到磁盘上的对应二进制文件。
可能出现 " error while loading shared libraries: libopencv_core.so.2.4: cannot open shared object file: No such file or directory" 错误
解决方法:
bash
# 编辑修改文件ld.so.conf
sudo gedit /etc/ld.so.conf
# 插入信息,路径要根据自己的具体情况设置
include /usr/local/include/opencv/*
/sbin/ldconfig -v
# 保存退出执行以下命令
sudo ldconfig
opencv下是头文件:
插入的内容:
在 Matlab 中运行以下脚本,加载关键点和3DMatch描述符,并使用RANSAC注册两个点云,对齐的点云的可视化保存到文件"result.ply"。
bash
# 启动 Matlab
sudo /usr/local/MATLAB/R2016b/bin/matlab
# 执行命令
demo
该文件也可以使用Meshlab或任何其他3D查看器进行查看。
注意:由于默认情况下随机选择的关键点不正确,首次尝试此演示时可能会导致对齐失败。
这里博主先暂时告一段落,后续会把其他部分内容补上。
总结
尽可能简单、详细的介绍3dmatch-toolbox的安装流程以及解决了安装过程中可能存在的问题。后续会根据自己学到的知识结合个人理解讲解3dmatch-toolbox的原理和代码。