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