用一周时间配置mask-rcnn,做个总结。
本文实现代码:
https://github.com/qixuxiang/mask_rcnn_ros
一、介绍:
用于对象检测和分割的Mask R-CNN算法的ROS包;
该软件包包含基于主题的ROS接口的Mask R-CNN的ROS节点;
核心算法代码大部分基于Matterport公司的Mask R-CNN实现;
不包含训练Mask R-CNN网络模型的代码;
二、硬件必备:
配置环境:Ubuntu 16.04LTS
geforce 840m(英伟达中低端2G独立显卡)
cuda8.0与cudnn6.0
1、显卡驱动安装教程:
https://blog.csdn.net/10km/article/details/61191230
注:这是用PPA第三方插件安装显卡,装完显卡驱动后,一定删除PPA,否则会导致下载速度变慢。
2、Ubuntu16.04LTS下cuda与cudnn配置教程:
https://blog.csdn.net/strugglepeach/article/details/77940490
二、满足运行环境
注:参考网址:
https://www.jianshu.com/p/a5838c148739
https://blog.csdn.net/zpp13hao1/article/details/78664994
三、
实现步骤:
1、创立工作空间,并把package放到src,然后编译(编译估计会出错,解决编译错误)
2、运行mask_rcnn节点
$ rosrun mask_rcnn_ros mask_rcnn_node
HDF5模型文件的路径。如果model_path是默认值并且该文件不存在,则该节点自动下载该文件。
默认: $ROS_HOME/mask_rcnn_coco.h5 (.ros/)ros home里类似隐藏文件
3、有一个使用RGB-D SLAM数据集的简单示例启动文件,在https://vision.in.tum.de/data/datasets/rgbd-dataset/download下载相应数据集,并把数据集放在bag里面 :
source后 ,
$ roslaunch mask_rcnn_ros freiburg3_rgbd_example.launch
$ roslaunch mask_rcnn_ros freiburg3_rgbd_example.launch
4、总结:
显卡驱动配置好后:
先装opencv3,再装kinetic(一定按照官网教程),然后装anaconda,进入anaconda环境(此后一切配置都在anaconda环境下),最后配置tensorflow(pip install tensorflow==1.3指定版本安装)与keras。
(1)cv2.so报错:
python调用opencv的原理:opencv编译出共享库文件,python把这个共享库文件作为一个模块加载并使用。通俗点就是:编译opencv的时候开启python接口选项,编译好了会产生cv2.so(linux下)或者cv2.pyd(windows下)这个共享库文件,python代码中import cv2 就可以直接用了。为了能正确import它,往往需要把cv2.so放在python找包能找到的路径下,或者修PYTHONPATH环境变量让它包含cv2.so所在路径。所以为了避免使用ROS kinetic中的opencv3库,就要将cv2.so删掉,为了以防万一,可以先将从cv2.so移到其他地方。
cd /opt/ros/kinetic/lib/python2.7/dist-packages
sudo mv cv2.so /home/weiwuhuhu/desktop
参考网址:https://blog.csdn.net/qq_30460905/article/details/79845156
(为了不使用kinetic自带的opencv3)
(2)
ImportError: dynamic module does not define module export function (PyInit_cv_bridge_boost)
cv_bridge默认python版本2.7,但是自己工作空间对应版本是python3.5
参考网址:
https://stackoverflow.com/questions/49221565/unable-to-use-cv-bridge-with-ros-kinetic-and-python3
(dei fan qiang)
在scr/vision/opencv/cv_bridge,修改里面的cmakelists
cmakelists:find_package(Boost REQUIRED python3) to find_package(Boost REQUIRED python-py35),从而改变/usr/lib/x86_64-linux-gnu/libboost_python-py35.so
五、附上成功照片: