当前位置: 首页 > news >正文

基于matlab使用机器学习和深度学习进行雷达目标分类

一、前言

此示例展示了如何使用机器学习和深度学习方法对雷达回波进行分类。机器学习方法使用小波散射特征提取与支持向量机相结合。此外,还说明了两种深度学习方法:使用SqueezeNet的迁移学习和长短期记忆(LSTM)递归神经网络。请注意,此示例中使用的数据集不需要高级技术,但描述了工作流,因为这些技术可以扩展到更复杂的问题。

二、介绍

目标分类是现代雷达系统的重要功能。此示例使用机器学习和深度学习对圆柱体和锥体的雷达回波进行分类。虽然此示例使用合成的I/Q样本,但工作流程适用于实际雷达回波。

三、RCS 合成

下一节介绍如何创建合成数据来训练学习算法。

以下代码模拟半径为 1 米、高度为 10 米的圆柱体的 RCS 模式。雷达的工作频率为850 MHz。

然后可以将该模式应用于反向散射雷达目标,以模拟从不同角度返回。下图显示了如何模拟一段时间内圆柱体的 100 次返回。假设下方的圆柱体运动在孔视线周围引起小振动,因此,纵横角从一个样品到下一个样品发生变化。

锥体的返回可以类似地生成。为了创建训练集,对 5 个任意选择的圆柱半径重复上述过程。此外,对于每个半径,通过改变入射角来模拟 10 个运动剖面,遵循 10 条随机生成的围绕视线的正弦曲线。每个运动配置文件中有 701 个样本,因此有 701 x 50 个样本。对圆柱目标重复该过程,这将产生具有 701 个圆柱体和 100 个圆锥轮廓的 50 x 50 训练数据矩阵。在测试集中,我们使用 25 个圆柱体和 25 个锥体轮廓来创建 701 x 50 的训练集。由于计算时间较长,训练数据在下面预先计算并加载。

例如,下图显示了每个形状的一个运动轮廓的返回。这些图显示了入射方位角和目标返回的值如何随时间变化。

四、小波散射


在小波散射特征提取器中,数据通过一系列小波变换、非线性和平均来传播,以产生时间序列的低方差表示。小波时间散射产生的信号表示对输入信号的变化不敏感,而不会牺牲类的可判别性。

在小波时间散射网络中要指定的关键参数是时间不变的尺度、小波变换的数量以及每个小波滤波器组中每个倍频程的小波数量。在许多应用中,两个滤波器组的级联足以实现良好的性能。在这个例子中,我们用两个滤波器组构建了一个小波时间散射网络:第一个滤波器组中每倍频程 4 个小波,第二个滤波器组中每倍频程 2 个小波。不变性标度设置为701个样本,即数据的长度。

接下来,我们获得训练集和测试集的散射变换。对于此示例,请使用沿每条路径获取的散射系数的平均值。创建用于培训和学习的标签。

五、模型训练


将具有二次核的支持向量机模型拟合到散射特征,并获得交叉验证精度。

六、目标分类


使用经过训练的 SVM,对从测试集获得的散射特征进行分类。

绘制混淆矩阵。

对于更复杂的数据集,深度学习工作流可能会提高性能。

七、使用 CNN 进行迁移学习


SqueezeNet 是一个深度卷积神经网络 (CNN),用于 ImageNet 大规模视觉识别挑战赛 (ILSVRC) 中使用的 1,000 个类的图像。在这个例子中,我们重用预先训练的SqueezeNet来分类属于两类之一的雷达回波。

负载挤压网。

挤压网由68层组成。与所有DCNN一样,SqueezeNet级联卷积运算符,然后是非线性和池化或平均。SqueezeNet 需要大小为 227 x 227 x 3 的图像输入,您可以通过以下代码看到。此外,SqueezeNet 配置为识别 1,000 个不同的类,您可以通过以下代码看到这些类。

在后续部分中,我们将修改 SqueezeNet 的选定层,以便将其应用于我们的分类问题。

八、连续小波变换


SqueezeNet旨在区分图像差异并对结果进行分类。因此,为了使用SqueezeNet对雷达回波进行分类,我们必须将一维雷达回波时间序列转换为图像。执行此操作的常用方法是使用时频表示 (TFR)。信号的时频表示有多种选择,哪一种最合适取决于信号特性。要确定哪种 TFR 可能适合此问题,请随机选择并绘制每个类别的一些雷达回波。

很明显,前面显示的雷达回波的特点是变化变慢,如前所述,瞬态大幅减少。小波变换非常适合稀疏地表示此类信号。小波收缩以定位具有高时间分辨率的瞬态现象,并拉伸以捕获缓慢变化的信号结构。获取并绘制其中一个圆柱回波的连续小波变换。

CWT同时捕获缓慢变化的(低频)波动和瞬态现象。将圆柱体回程的CWT与锥形目标的CWT进行对比。

由于瞬态在确定目标返回是来自圆柱目标还是锥形目标方面具有明显的重要性,因此我们选择CWT作为要使用的理想TFR。在获得每个目标回波的CWT后,我们从每个雷达回波的CWT制作图像。这些图像被调整为与SqueezeNet的输入层兼容,我们利用SqueezeNet对生成的图像进行分类。

九、图像准备


辅助函数获取每个雷达回波的CWT,重塑CWT以与SqueezeNet兼容,并将CWT写入jpeg文件。要运行 ,请选择您具有写入权限的位置。此示例使用 ,但您可以使用计算机上您具有写入权限的任何文件夹。帮助程序函数在 和 下创建和设置文件夹,在 和 下创建和子文件夹。这些文件夹填充了 jpeg 图像,用作 SqueezeNet 的输入。

现在用于管理来自文件夹的文件访问,以便训练SqueezeNet。为训练数据和测试数据创建数据存储。

为了将 SqueezeNet 用于这个二元分类问题,我们需要修改几个层。首先,我们将 SqueezeNet 中的最后一个可学习层(第 64 层)更改为具有与我们新类数相同的 1×1 卷积数 2。

最后,设置重新训练挤压网络的选项。将初始学习速率设置为 1e-4,将最大纪元数设置为 15,将小批量大小设置为 10。使用带动量的随机梯度下降。

使用经过训练的网络来预测保留测试集中的目标回报。绘制混淆图以及精度和召回率。在这种情况下,100%的测试样本被正确分类。

十、结论


此示例介绍了使用机器学习和深度学习技术执行雷达目标分类的工作流。尽管此示例使用合成数据进行训练和测试,但它可以轻松扩展以适应实际雷达返回。由于信号特性,小波技术被用于机器学习和CNN方法。

有了这个数据集,我们还通过将原始数据输入 LSTM 来达到类似的精度。在更复杂的数据集中,原始数据可能本质上变化太大,模型无法从原始数据中学习鲁棒特征,您可能需要在使用 LSTM 之前诉诸特征提取。

十一、程序

使用Matlab R2022b版本,点击打开。(版本过低,运行该程序可能会报错)

下载方式:基于matlab使用机器学习和深度学习进行雷达目标分类

相关文章:

基于matlab使用机器学习和深度学习进行雷达目标分类

一、前言此示例展示了如何使用机器学习和深度学习方法对雷达回波进行分类。机器学习方法使用小波散射特征提取与支持向量机相结合。此外,还说明了两种深度学习方法:使用SqueezeNet的迁移学习和长短期记忆(LSTM)递归神经网络。请注…...

Protocol Buffers V3语法全解

目录protobuf介绍protobuf使用protoc命令语法定义消息类型指定字段类型分配字段编号指定字段规则添加更多消息类型注释保留字段从.proto文件生成了什么?值类型默认值枚举使用其他消息类型导入定义嵌套类型更新消息类型未知字段any任意类型oneofoneof 特性兼容性问题…...

MediaPipe之人体关键点检测>>>BlazePose论文精度

BlazePose: On-device Real-time Body Pose tracking BlazePose:设备上实时人体姿态跟踪 论文地址:[2006.10204] BlazePose: On-device Real-time Body Pose tracking (arxiv.org) 主要贡献: (1)提出一个新颖的身体姿态跟踪解决…...

CSS从入门到精通专栏简介

先让我们来欣赏几个精美的网站: Matt Brett - Freelance Web Designer and WordPress Expert ‎2022 Year in Review • Letterboxd NIO蔚来汽车官方网站 小米官网 Silk – Interactive Generative Art 大屏数据可视化 你是否也有过这样的“烦恼”: * …...

day01常用DOS命令

day01课堂笔记(第一章 Java开发环境的搭建) 1、常用的DOS命令 1.1、怎么打开DOS命令窗口 win键 r (组合键):可以打开“运行”窗口 在运行窗口文本框中输入: cmd 然后回车 1.2、什么是DOS命令呢? 在DOS命令…...

Java设计模式-生成器模式(建造模式)

1.1定义 维基百科定义 生成器模式(英:Builder Pattern)是一种设计模式,又名:建造模式,是一种对象构建模式。 它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象…...

ansible的常用模块介绍

ansible 常用命令/usr/bin/ansible  #Ansibe AD-Hoc 临时命令执行工具,常用于临时命令的执行/usr/bin/ansible-doc #Ansible 模块功能查看工具/usr/bin/ansible-galaxy  #下载/上传优秀代码或Roles模块 的官网平台,基于网络的/usr/bin/ansible-playbo…...

你不会还不知道如何监测用户的网络是否在线吧?

我最近遇到一个需求,要给网站添加一个用户网络离线提醒。要求我们要实时监测用户的网络状态,当用户断网了,我们要立马给用户弹出一个断网提醒。 那你可能会问,为什么要做这么一个需求呢?用户断网了,网页不…...

ASM Quorum FailGroup RAC on Extended Distance Clusters

法定容错组,和它失去联系也不影响集群运行 参考: How to Manually Add NFS voting disk to an Extended Cluster using ASM in 11.2 (Doc ID 1421588.1) Mount Options for Oracle files when used with NFS on NAS devices (Doc ID 359515.1) RAC: Fre…...

VHDL语言基础-时序逻辑电路-触发器

目录 触发器: D触发器: 触发器的VHDL描述: 触发器的仿真波形如下:​编辑 时钟边沿检测的三种方法: 方法一: 方法二: 方法三: 带有Q非的D触发器: 带有Q非的D触发器的描述&am…...

也许你应该学学 postman了

使用 最简单的方法就是直接在浏览器中复制 Copy as cURL ,然后把数据导入 postman,然后 send ,收工。 我们这里拿 知乎首页 举例 在对应的请求下复制 cURL 打开 postman , 点击左上角的 Import , 选择Paste Raw Tex…...

VHDL语言基础-状态机设计-ASM图法状态机设计

目录 有限状态机的描述方法: ASM图: 状态转移图: 状态转移列表: MDS图: ASM图法状态机设计: ASM图的组成: 状态框: 判断框: 条件框: 状态框与条件框…...

Python文件的属性获取,重命名,目录的创建,显示和改变

1. 文件的属性获取 os.stat()函数可以获取文件的属性,该函数会返回一个和系统平台有关的stat_result对象, 具备一组可访问的属性,可以通过 stat_result.attribute 这样的格式来访问各个属性的值。 字 段描 述st_modeinode 保护模式st_inoin…...

好用的iPhone 数据恢复软件精选

随着 Apple 的 iTunes / iCloud 备份服务的兴起,我们总是假设这些信息在我们需要的时候可以随时访问。然而,事实是,意想不到的“不幸”发生了,比如 iOS 升级失败、忘记密码,或者更严重的情况,如进水或被盗。…...

Linux搭建redis集群6.x版本【超简单】

Linux搭建redis集群6.x版本【超简单】::::本文主要展示如何在一台服务器上搭建集群,核心思想就是复制实例,修改启动端口,实际上跟在几台服务器的操作都是一样的。一.安装redis wget http://dow…...

双重检查锁是如何避免缓存雪崩的,代码例子说明

双重检查锁是如何避免缓存雪崩的什么是缓存雪崩解决方案双重检查锁是如何工作的什么是缓存雪崩 缓存雪崩是指缓存同时失效,造成大量的缓存请求都请求到后端数据库,导致后端系统压力过大而瘫痪的情况。 解决方案 设置缓存的失效时间为随机值&#xff0…...

【成为架构师课程系列】架构设计中的核心思维方法

架构设计中的核心思维方法 目录 前言 #一、抽象思维 #二、分层思维 #三、分治思维 #四、演化思维 #五、如何培养架构设计思维...

Apollo/Nacos配置动态刷新原理及优劣

一. 配置方式 这里只说与Spring集成后的配置方式,这也是项目中主要使用的方式 Apollo 在属性上直接加value注解,这个属性就会随着配置的更改动态更新类实现ConfigChangeListener,在类中方法上ApolloConfigChangeListener注解,注解…...

docker的基本管理

Docker的概念云计算三层架构服务说明应用IAAS基础设施及服务硬件(服务器、网络设置、防火墙等)虚拟化网络虚拟化(大二层)例:openstackPAAS平台及服务环境例:数据库、 docker 、kubernetesSAAS应用及服务应用…...

2023年房地产投资-租金和IRR研究报告

第一章 概况 房地产投资租赁是指置业投资者在购买到物业后,首先对该物业进行适当整饰与装修,之后以出租人的身份,以口头协议或签订合同的形式,将房屋交付承租人占有、使用与收益,由承租人向出租人交付租金的行为。通过…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​&#xff1a; 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​&#xff1a; // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

Unity UGUI Button事件流程

场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...

深入理解Optional:处理空指针异常

1. 使用Optional处理可能为空的集合 在Java开发中&#xff0c;集合判空是一个常见但容易出错的场景。传统方式虽然可行&#xff0c;但存在一些潜在问题&#xff1a; // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文 现有方法 CRADLE 和 LEMON&#xff0c;依赖模型推理阶段输出进行差分测试&#xff0c;但在训练阶段是不可行的&#xff0c;因为训练阶段直到最后才有固定输出&#xff0c;中间过程是不断变化的。API 库覆盖低&#xff0c;因为各个 API 都是在各种具体场景下使用。…...