<link rel="stylesheet" href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/ck_htmledit_views-b5506197d8.css">
<div id="content_views" class="htmledit_views">
<p> 最近用自己的渣渣笔记本电脑跑了一下yolo目标检测在ROS中的实现,实现了用摄像头进行目标检测的任务。以下为笔记,防止遗忘。</p>
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
参考网址: