ROS下实现darknet_ros(YOLO V3)检测

一. 代码下载
代码Github主页:https://github.com/leggedrobotics/darknet_ros
下载命令:

git

mkdir -p catkin_workspace/src
cd catkin_workspace/src
git clone --recursive git@github.com:leggedrobotics/darknet_ros.git
cd ../

下载时间可能比较长,请耐心等待…github

二. 编译
在ROS工做空间目录下,执行命令:
bash

catkin_make -DCMAKE_BUILD_TYPE=Release

此时会开始编译整个项目,编译完成后会检查{catkin_ws}/darknet_ros/darknet_ros/yolo_network_config/weights文件下有没有yolov2-tiny.weights和yolov3.weights两个模型文件,默认下载好的代码里面为了节省体积是不带这两个模型文件的。所以编译以后会自动开始下载模型文件,此时又是一段漫长的等待时间。
若是恰好你以前已经下载好了模型文件,那就行了,在开始编译以前就把模型文件拷贝到上述文件夹下,就不会再次下载了。
并发

三. 运行代码
1. 图像话题发布
由于darknet_ros会直接订阅指定的图像话题名,而后对图像进行检测,绘制检测框,并发布相应的检测话题,所以首先须要找一个可以发布图像话题的ROS包,这里推荐使用ROS官方提供的usb_cam驱动包,能够直接将电脑自带摄像头或链接电脑的USB摄像头采集的图像发布为ROS图像话题。
下载摄像头驱动:


spa

sudo apt-get install ros-kinetic-usb-cam

而后发布摄像头图像话题:3d

roslaunch usb_cam usb_cam-test.launch

若是顺利的话应该能够看到实际的图像显示界面。code

2. 运行darknet_ros
而后执行darknet_ros进行检测,在运行检测以前须要更改一下配置文件,使得darknet_ros订阅的话题与usb_cam发布的图片话题对应。
打开darknet_ros/config/ros.yaml文件,修改:

blog

subscribers:
  camera_reading:
    topic: /camera/rgb/image_raw
    queue_size: 1

图片

subscribers:
  camera_reading:
    topic: /usb_cam/image_raw
    queue_size: 1

回到darknet的工做空间根目录,执行:get

source devel/setup.bash
roslaunch darknet_ros darknet_ros.launch

出现对摄像头采集图像的实时检测结果。

 

能够看到检测的结果仍是有很大问题的!!

咱们只须要把预训练集换成YOLO v3的来检测就能够了,更换以下:找到config文件能够看到以下的训练集

 打开launch文件

修改 darknet_ros.launch
 

arg name="network_param_file"         default="$(find darknet_ros)/config/yolov2-tiny.yaml"/

改成

arg name="network_param_file"         default="$(find darknet_ros)/config/yolov3.yaml"/

以下:

 而后从新启动:

roslaunch darknet_ros darknet_ros.launch

 检测结果以下:

多来几张结果:

 

后续有时间会尝试制做如何训练本身的训练集并在ROS下进行检测使用,谢谢!

相关文章
相关标签/搜索