SpireCV真实用!国产无人机自动灭火So easy!

随着无人机目标识别跟踪功能逐渐火热,其运用场景也日益增多,比如车辆识别、火源识别等。那么,如何才能快速且简便地掌握这一技术呢?本文将通过具体的场景实验为你详细介绍如何使用SpireCV实现对特定火源目标的点击跟踪功能,从而实现自动灭火。

SpireCV功能概述

SpireCV是一个专为智能无人系统打造的边缘实时感知SDK,主要功能包括相机/吊舱控制、视频保存与推流、目标探测识别与跟踪、边缘数据管理迭代等多项功能。

【全新开源项目】专为智能无人系统打造的边缘实时感知 SDK 库 SpireCV 正式上架

实验介绍

本次实验我们将使用无人机配备SpireCV套件识别跟踪火源,并搭载灭火弹进行投放灭火操作。

SpireCV操作流程

简单分为四个步骤:数据采集、SpireView标注、模型训练和部署。

1、数据采集

前期我们需要先对待识别目标进行特征数据的采集,具体有以下两种方式:

相机进行火源视频采集拍摄
SpireCV进行火源视频录制保存

使用视频保存类“sv::VideoWriter”进行视频+识别信息的本地化保存,主要实现代码如下:

// 实例化视频保存类
sv::VideoWriter vw;
// 设置保存路径"~/Videos",保存图像尺寸(640,480),帧频25Hz,同步保存检测结果(.svj)
vw.setup(sv::get_home() + "/Videos", cv::Size(640, 480), 25, true);
while (1)  // 在循环中保存 图像img 和 识别信息tgts
{
// 同步保存视频流 和 检测结果信息
vw.write(img, tgts);
}

以目标检测为例,生成的视频+检测结果保存在“/home/amov/Videos”路径,文件如下:

2、SpireView标注

首先使用SpireView将视频数据转换为图像,再对每一张图像再进行标注。由于该步骤涉及到输出图像数据,因此我们先在“Tools-Setting”设置好保存路径。

点击查看“路径保存”操作教程
视频转图像

点击“Input-Video”打开视频,然后点击“Tools-Video to Image”。这里可以通过调整“Frame gap”参数来决定图像抽取的疏松或者密集。比如“Frame gap”为“0”时,则每一帧的图像都会进行保存;为“30”时,则一秒钟保存一张图像。

点击查看“视频转图像存”操作教程
方框标注

接下来我们对这些图像进行方框标注,打开“Input-image Dir”图像文件夹(即上述步骤视频里截取的图像),点击“Tools-Box Label”,填写待标注的类别名称“fire”,开始进行方框标注。此时若切换到下一张图像,则上一张标注图将自动保存。

点击查看“方框标注”操作教程
格式输出

完成全部标注后,“Ctrl+O”选择标注格式并输出结果。此处我们选择“Yolo detection format”,点击“OK”,在保存路径下生成YOLO格式训练文件。

对于YOLO训练来说,我们需要“scaled_images”文件夹、“Yolo_labels”文件夹和“Yolo_categories.names”文件。

点击查看“格式输出”操作教程

3、模型训练

在本次的实验环境中,我们在Allspark 2机载电脑中搭载了SpireCV训练自定义检测器的环境。通过Allspark 2机载电脑直接开始训练我们的火源识别模型,优化其准确性和效率。

点击查看“模型训练”操作教程

4、模型部署

在Allspark 2机载电脑上训练完自定义的检测模型后,我们可以直接在该平台上将训练好的模型进行两次转换。先将训练好的“pt模型”转为“wts”,然后利用SpireCV的“SpireCVDet”,将其转为“engine”,来实现火源模型的实时推理,确保它能够在无人机上高效运行。

点击查看“模型部署(pt模型→wts模型)”操作视频
点击查看“模型部署(wts模型→engine模型)”操作视频

室外实测

在完成所有准备工作后,我们将Allspark 2机载电脑和G1吊舱加装到无人机上,选取室外环境进行实测,验证它识别火源的效果。

此外,我们收集整理了关于本次实验的 “火源数据集”,如果各位开发者感兴趣,可以在联系客服助手(17360163433),我们将免费提供给大家~

总结

本次实战演示,我们通过SpireCV来实现了目标点击跟踪功能的操作流程,希望能对大家的学习有所帮助。SpireCV还支持多种应用场景,感兴趣的开发者欢迎关注我们的SpireCV开源项目。


SpireCV项目地址:https://gitee.com/amovlab/SpireCV