mask-rcnn实现(基于ros)

用一周时间配置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


二、满足运行环境

  • Python 3.5
  • TensorFlow 1.3+
  • Keras 2.0.8+
  • Jupyter Notebook
  • Numpy, skimage, scipy, Pillow(安装Anaconda3直接完事)
  • cv2

注:参考网址:

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


五、附上成功照片:

mask-rcnn实现(基于ros)_第1张图片











你可能感兴趣的:(mask-rcnn实现(基于ros))