ORB-SLAM2到dynaSLAM编译

这是在ORB-SLAM2基础上针对于动态场景进行改进的版本。利用MASK-RCNN提取场景中动态物体的语义信息,根据掩膜去掉误匹配,同时采用图像恢复技术进行场景恢复和建图,是比较优秀的SLAM算法。下面看看具体编译运行过程:

1、源码:https://github.com/BertaBescos/DynaSLAM

2、文章:DynaSLAM: Tracking, Mapping and Inpainting in Dynamic Scenes

3、下载源码:

git clone https://github.com/BertaBescos/DynaSLAM.git

注意到源码中的CMakeLists使用的是python2.7,因此需要以python2.7安装MASK_RCNN相关依赖项。

我尝试过使用python3.5,但是将PyInstance_New(),函数替换为PyInstanceMethod_New()之后,PyObject_CallMethod()函数返回空,有兴趣的可以试试怎么用python3实现该代码。

4、下载MASK_RCNN源码

git clone https://github.com/matterport/Mask_RCNN.git
cd Mask_RCNN

先安装tensorflow,用清华源比较快(带GPU版本,Python2.7):

sudo pip2 install --upgrade https://mirrors.tuna.tsinghua.edu.cn/tensorflow/linux/gpu/tensorflow_gpu-1.4.0rc1-cp27-none-linux_x86_64.whl

再安装keras ,版本太高会报错。

sudo pip2 install keras==2.0.8

然后将requirements.txt里面的tensorflow,keras去掉,不然装的就是高版本的。

sudo pip2 install -r requirements.txt

可以把MASK_RCNN安装一下:

sudo python2 setup.py install

5、下载预先训练好的COCO模型权重mask_rcnn_coco.h5 ,将其放到DynaSLAM/src/python目录下,然后直接编译dynaSLAM

./bulid.sh

编译完成之后运行(RGBD例子):

./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM3.yaml data/rgbd_dataset_freiburg3_walking_xyz data/rgbd_dataset_freiburg3_walking_xyz/associations.txt data/mask data/output

最后两个参数建一个空文件夹就行,会自动保存相关图片信息。

这里有一个bug,之前的代码不会保存深度图,需要在rgbd_tum.cc,141下面添加:

vstrImageFilenamesD[ni].replace(0,6,"");

6、若是使用python2之后PyImport_ImportModule(),函数还是返回空,那么可能是python文件夹中将tab与空格混用以及函数定义中出现了一些缩进不匹配,导致错误。我是在这里下载的:

https://download.csdn.net/download/qq_42938987/10769306

替换之后就可以了。

这篇博客的编译过程也写的很好:https://blog.csdn.net/qq_42938987/article/details/83795217

7、该算法运行速度较慢,实时性不是太好,是缺点之一!!!,下面放一张分割之后保存的图片

ORB-SLAM2到dynaSLAM编译_第1张图片

你可能感兴趣的:(SLAM)