ros实现darknet-yolo

本文介绍了在Ubuntu 16.04 LTS + ROS环境下,如何利用Yolo进行目标检测。步骤包括创建catkin工作空间,下载darknet_ros并配置权重文件,修改ros.yaml配置,最终通过三个终端启动roscore、usb_cam及darknet_ros来实现摄像头目标检测。注意调整摄像头话题和权重文件路径。
摘要由CSDN通过智能技术生成
    <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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最近用自己的渣渣笔记本电脑跑了一下yolo目标检测在ROS中的实现,实现了用摄像头进行目标检测的任务。以下为笔记,防止遗忘。</p> 

1、使用的环境和平台

        Ubuntu 16.04 LTS + ROS + Yolo

2、实现具体流程

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


 
 
  1. $ mkdir -p catkin_ws/src
  2. $ cd src/
  3. $ catkin_init_workspace1
  4. $ cd ..
  5. $ 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修改为自己的摄像头话题:


 
 
  1. subscribers:
  2. camera_reading:
  3. topic: /usb_cam/image_raw
  4. queue_size: 1

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

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


 
 
  1. $ roscore
  2. $ roslaunch usb_cam usb_cam-test.launch
  3. $ 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检测自己的图片

 

转载:https://blog.csdn.net/JIEJINQUANIL/article/details/102756131
ROS(Robot Operating System)中,YOLO(You Only Look Once,一种实时目标检测算法)通常作为图像处理节点(image processing node)的一部分来集成。以下是基本步骤: 1. **安装依赖**:首先需要在ROS环境中安装YOLO相关的库和工具,比如 OpenCV 和 DarknetYOLO实现)。可以使用`apt-get`或`pip`等包管理工具安装。 ```bash sudo apt-get install ros-<ros_distro>-opencv2 pip install darknet ``` 注意替换 `<ros_distro>` 为你的ROS发行版,如`melodic`, `noetic`, 等等。 2. **下载预训练模型**:从Darknet官方或者其他地方下载预先训练好的YOLO模型权重文件(一般是`.weights`格式)。 3. **编写节点**:创建一个新的ROS节点,例如使用Python,你可以利用`cv_bridge`转换图像数据格式,并调用Darknet库来进行预测。这里有一个简单的示例,展示了如何读取图片并运行YOLO: ```python import cv2 from cv_bridge import CvBridge, CvBridgeError from darknet_ros_msgs.msg import BoundingBoxes def detect_objects(image_message): bridge = CvBridge() try: image = bridge.imgmsg_to_cv2(image_message, "bgr8") except CvBridgeError as e: print(e) return # 调用YOLO进行检测 boxes = yolov4.detect_image(image) # 发布检测结果 publish_detection_results(boxes) # ...其他部分省略... ``` 4. **发布消息**:检测到物体后,你需要将`BoundingBoxes`消息类型发送回ROS网络,以便其他的节点(如有必要)可以订阅并处理这些信息。 5. **订阅图像源**:确保你的节点订阅了正确的图像话题,通常是`/camera/image_color`或`/usb_cam/image_raw`这类。 6. **启动节点**:最后,使用`roslaunch`或其他方式启动你的YOLO节点,让它开始监听并处理图像。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值