Darknet——yolo3训练自己的数据集+在ros环境下实现目标检测实战教程(三)——应用在ROS上

文章目录

  • 前言
  • 一、darknet_ros代码简析
  • 二、修改ros驱动包的文件内容
  • 三、ros系统下运行效果
  • 总结


前言

Darknet——yolo3训练自己的数据集+在ros环境下实现目标检测实战教程(一)——环境配置

Darknet——yolo3训练自己的数据集+在ros环境下实现目标检测实战教程(二)——训练自己的权重文件

在前文的环境配置工作和简单测试之后,制作了自己的数据集并训练了自己的权重文件,接下来是将这个网络模型,应用到ros上。


提示:以下是本篇文章正文内容,下面案例可供参考

一、darknet_ros代码简析

darknet_ros就是darknet在ros操作系统下的版本,即在ros下使用yolo进行目标检测。

文件分类:.launch文件是ros格式的roslaunch文件;

src文件夹下的就是它的主要代码,把ros和darknet结合起来的部分;

cfg文件是放各种yolo网络的配置,weights文件夹是放置网络权重。

这些yaml文件是设置ros参数以及决定在ros下调用darknet的哪些配置文件和权重。ros.yaml如下:

Darknet——yolo3训练自己的数据集+在ros环境下实现目标检测实战教程(三)——应用在ROS上_第1张图片

二、修改ros驱动包的文件内容

需要进行一些路径和配置文件的修改。

1.在路径catkin_workspace/src/darknet_ros/darknet_ros/yolo_network_config里面有两个文件夹cfg和weights,把之前用到的yolov3-tiny.cfg文件和训练好的权重文件赋值到相应的文件夹。

2.在路径catkin_workspace/src/darknet_ros/darknet_ros/config中修改ros.yaml文件,主要是修改订阅的话题和发布的话题,这里订阅的话题要改成摄像头发布出来的话题:

subscribers:

  camera_reading:
    topic: /usb_cam/image_raw
    queue_size: 1

3.新建一个.yaml文件yolov3-tiny.yaml,自定义内容框架如下:

yolo_model:
  config_file:
    name: yolov3-tiny.cfg
  weight_file:
    name: yolov3-tiny_900.weights
  threshold:
    value: 0.3
  detection_classes:
    names:
      - sanbing
      - ball

4.修改launch文件,进入路径catkin_workspace/src/darknet_ros/darknet_ros/launch

将darknet_ros.launch里面network_param_file修改为自己的yolov3-tiny.yaml,如下:


  
  

这样就修改完了,做好了所有的准备工作。

三、在ROS系统下运行效果

在ros下运行:

$ roslaunch usb_cam usb_cam-test.launch//开启摄像头驱动
$ roslaunch darknet_ros darknet_ros.launch//启动darknet

图片测试效果:

Darknet——yolo3训练自己的数据集+在ros环境下实现目标检测实战教程(三)——应用在ROS上_第2张图片

Darknet——yolo3训练自己的数据集+在ros环境下实现目标检测实战教程(三)——应用在ROS上_第3张图片

 视频实时测试:

 输入如下命令可以看到darknet_ros发布出来的bounding_boxes节点消息:

$rostopic echo /darknet/bounding_boxes

总结

该实战系列从环境配置到利用yolov3-tiny网络模型训练自己的权重文件,到应用在ros系统下测试了效果,darknet作为轻量级深度学习框架,可以很好的部署和移植到ros系统下。该过程中的每一个坑都来自的亲身经历,在此分享给大家。

你可能感兴趣的:(深度学习,深度学习,linux)