(虚拟环境py3)基于ros实现mask-rcnn,启动摄像头,并输出预测的可视化结果,全步骤记录

第一次发文章,我们实验室和Framatome合作开发的一个核废料分炼机器人,我要做的是unknown objects segmentation,现在要sd-mask_rcnn的算法移植到ros平台上运行,但无奈没有现有的sd-mask_rcnn_ros节点可以直接git,需要我自己写。因为本人coding的经验缺少,我只能仿照mask_rcnn_ros节点,去试着写sd-mask_rcnn_ros节点,所以把mask_rcnn_ros给复现了一下,好废话结束,以下切题。

(保姆教程)记录全部步骤,重要解决几个问题:1. mask_rcnn_ros的节点环境配置;2. 解决cv_bridge在conda的python3环境的兼容问题;3. 连接摄像头(以usb cam为例),输出预测的可视化结果。( 以下步骤最好要挂上vpn)

我的配置: ubuntu 18.04, ros melodic, cuda10.0, cudnn7.6.x,conda的python3.7环境(由miniconda3所建)

1. mask_rcnn_ros节点环境配置

1.1创建conda环境 conda create -n tf1.15 python=3.7,并激活环境tf1.15,如下步骤都在conda环境中进行

1.2 建立一个工作空间 mkdir ws_test, 再cd ws_test(根空间)

1.3git clone https://github.com/qixuxiang/mask_rcnn_ros.git src/mask_rcnn_ros

1.4 cd src/mask_rcnn_ros

1.5安装环境包,亦可逐个安装pip install xxx

!!!更改原作者的requirements.txt的环境包版本再pip install,就这么改:

(虚拟环境py3)基于ros实现mask-rcnn,启动摄像头,并输出预测的可视化结果,全步骤记录

更改后继续 :

pip install -r requirements.txt
#如果网络问题,延长抓包时间 比如 pip --default-timeout=1000 install h5py==2.10.0

1.6 根空间编译+source

cd ws_test
catkin_make
source devel/setup.bash

1.7 cd src/mask_rcnn_ros/nodes, 修改mask_rcnn_node的 class InferenceConfig,添加 GPU_COUNT = 1 ,IMAGES_PER_GPU = 1, IMAGE_MIN_DIM = 320,和 IMAGE_MAX_DIM = 448

1.8 在 /mask_rcnn_ros/nodes/visualize.py 中的 indigo 修改为 melodic

sys.path.remove('/opt/ros/melodic/lib/python2.7/dist-packages')     #修改后

1.9 安装rospkg

pip install setuptools
pip install -U rosdep rosinstall_generator wstool rosinstall six vcstools

1.10另打开一个终端启动roscore,而现有终端 在根空间rosrun mask_rcnn_ros mask_rcnn_node运行后 看有没有报错,正常情况下没报错,能加载tensorflow,也能输出config配置,能调用visualize.py,但因为没启动摄像头的节点和实时画面作为输入,不会有任何输出结果,到这一步rosrun没有报错即可, ok了后ctrl+c中断。

break!!能启动rosrun后我们跳出第1.10,先跳到 2.1解决cv_bridge的问题

1.112.5后,激活tf1.15环境,现在可以跑该节点的一个案例,第二步是下载一个1.6G大小的rosbag包

cd ~/ws_test/src/mask_rcnn_ros/scripts
sh download_freiburg3_rgbd_example_bag.sh
再将这个包移动到/mask_rcnn_ros/bags中
cd ws_test
roslaunch mask_rcnn_ros freiburg3_rgbd_example.launch

在跑roslaunch的时候 ,可能会出现如下报错:

出现在visualize.py的cv2.findContours()报错 ValueError: not enough values to unpack (expected 3, got 2), 解决方案为 :_, contours, _ = cv2.findContours 改为 contours, _ = cv2.findContours ;

参考 https://github.com/facebookresearch/maskrcnn-benchmark/issues/339

比如出现报错AttribueError: module ‘keras.engine.topology’ has no attribute ‘ load_weights_from_hdf5_group_by_name’, 解决方案为:pip/conda安装的keras版本

Original: https://blog.csdn.net/pengfeiChu/article/details/124240449
Author: pengfeiChu
Title: (虚拟环境py3)基于ros实现mask-rcnn,启动摄像头,并输出预测的可视化结果,全步骤记录

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/680265/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球