文章目录
前言
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如下:
二、修改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 and network parameter files -->
<arg name="ros_param_file" default="$(find darknet_ros)/config/ros.yaml"/>
<arg name="network_param_file" default="$(find darknet_ros)/config/yolov3-tiny.yaml"/>
这样就修改完了,做好了所有的准备工作。
三、在ROS系统下运行效果
在ros下运行:
$ roslaunch usb_cam usb_cam-test.launch//开启摄像头驱动
$ roslaunch darknet_ros darknet_ros.launch//启动darknet
图片测试效果:
视频实时测试:
输入如下命令可以看到darknet_ros发布出来的bounding_boxes节点消息:
$rostopic echo /darknet/bounding_boxes
总结
该实战系列从环境配置到利用yolov3-tiny网络模型训练自己的权重文件,到应用在ros系统下测试了效果,darknet作为轻量级深度学习框架,可以很好的部署和移植到ros系统下。该过程中的每一个坑都来自的亲身经历,在此分享给大家。