无人机目标检测 Darknet-ROS 学习(二)

无人机目标检测 Darknet-ROS 学习(二)

上节我们已经安装好ROS,今天来看看如何在ROS环境下进行目标检测。最常使用的目标检测算法就是yolo,如今yolo算法已经发展非常成熟了,这次我们选择使用yolo v4 tiny来进行目标检测。

Darknet

Darknet是一个深度学习框架,类似于Pytorch,但是不同在于他是基于C和CUDA。Darknet可以看做是一个平台yolo在这个平台上运行。那么为什么是Darknet呢?原因如下:

  • 轻量级,非常容易安装,可移植性好
  • 因为基于C,所以非常适合移动端的部署以及底层研究
  • 支持CPU和GPU,与caffe较为类似

下载Darknet ROS

我们想要在ROS环境下运行Darknet就需要将Darknet移植到ROS上,Darknet-ROS已经在Github上有开源的程序,我们先将其下载,首先创建一个catkin_ws文件夹作为工作空间,再在这个文件夹中创建一个src保存Darknet-ROS的源码,在catkin_ws/src文件夹下右键打开终端,克隆源码,输入:

git clone https://github.com/Tossy0423/yolov4-for-darknet_ros.git

该项目包含darknet的源码以及yolo系列网络的各种配置文件

在clone的过程中会遇到下载很慢的问题,主要原因是yolo系列网络的权重文件太大,这时可以先将weight文件下载好再进行clone,下载weight文件可以在这个链接里下载,直接在浏览器中打开即可:https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v3_optimal/yolov4.weights
放在darknet_ros/darknet_ros/yolo_network_config/weights文件夹下,这个文件夹专门保存yolo的权重文件

Darknet_ROS的文件结构

众所周知。Darknet_ROS这个项目的目的就是在ROS环境下运行Darknet,这无疑说明Darknet在ROS中是以节点形式存在的,如图:
ros节点关系图
其中相机的视频流和Darknet节点之间相互通信实现目标检测。接下来进入正题,Darknet_ROS项目工作空间是catkin_ws文件夹,该项目两个文件夹最重要,分别是:

  • catkin_ws/src/darknet_ros/darknet
  • catkin_ws/src/darknet_ros/darknet_ros
    第一个文件夹下就是darknet平台的源码,运行darknet时使用到的就是这里面的代码,其中有一个名为darknet的可执行文件。

第二个文件夹下则是ROS节点的相关内容和yolo网络的相关文件。先来看yolo相关的文件夹:

  • yolo_network_config
  • include
  • src

yolo_network_config文件夹中有两个重要文件夹cfgweights文件夹,这也是darknet平台下一个网络最重要的两个文件.cfg.weights文件,前者定义网络结构,后者表示网络训练得到的权重,用来预测。

后两个文件夹则是将yolo预测过程封装成了一个检测器,include中是头文件,src中是源码。

其次是ROS相关文件夹:

  • config
  • launch

这两个文件夹下分别是.yaml配置文件和.launch运行文件,.yaml配置文件告诉ROS该加载哪个网络的参数以及class各个类别。.launch文件如果学过上一节的21讲就知道他可以同时启动多个ROS节点,相当于exe可执行文件。

本节内容到此结束,下节将学习D455相机如何配置以及整个项目如何运行。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2022年5月25日
下一篇 2022年5月25日

相关推荐