在ROS中实现基于darknet_ros的目标检测

        最近用自己的渣渣笔记本电脑跑了一下yolo目标检测在ROS中的实现,实现了用摄像头进行目标检测的任务。以下为笔记,防止遗忘。

1、使用的环境和平台

        Ubuntu 16.04 LTS + ROS + Yolo

2、实现具体流程

(1)建立名为catkin_ws的工作空间:

$ mkdir -p catkin_ws/src
$ cd src/
$ catkin_init_workspace1
$ cd ..
$ catkin_make

当然也可以命名为其他的名称,如yolo_ws等。

(2)下载darknet_ros压缩包(网址:darknet_ros),解压后,将catkin_darknet/src内的文件拷贝到刚才创建的src文件夹下。

(3)在catkin_darknet/src/darknet_ros路径下有一个darknet.zip的压缩包,把它解压到当前目录下即可,并将文件夹名称改为darknet,里面放的是yolo算法的源代码。

(4)将usb_cam.tar.gz解压到当前文件夹下,名称不用改。

(5)在catkin_darknet/src/darknet_ros/darknet_ros/yolo_network_config/weights目录下应该放你用yolo训练的权重文件,或者直接下载预训练好的权重放这里即可,权重的下载地址(yolo_weights),本实验只下载了一个较小的权重(yolov2-tiny.weights)进行实验,如有必要,可以下载其他的权重。

(6)进入/darknet_ros/config,打开ros.yaml,将/camera/image修改为自己的摄像头话题:

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

(7)回到工作空间路径(catkin_ws)下,直接编译,即catkin_make;

(8)依次打开三个终端,分别执行如下指令(执行之前需要先$ source devel/setup.bash添加环境变量):

$ roscore
$ roslaunch usb_cam usb_cam-test.launch
$ roslaunch darknet_ros darknet_ros.launch

        不出意外,可以看到有“视频流”,以及Yolo检测到的目标。

3、注意事项

(1)ros.yaml文件中的订阅者(subscribers)下的camera_reading主题为/camera/image,那么如果使用视频采集则会提示:Waiting for image,改为/usb_cam/image_raw后,则可以对视频进行人脸检测。

(2)权重下载位置:

        yolo-voc.weights和tiny-yolo-voc.weights这两个权重在程序编译的过程中会自动进行下载(详见CMakeLists.txt文件)。当然也可以自己提前下载好权重文件,放入权重文件夹中(/catkin_ws/src/darknet_ros/darknet_ros/yolo_network_config/weights)。以下是权重的下载地址

yolov2.weights
yolov2-tiny.weights

yolov2-voc.weights
yolov2-tiny-voc.weights
yolov3.weights

参考网址:

darknet_ros检测自己的图片

 

你可能感兴趣的:(ROS学习)