无人机目标检测 Darknet-ROS 学习(三)
上一节已经讲解了Darknet-ROS项目工程里各个文件的大致作用以及ROS节点之间的相互关系,希望可以帮助理解yolo是如何在ROS平台上运行的。这一节来更加细致的学习一下相机D455
和yolo
的使用以及Darknet-ROS
的运行。
整体结构
首先还是回到上一节的那张图:
其中主要的节点为camera
和darknet_ros
(以下简称为darknet节点),流程其实非常简单,camera节点中其他三个部分都是相机的驱动和管理,最重要的一部分就是/camera/color/image_raw
,这个是相机的视频流,然后将该信息流传入darknet节点,与此同时yolo算法以检测器
的形式在darknet节点上处理这些信息流的数据,实现实时的目标检测。
运行项目的时候要将上一节提到的对应的yaml
文件中的camera_reading
中的topic
改成/camera/color/image_raw
相机安装以及使用
一般来说,使用的相机分为两种,一种是USB驱动的相机,另一种就是双目相机,例如D455,它是由realsense-SDK驱动,可以提供点云,单/双目视觉图像以及IMU信息。这里我们主要使用他的单目视觉图像。
相机的基本配置如下,这篇介绍的非常详细了:realsense
注意
:
- 终端运行
realsense-viewer
,如果成功出现Intel
的标志就算安装成功 - 最好不要使用
扩展器
连接相机,可能会出现连接问题,可以使用ls /dev/video*
命令来检查相机是否连接
启动相机:
roscore
# 在相机所在的ROS工作空间下新开一个终端
source devel/setup.bash #每启动一个新终端都要执行这一句才能运行项目中的相关节点
roslaunch realsense_camera rs_camera.launch # 此时相机已经启动,可以看到相机镜头里有红点闪烁
如果想将相机可视化,启动rviz,添加/camera/color/image_raw
的topic
(非必要)
yolov4-tiny
经过上述步骤,已经成功运行了相机节点camera,接下来就是将yolo应用到camera传输的视频流上。运行如下:
# 在Darknet_ros文件夹下新开一个终端
source devel/setup.bash
roslaunch darknet_ros yolov4_tiny.launch
完成后即可看到结果
这里yolov4_tiny是我自己加入到darkent中的,加入的方法如第二节中所示,需要添加.cfg
,.weight
文件以及.yaml
和. launch
文件,其中.launch文件需要改一下调用的文件路径。
需要注意的是yolov4_tiny有两种不同的情况,分别是voc数据集训练的和coco数据集训练的,不同在于voc有20个class,coco多达80个class
这里不同数据集训练出来的.cfg
,.weight
文件不一样,同时.yaml
文件的类别数也不同,如果这三个文件不能匹配,则会出现网络加载不出来
或者运行到一半闪退
的情况
效果
(某些地方涉及个人隐私已打码,未用电脑截屏所以比较模糊)
结论
根据测试,有一个比较模糊的比较,平台是TX2
算法 | FPS |
---|---|
yolov2_tiny | 17~18 |
yolov3 | 1.8~2.0 |
yolov4_tiny | 23~24 |
本节内容到此结束,后续将会继续学习YOLOv4和tiny版本的优势