【UAV】基于射频和深度学习的无人机检测与识别:构建大型开源无人机数据库的初步探索【附MATLAB+python代码】

【UAV】基于射频和深度学习的无人机检测与识别:构建大型开源无人机数据库的初步探索【附MATLAB+python代码】
文章来源:微信公众号:EW Frontier
QQ交流群:1074124098(如满私信留言获取最新群)
注:本文为参考文章~代码为对其部分内容进行复现~
若有侵权联系删除。

摘要

民用无人机的普及可能引发技术、安全和公共安全问题,这些问题亟待解决、规范和预防。安全机构一直在不断探索能够检测无人机的技术和智能系统。然而,相关技术的突破因缺乏无人机射频信号开源数据库而受阻,这些射频信号可通过远程传感和存储,为开发最有效的无人机检测与识别方法提供支持。本文为构建不同飞行模式下各类无人机射频信号数据库迈出了重要一步。我们系统地收集、分析并记录了不同无人机在不同飞行模式(如关闭、开启并连接、悬停、飞行和视频录制)下的原始射频信号。此外,我们利用所开发的射频数据库设计了智能算法,用于检测和识别入侵无人机。研究采用三个深度神经网络,分别实现无人机存在检测、无人机存在及类型识别,以及无人机存在、类型及飞行模式识别。通过 10 折交叉验证过程验证每个深度神经网络的性能,并使用多种指标进行评估。分类结果显示,随着类别数量的增加,性能普遍下降。平均准确率从第一个深度神经网络(2 类)的 99.7% 降至第二个深度神经网络(4 类)的 84.5%,最后降至第三个深度神经网络(10 类)的 46.8%。尽管如此,所设计方法的结果证实了所开发的无人机射频数据库用于检测和识别的可行性。所开发的无人机射频数据库及其实现已公开,供学生和研究人员使用。

引言

近年来,商用无人机凭借成本更低、尺寸更小、重量更轻、功能更强以及电池和电机技术的进步,获得了极大的普及。这使得无人机在交通监控、天气观测、灾害管理、农业化学品喷洒、基础设施检查以及火灾检测与防护等多种应用中具有可行性。无人机通过蓝牙、4G 和 WiFi 等无线技术进行远程控制,因此,通过现成的升级设备,无人机已成为一种模块化解决方案。无人机的广泛应用可能引发技术、安全和公共安全问题,这些问题需要加以解决、规范和预防,例如间谍活动、非法或危险物品运输、干扰电力和电话线以及袭击等。因此,监管机构需要能够在不事先假设无人机类型或飞行模式的情况下检测和识别无人机的技术。

传统的检测和识别入侵无人机的方法,如雷达、视觉和声学方法,并非完全可靠,因为它们容易受到限制。射频传感与深度学习方法相结合有望提供解决方案,但由于缺乏无人机射频信号数据库而受阻。在本文中,我们一方面构建了一个新的开源数据库,用于存储不同飞行模式下各类无人机的射频信号;另一方面,在利用深度神经网络设计的无人机检测和识别系统中测试了所开发的数据库。这项工作是朝着由研究人员社区构建更大数据库的方向迈出的一步,该数据库将包含更多其他无人机的射频信号。

本文的其余部分结构如下:第 2 节是相关工作概述。第 3 节我们介绍系统模型,并描述构建和测试数据库的方法。第 4 节我们展示并讨论无人机检测和识别系统的结果,最后在第 5 节得出结论。

文章插图

结论

随着无人机在民用领域越来越受欢迎,监管机构需要能够检测和识别入侵无人机的智能系统。然而,此类系统的设计因缺乏大型带标签的开源数据库而受阻。这项工作通过开发无人机射频通信数据库为实现这一目标做出了贡献,研究人员和学生可以进一步扩展该数据库。所开发的数据库包含不同飞行模式下各类无人机的射频信号,因此可用于测试和验证智能算法,并可用于设计无人机检测和识别系统。

我们收集、分析并记录了不同无人机在不同飞行模式(如关闭、开启并连接、悬停、飞行和视频录制)下的原始射频信号。之后,为了测试所开发数据库的可行性,我们使用深度神经网络检测和识别入侵无人机,并确定其飞行模式。我们设计、验证和评估了三个深度神经网络,分别执行以下任务:检测无人机的存在、检测无人机的存在并识别其类型,以及检测无人机的存在、识别其类型并确定其飞行模式。

所开发系统的结果显示,随着类别数量的增加,性能普遍下降。平均准确率从第一个深度神经网络(2 类)的 99.7% 降至第二个深度神经网络(4 类)的 84.5%,最后降至第三个深度神经网络(10 类)的 46.8%。结果表明,这种下降是由于某些无人机(如 Bebop 和 AR 无人机)的射频频谱存在相似性,因为它们由同一家公司制造。这带来了一个具有挑战性的障碍,可以通过更深层次的神经网络或其他先进的分类算法来缓解。尽管如此,所开发的无人机检测和识别系统的结果证实了所开发的数据库用于测试和验证智能算法以及设计先进的无人机检测和识别系统的可行性。所开发的无人机射频数据库是开源的,可在相关平台获取,同时还提供了重现本工作结果所需的所有实现。

未来,研究人员可以从所开发的无人机射频数据库中提取特征用于检测,并将其结果与我们系统的结果进行比较。此外,所开发的数据库可用于训练和测试不同的检测器和网络架构,以系统地找到最佳的检测和识别系统。此外,将所开发的数据库与其他无人机检测方式(如相机图像和视频、雷达回波和声学记录)相融合,可以通过利用每种方式的优势来改善检测和识别系统的性能。研究人员和学生可以通过多种方式扩展所开发的数据库,例如:研究其他分类算法;通过增强(如添加信道衰落或噪声)扩展所开发的数据库;使用其他无人机进行相同的实验;研究射频干扰和噪声对无人机检测和识别的影响;进行室内和室外飞行实验;改变无人机速度和与射频接收器的距离等。

数据集简介

本文档中的附加材料由 [1] 的作者提供,旨在帮助读者更好地理解所开发的数据库以及如何将其用于无人机检测和识别应用。无人机原始射频数据库可通过 [2] 中的 OneDrive 链接获取。

以下列出的 MATLAB 和 Python 脚本位于 GitHub 代码库中,用于生成论文中展示的结果和辅助图表。请按顺序运行以下脚本,从零开始重新生成我们的所有结果。

主要脚本:

Main_1_Data_aggregation.m

  • 描述:该脚本生成 MATLAB 格式的数据,供后续的 Main_2_Data_labeling.m 和 Demo_3_Analysis.m 脚本使用。
  • 流程:加载原始射频数据,将其按 100 倍重新分段,使用 2048 个样本转换到频域,并将结果以 MATLAB 数据格式聚合,生成以下文件名:00000.mat、10000.mat、10001.mat、10010.mat、10011.mat、10100.mat、10101.mat、10110.mat、10111.mat 和 11000.mat。

Main_2_Data_labeling.m

  • 描述:该脚本生成 csv 格式的数据,供后续的 Classification.py 使用。
  • 流程:加载由 Main_1_Data_aggregation.m 生成的 MATLAB 数据文件,对其进行归一化处理,将其拼接成矩阵,添加分类标签,并保存为名为 RF_Data.csv 的 csv 文件。

Classification.py

  • 描述:该脚本生成 csv 格式的数据,供后续的 Demo_4_Classification.m 使用。
  • 流程:加载由 Main_2_Data_labeling.m 生成的 csv 数据文件,提取射频数据和标签,然后训练三个深度神经网络(DNN)对射频数据进行分类。使用分层 10 折交叉验证方法对深度神经网络进行交叉验证。计算每个折的预测标签,并将其保存为 csv 格式的数据文件。

演示脚本:

Demo_1_Database_details.m

  • 描述:该脚本生成 [1] 中论文表 4 所展示的结果。
  • 流程:计算每个实验级别下每个类别的原始样本数量和分段数量。然后,显示计算出的详细信息以及类别大小比例,以检查类别不平衡问题。

Demo_2_Snippets.m

  • 描述:该脚本生成 [1] 中论文图 11 所展示的结果。
  • 流程:加载所采集的射频背景活动的第 5 个分段、Bebop 无人机飞行并录制视频时所采集射频信号的第 10 个分段,以及 Phantom 无人机开启并连接时所采集射频信号的第 7 个分段。然后,对每个分段的振幅进行归一化处理,并绘制归一化后的射频信号。

Demo_3_Analysis.m

  • 描述:该脚本生成 [1] 中论文图 12 所展示的结果。
  • 流程:加载由 Main_1_Data_aggregation.m 生成的 MATLAB 数据文件。然后,对每个频谱的所有实例取平均值,并使用 10 点移动平均滤波器对其进行平滑处理。接着,绘制平均平滑后的频谱及其箱线图。最后,询问用户是否将结果保存为 PDF 格式的图像。通过将 “opt” 参数从 1 改为 2,最后改为 3,可以生成图 12 中每列的结果。

Demo_4_Classification.m

  • 描述:该脚本生成 [1] 中论文图 13 所展示的结果。
  • 流程:加载由 Classification.py 生成的 csv 数据文件。然后,拼接所有预测标签,并使用 MATLAB 函数 plotconfusion_mod 计算相应的混淆矩阵。最后,询问用户是否将结果保存为 PDF 格式的图像。通过将 “opt” 参数从 1 改为 2,最后改为 3,可以生成图 13 中每列的结果。

函数:

plotconfusion_mod

  • 描述:该函数是 MATLAB 内置函数 plotconfusion 的修改版本。
  • 流程:计算常规的混淆矩阵,但使用自定义字体,并附加额外结果,即 F1 分数。详见 [1] 中的 3.3.4 节。

参考文献

[1] M. Al-Sa'd 等. 《基于射频和深度学习的无人机检测与识别:构建大型开源无人机数据库的初步探索》,2019 年。

[2] 无人机原始射频数据库:https://tutfi-my.sharepoint.com/:f:/g/personal/mohammad_alsad_tut_fi/EtEuLLSAO9ROlefSh8Nzb18BswRNTo9vOUzE94rRjhrrxQ?e=n2H1je。

[3] M. F. Al-Sa’d, A. Al-Ali, A. Mohamed, T. Khattab,所采集的无人机射频数据库及所用软件,在线(2019 年)。网址:https://al-sad.github.io/DDI_Software/。

Read more

ollama 模型管理、删除模型 、open-webui 开启大模型交互

ollama 模型管理、删除模型 、open-webui 开启大模型交互

文章目录 * ollama 基本信息 * ollama 运行模型 * ollama 模型管理 * 🔧 **方法一:使用命令行删除单个模型** * ⚙️ **方法二:批量删除所有模型** * 🗑️ **方法三:彻底卸载 Ollama(含所有数据)** * ⚠️ **注意事项** * ✅ **验证是否删除成功** * open-webui 安装 开启大模型交互 * open-webui pip 安装 * open-webui 启动服务 * 浏览器访问 http://IP:8082/ : * ❤️ 时不我待,一起学AI ollama 基本信息 * https://ollama.com/ ollama 运行模型 命令行执行即可 0.6B parameter model ollama run qwen3:0.6b 1.7B

前端引入的JS加载失败页面功能无法使用?JS加载失败的终极解决方案

前端引入的JS加载失败页面功能无法使用?JS加载失败的终极解决方案

🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Micro麦可乐的博客 🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战 🌺《RabbitMQ》专栏19年编写主要介绍使用JAVA开发RabbitMQ的系列教程,从基础知识到项目实战 🌸《设计模式》专栏以实际的生活场景为案例进行讲解,让大家对设计模式有一个更清晰的理解 🌛《开源项目》本专栏主要介绍目前热门的开源项目,带大家快速了解并轻松上手使用 🍎 《前端技术》专栏以实战为主介绍日常开发中前端应用的一些功能以及技巧,均附有完整的代码示例 ✨《开发技巧》本专栏包含了各种系统的设计原理以及注意事项,并分享一些日常开发的功能小技巧 💕《Jenkins实战》专栏主要介绍Jenkins+Docker的实战教程,让你快速掌握项目CI/CD,是2024年最新的实战教程 🌞《Spring Boot》专栏主要介绍我们日常工作项目中经常应用到的功能以及技巧,代码样例完整 👍《Spring Security》专栏中我们将逐步深入Spring Security的各个

Web 服务与 I/O 模型

一、Web 服务介绍 1.1.1 Apache prefork 模型(预派生模式) * 核心机制:主控制进程派生多个独立子进程,使用select模型,最大并发 1024;每个子进程单线程响应用户请求 * 资源特性:占用内存较多,但稳定性极高 * 配置特点:可设置进程数的最大值和最小值 * 适用场景:访问量中等的场景 * 优缺点 * ✅ 优点:极致稳定,故障隔离性好 * ❌ 缺点:每个请求对应一个进程,资源占用高,并发能力弱,不适合高并发场景 1.1.2 Apache worker 模型(多进程 + 多线程混合模式) * 核心机制:主进程启动多个子进程,每个子进程包含固定线程数;线程处理请求,线程不足时新建子进程补充 * 资源特性:相比 prefork 内存占用更少,支持更高并发

openTCS WEB接口实战:从基础调用到自定义指令开发

1. 为什么你需要关注openTCS的WEB接口? 如果你正在接触AGV、RGV或者四向车这类自动化搬运设备的调度系统,那你大概率听说过openTCS。它是一个开源的交通控制系统,简单说,就是给这些“小车”当大脑的。我之前做项目,经常遇到一个头疼的问题:调度系统的功能很强大,但怎么才能让我们的前端页面或者别的系统(比如WMS仓库管理系统)方便地去指挥它呢?难道每次都要后端写一堆复杂的桥接代码吗? 这就是openTCS WEB接口的价值所在。在早期的版本里,和openTCS交互主要靠RMI(远程方法调用),这玩意儿基本就把你锁死在Java技术栈里了,前端同学想直接调个接口看看车辆状态?门都没有。后来官方终于补上了WEB API这块短板,用标准的HTTP协议暴露了一系列接口,这下子世界就开阔了。你的前端Vue/React项目、Python写的数据分析脚本、甚至手机APP,都能通过发送HTTP请求,直接获取车辆位置、下发移动指令、查询订单状态。这不仅仅是技术栈的解放,更是系统架构的松绑,让调度核心和业务应用能更清晰、更灵活地解耦。 所以,无论你是想做一个炫酷的实时监控大屏,还是要集成复