安装tensorflow-1.14.0版本时,我的电脑只能选择CPU的版本,所以安装GPU版本会出现很多问题,只有这个命令可用:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow==1.14.0
值得注意的是,这个版本是无法正确运行的,因为在执行时候仍然会报错,所以后缀需要改成1.12.3
同时需要安装的keras版本为2.0.9
安装命令:
sudo pip install keras==2.0.9
但是有会出现一个新的问题就是提示你安装的numpy检测到多个版本或者出现版本过高的问题,这里的numpy1.16.0版本是上面安装tensorflow和keras时候自带的版本,需要单独卸载,反复执行命令:
sudo pip uninstall numpy
直到出现无numpy存在的提示后,安装对应的numpy1.15.0版本:
pip install numpy==1.15.0
至此,出现
Mask R-CNN正常工作.
在上述问题解决后,便开始编译DynaSLAM的文件,又出现新的问题:问题出在哪里呢?就在于DynaSLAM根目录下的CMakeLists.text文件中,因为Monocular目录下根本没有mono_carla文件,所以将文件中最后三行注释即可:
参考:https://blog.csdn.net/lexiaoxiaoxiao/article/details/101561416
#add_executable(mono_carla
#Examples/Monocular/mono_carla.cc)
#target_link_libraries(mono_carla ${PROJECT_NAME})
继续编译
完成之后,下载了一个动态TUM数据集进行验证:
./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM3.yaml /home/eagle/DataSet/TUM/rgbd_dataset_freiburg3_walking_xyz /home/eagle/DynaSLAM/Examples/RGB-D/associations/fr3_walking_xyz.txt
这里跑不完整,所以修改TUM3.yaml中提取的ORB特征点数量1000—>3000,成功跑完,没有问题,同时没有调用Mask网络,并且存储inpainted的帧:
./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM3.yaml home/eagle/DataSet/TUM/rgbd_dataset_freiburg3_walking_xyz home/eagle/DynaSLAM/Examples/RGB-D/associations/fr3_walking_xyz.txt ./maskpath ./inpaintedFrame
这里出现了总线错误,显示核心已转储。
这里的问题从终端中不好解决,于是选择使用Clion这个IDE寻找问题,最终发现有一处问题:来自于src源文件中MaskNet.cc中的此行代码。
问题原因全网只有一个解决方式:已于图片中给出网址。
电脑配置的的是Opencv3.2.0,可能会与tensorfow产生冲突,所以建议使用Opencv2.4.11版本,所以尝试同时安装两个版本的Opencv,所以现在安装Opencv2.4.11的话必须要修改安装路径,不能直接安装在CmakeLists下所给的默认路径“usr/local”,否则会出现新安装的版本覆盖之前安装的Opencv版本的问题。但是自己创建文件夹安装的时候又会出现安装新版本Opencv报错:1. linux/videodev.h找不到 2. sys/videodev.h找不到 的问题(猜测是修改了安装路径导致的问题,目前仍在解决)。
尝试卸载opencv3.2.0版本后再装opencv2.4.11
安装opencv2.4.11遇到的问题(opencv3.1.0可以正常安装):
1.Configuring incomplete, errors occurred!
See also “D:/OpencvSources/CMakeFiles/CMakeOutput.log”.
See also “D:/OpencvSources/CMakeFiles/CMakeError.log”.
需要修改几个相应的文件错误以及Ubuntu 18.4不支持opencv-2.3.11自带的OpenCVDetectCXXCompiler.cmake,需要修改此文档,见:https://blog.csdn.net/u010003609/article/details/100086911#commentBox
(这个错误非常隐蔽!!!!!!!)
值得一提的是更换OpenCv版本后,之前运行的ORB_SLAM2需要重新执行以下build.sh文件,不然会出现
“./Examples/Monocular/mono_tum: error while loading shared libraries: libopencv_core.so.3.1: cannot open shared object file: No such file or directory
”
报错!
(1)/usr/include/c++/7/cstdlib:75:15: fatal error: stdlib.h: 没有那个文件或目录。
(2)In file included from /home/kunb/slam_code/opencv-2.4.9/modules/highgui/src/cap_ffmpeg_impl.hpp:60:0,
from /home/kunb/slam_code/opencv-2.4.9/modules/highgui/src/cap_ffmpeg.cpp:45:
/home/kunb/slam_code/opencv-2.4.9/modules/highgui/src/ffmpeg_codecs.hpp:104:7: error: ‘CODEC_ID_H264’ was not declared in this scope
{ CODEC_ID_H264, MKTAG(‘H’, ‘2’, ‘6’, ‘4’) },
^~~~~~~~~~~~~
/home/kunb/slam_code/opencv-2.4.9/modules/highgui/src/ffmpeg_codecs.hpp:105:7: error: ‘CODEC_ID_H264’ was not declared in this scope
{ CODEC_ID_H264, MKTAG(‘h’, ‘2’, ‘6’, ‘4’) },
^~~~~~~~~~~~~
/home/kunb/slam_code/opencv-2.4.9/modules/highgui/src/ffmpeg_codecs.hpp:106:7: error: ‘CODEC_ID_H264’ was not declared in this scope
{ CODEC_ID_H264, MKTAG(‘X’, ‘2’, ‘6’, ‘4’) },
(后面太长,不贴了)
编译时候:
cmake -DENABLE_PRECOMPILED_HEADERS=OFF -D WITH_FFMPEG=OFF..
(3)./home/eagle/opencv-2.4.11/modules/contrib/src/rgbdodometry.cpp:65:12: fatal error: unsupported/Eigen/MatrixFunctions: No such file or directory
解决方法:首先确保Eigen已经安装了,然后找到Eigen所在的路径。我的在/usr/include/eigen3这里
然后将
# include <unsupported/Eigen/MatrixFunctions>
改成
# include </usr/include/eigen3/unsupported/Eigen/MatrixFunctions>
至此Opencv2.4.11编译安装完成。
更换Opencv版本后需要进行重新编译整体文件,Mask-R CNN至此可以开始正常工作。
对运行过程中的问题进行研究,发现上述问题是因为Extracted ORB Featured Points数量不够,所以在脚本文件中对提取的特征点数量由1000——>3000,正常运行,但是问题还有一个是:
Light Tracking not working because Tracking is not initialized...
cautious!这是因为RBD_D模式下,不需要初始化,因为只有Monocular没有深度信息,所以才需要初始化。
本片博客参考的安装过程来自两位大神的博客:
https://blog.csdn.net/qq_27399933/article/details/107549920
https://blog.csdn.net/qq_43525260/article/details/105746452#commentBox
https://blog.csdn.net/l243225530/article/details/105900272(核心转储的问题)
本片论文是针对Legion y7000的环境配置过程中出现的问题而作。