主要内容

雷达和通讯波形分类使用深度学习

这个例子展示了如何将使用雷达和通讯波形能量(项)和深卷积神经网络(CNN)。

调制分类是一个重要的功能的智能接收器。调制分类有许多应用,如认知雷达和软件定义无线电。通常,通过调制类型识别和分类这些波形,需要定义有意义的特性和输入到分类器。虽然有效,这个过程需要大量的努力和领域知识,从而生成一个精确的分类。这个例子中探索一个框架自动从信号中提取时频特性和使用深学习网络执行信号分类。

这个例子的第一部分模拟雷达分类系统,综合三个脉冲雷达波形和分类。雷达波形:

  • 矩形

  • 线性调频(lem)

  • 巴克码

一个雷达分类系统并不是孤立存在的。相反,它驻留在一个日益占用频谱,竞争与其他传播来源如通信系统、广播和导航系统。这个例子的第二部分网络扩展到包括其他通信调制类型。除了第一组雷达波形,扩展网络综合和识别这些交流波形:

  • 高斯频移键控(GFSK)

  • 连续相频移键控(CPFSK)

  • 广播调频(B-FM)

  • 双边带调幅(DSB-AM)

  • 单边带调幅(SSB-AM)

这个例子主要集中在雷达波形,分类被扩展到包括一组小的振幅和频率调制的通信信号。看到调制分类与深度学习(通信工具箱)一个完整的工作流的广泛的通信信号的调制分类。

生成雷达波形

产生3000与100 MHz的采样率信号每个调制类型。使用phased.RectangularWaveform对于矩形脉冲,phased.LinearFMWaveform中频采样,phased.PhaseCodedWaveform与巴克码相位编码脉冲。

每个信号都有独特的参数和增强与不同的障碍,使其更为现实。对于每一个波形,脉冲宽度和重复频率将随机生成的。对于线性调频波形,扫描带宽和方向是随机生成的。对于巴克波形,芯片宽度和数量是随机生成的。所有信号与高斯白噪声使用受损情况下函数与随机信噪比范围内的6 30 dB。与随机载频频率偏移的范围[Fs / 6,Fs / 5]应用于每个信号使用comm.PhaseFrequencyOffset对象。最后,每个信号经过多径Rician衰落信道,comm.RicianChannel

辅助函数helperGenerateRadarWaveforms创建并增加每个调制类型。

rng默认的[wav, modType] = helperGenerateRadarWaveforms ();

情节的傅里叶变换对线性调频脉冲波形的显示生成的组的方差。

idLFM =找到(modType = =“从”3);nfft = 2 ^ nextpow2(长度(wav {1}));f = (0: (nfft / 2 - 1)) / nfft * 100 e6;图次要情节(1、3、1)Z = fft (wav {idLFM (1)}, nfft);情节(f / 1 e6、abs (Z (1: nfft / 2)))包含(“频率(MHz)”);ylabel (“振幅”);轴广场次要情节(1、3、2)Z = fft (wav {idLFM (2)}, nfft);情节(f / 1 e6、abs (Z (1: nfft / 2)))包含(“频率(MHz)”);ylabel (“振幅”);轴广场次要情节(1、3、3)Z = fft (wav {idLFM (3)}, nfft);情节(f / 1 e6、abs (Z (1: nfft / 2)))包含(“频率(MHz)”);ylabel (“振幅”);轴广场

使用能量特征提取

为了提高机器学习算法的分类性能,通常的做法是将输入特征的原始信号中提取数据。的特性提供了一种表示的输入数据分类算法更容易区分整个类。代表了一种时频能量分布的时变信号的有用的原始数据。高分辨率和位置在时域和频域提供良好的特性调制类型识别的相似。使用函数计算平滑伪项为每个调制类型。

图次要情节(1、3、1)项(wav{找到(modType = =“矩形”100 e6, 1)},“smoothedPseudo”)轴广场;colorbar;标题(“矩形”次要情节(1、3、2)项(wav{找到(modType = =“从”100 e6, 1)},“smoothedPseudo”)轴广场;colorbar;标题(“从”次要情节(1,3,3)项(wav{找到(modType = =“巴克”100 e6, 1)},“smoothedPseudo”)轴广场;colorbar;标题(“巴克”)

存储smoothed-pseudo能量分布的信号,首先创建的目录TFDDatabase在你的临时目录tempdir。然后创建子目录中TFDDatabase为每个调制类型。对于每一个信号,计算出smoothed-pseudo能量分布,并downsample结果- 227的227 -矩阵。保存矩阵作为一个. png图像文件的子目录对应的调制类型信号。辅助函数helperGenerateTFDfiles执行所有这些步骤。这个过程需要几分钟由于大型数据库的大小和复杂性算法。你可以换tempdir与另一个目录有写权限。

parentDir = tempdir;dataDir =“TFDDatabase”;helperGenerateTFDfiles (parentDir dataDir, wav, modType 100 e6)

创建一个图像数据存储对象创建的文件夹来管理图像文件用于培训学习网络。这一步可以避免所有图片加载到内存中。指定标签源文件夹的名字。这个分配每个信号的调制类型根据文件夹的名字。

文件夹= fullfile (parentDir dataDir, {“矩形”,“从”,“巴克”});imd = imageDatastore(文件夹,“FileExtensions”,“使用”,“LabelSource”,“foldernames”,“ReadFcn”,@readTFDForSqueezeNet);

网络训练数据和测试有10%的80%。剩下的10%用于验证。使用splitEachLabel功能划分imageDatastore在训练、验证和测试集。

[imdsTrain, imdsTest imdsValidation] = splitEachLabel (imd, 0.8, 0.1);

建立很深的学习网络

深入学习网络训练之前,定义网络体系结构。这个例子使用转移学习SqueezeNet, CNN创建图像分类。转移学习培训现有的过程神经网络分类的新目标。这个网络接受图像输入的大小227 - 227 - 3。自定义输入到网络之前,阅读功能readTFDForSqueezeNet将二维时频分布转换为RGB图像正确的大小。SqueezeNet执行1000年分类类别的默认配置。

负载SqueezeNet。

网= squeezenet;

从网络提取层图。确认SqueezeNet配置的图片大小227 - 227 - 3。

lgraphSqz = layerGraph(净);lgraphSqz.Layers (1)
ans = ImageInputLayer属性:名称:“数据”InputSize: [227 227 3] Hyperparameters DataAugmentation:“没有”正常化:“zerocenter”NormalizationDimension:“汽车”的意思是:[1×1×3单)

调整SqueezeNet对于这个示例,过去六层三个需要修改对感兴趣的三个雷达调制类型进行分类。检查过去六网络层。

lgraphSqz.Layers(录得5个:结束)
ans = 6×1层阵列层:1“drop9”辍学50%辍学2 conv10卷积1000 1×1×512旋转步[1]和填充[0 0 0 0]3‘relu_conv10 ReLU ReLU 4“pool10”二维全球平均池二维全球平均池5“概率”Softmax Softmax 6“ClassificationLayer_predictions”分类输出crossentropyex“鲤鱼”和999其他的类

取代drop9层,最后辍学层网络中,有一层辍学的概率0.6。

tmpLayer = lgraphSqz.Layers(录得5个);newDropoutLayer = dropoutLayer (0.6,“名字”,“new_dropout”);lgraphSqz = replaceLayer (lgraphSqz tmpLayer.Name newDropoutLayer);

最后可学的层在SqueezeNet 1×1卷积层,conv10。取代一层一层新的卷积过滤器的数量等于调制类型的数量。也增加了学习速率因子的新层。

numClasses = 3;tmpLayer = lgraphSqz.Layers (end-4);numClasses newLearnableLayer = convolution2dLayer (1,“名字”,“new_conv”,“WeightLearnRateFactor”,20岁,“BiasLearnRateFactor”,20);lgraphSqz = replaceLayer (lgraphSqz tmpLayer.Name newLearnableLayer);

用一个新的替换分类层没有类标签。

tmpLayer = lgraphSqz.Layers(结束);newClassLayer = classificationLayer (“名字”,“new_classoutput”);lgraphSqz = replaceLayer (lgraphSqz tmpLayer.Name newClassLayer);

检查过去的六层的网络。确认辍学、卷积和输出层已经被改变了。

lgraphSqz.Layers(录得5个:结束)
ans = 6×1层阵列层:1“new_dropout”辍学60%辍学2 new_conv的卷积3 1×1步[1]和填充的卷积[0 0 0 0]3‘relu_conv10 ReLU ReLU 4“pool10”二维全球平均池二维全球平均池5“概率”Softmax Softmax 6 new_classoutput crossentropyex分类输出

培训过程选择选项确保良好的网络性能。指的是trainingOptions文档的描述每个选项。

选择= trainingOptions (“个”,“MiniBatchSize”,128,“MaxEpochs”5,“InitialLearnRate”1 e - 3,“洗牌”,“every-epoch”,“详细”假的,“阴谋”,“训练进步”,“ValidationData”,imdsValidation);

培训网络

使用trainNetwork命令创建的CNN训练。因为数据集规模大,这个过程可能需要几分钟时间。如果你的机器有GPU并行计算工具箱™,然后用MATLAB®自动使用GPU进行训练。否则,它使用CPU。训练精度情节图中显示网络的学习的进步所有迭代。三种雷达调制类型,网络分类几乎100%的培训正确信号。

trainedNet = trainNetwork (imdsTrain、lgraphSqz选项);

在雷达波形进行绩效评估

使用经过训练的网络分类使用的测试数据分类命令。混淆矩阵是一个方法来可视化分类性能。使用confusionchart命令来计算和可视化分类精度。三种调制输入网络,几乎所有的编码阶段,线性调频,矩形波形正确识别网络。

预测=分类(trainedNet imdsTest);图confusionchart (imdsTest.Labels预测,“归一化”,“column-normalized”)

产生通讯波形和提取功能

雷达的分类系统的频谱必须与其他传播渠道竞争。如何创建网络延伸到合并其他模拟调制类型。另一个MathWorks®的例子,调制分类与深度学习(通信工具箱),执行不同调制类型的调制分类使用通信工具箱™。辅助函数helperGenerateCommsWaveforms生成和增强的一个子集,示例中使用的调制类型。自项失去了相位信息,只有一个子集的振幅和频率调制类型使用。

参见示例链接的深入描述工作流所需的数字和模拟调制分类和技术用于创建这些波形。对于每个调制类型,使用提取时频特性和可视化。

[wav, modType] = helperGenerateCommsWaveforms ();图次要情节(2、3、1)项(wav{找到(modType = =“GFSK”1)},200年e3,“smoothedPseudo”)轴广场;colorbar;标题(“GFSK”次要情节(2、3、2)项(wav{找到(modType = =“CPFSK”1)},200年e3,“smoothedPseudo”)轴广场;colorbar;标题(“CPFSK”次要情节(2、3、3)项(wav{找到(modType = =“B-FM”1)},200年e3,“smoothedPseudo”)轴广场;colorbar;标题(“B-FM”次要情节(2、3、4)项(wav{找到(modType = =“SSB-AM”1)},200年e3,“smoothedPseudo”)轴广场;colorbar;标题(“SSB-AM”次要情节(2、3、5)项(wav{找到(modType = =“DSB-AM”1)},200年e3,“smoothedPseudo”)轴广场;colorbar;标题(“DSB-AM”)

使用辅助函数helperGenerateTFDfiles重新计算每个输入信号的平滑伪项。创建一个图像数据存储对象来管理所有调制类型的图像文件。

helperGenerateTFDfiles (parentDir dataDir, wav, modType, 200年e3)文件夹= fullfile (parentDir dataDir, {“矩形”,“从”,“巴克”,“GFSK”,“CPFSK”,“B-FM”,“SSB-AM”,“DSB-AM”});imd = imageDatastore(文件夹,“FileExtensions”,“使用”,“LabelSource”,“foldernames”,“ReadFcn”,@readTFDForSqueezeNet);

再次,将数据分为训练集,验证集和测试集使用splitEachLabel函数。

rng默认的[imdsTrain, imdsTest imdsValidation] = splitEachLabel (imd, 0.8, 0.1);

调整深度学习网络体系结构

以前,网络体系结构建立了三种调制类型进行分类。这必须更新允许分类所有八个雷达和通信信号的调制类型。这是一个类似的过程,除了这个fullyConnectedLayer现在需要一个8的输出尺寸。

numClasses = 8;网= squeezenet;lgraphSqz = layerGraph(净);tmpLayer = lgraphSqz.Layers(录得5个);newDropoutLayer = dropoutLayer (0.6,“名字”,“new_dropout”);lgraphSqz = replaceLayer (lgraphSqz tmpLayer.Name newDropoutLayer);tmpLayer = lgraphSqz.Layers (end-4);numClasses newLearnableLayer = convolution2dLayer (1,“名字”,“new_conv”,“WeightLearnRateFactor”,20岁,“BiasLearnRateFactor”,20);lgraphSqz = replaceLayer (lgraphSqz tmpLayer.Name newLearnableLayer);tmpLayer = lgraphSqz.Layers(结束);newClassLayer = classificationLayer (“名字”,“new_classoutput”);lgraphSqz = replaceLayer (lgraphSqz tmpLayer.Name newClassLayer);

创建一个新组训练选项。

选择= trainingOptions (“个”,“MiniBatchSize”,150,“MaxEpochs”10“InitialLearnRate”1的军医,“洗牌”,“every-epoch”,“详细”假的,“阴谋”,“训练进步”,“ValidationData”,imdsValidation);

使用trainNetwork命令创建的CNN训练。对所有调制类型,训练收敛精度约95%的正确分类。

trainedNet = trainNetwork (imdsTrain、lgraphSqz选项);

在所有信号进行绩效评估

使用分类命令来分类的信号用于测试。再一次,使用可视化性能confusionchart

预测=分类(trainedNet imdsTest);图;confusionchart (imdsTest.Labels预测,“归一化”,“column-normalized”)

八个调制类型的输入网络,大约98%的B-FM, CPFSK, GFSK,巴克和线性调频调制类型正确分类。平均约85%的信号被正确识别。混淆矩阵,很大一部分SSB-AM信号是不是像SSB-AM DSB-AM和DSB-AM信号。

调查的误分类来洞察网络的学习过程。使用readimage功能测试数据集的图像数据存储提取单个图像从每个类。显示项视觉上看起来很相似。自DSB-AM SSB-AM信号有一个非常类似的签名,这解释了部分网络正确分类这两种类型的困难。进一步的信号处理能使这两种调制类型之间的差异更清晰的网络和改进分类。

DSB_DSB = readimage (imdsTest找到(imdsTest。标签= =“DSB-AM”)&(预测= =“DSB-AM”),1));DSB_SSB = readimage (imdsTest找到(imdsTest。标签= =“DSB-AM”)&(预测= =“SSB-AM”),1));SSB_DSB = readimage (imdsTest找到(imdsTest。标签= =“SSB-AM”)&(预测= =“DSB-AM”),1));SSB_SSB = readimage (imdsTest找到(imdsTest。标签= =“SSB-AM”)&(预测= =“SSB-AM”),1));图次要情节(2 2 1)显示亮度图像(DSB_DSB(:,: 1)轴广场;标题({“实际的类:DSB-AM”,“预测类:DSB-AM”})次要情节(2 2 2)显示亮度图像(DSB_SSB(:,: 1)轴广场;标题({“实际的类:DSB-AM”,“预测类:SSB-AM”})次要情节(2,2,3)显示亮度图像(SSB_DSB(:,: 1)轴广场;标题({“实际的类:SSB-AM”,“预测类:DSB-AM”})次要情节(2,2,4)显示亮度图像(SSB_SSB(:,: 1)轴广场;标题({“实际的类:SSB-AM”,“预测类:SSB-AM”})

总结

这个例子展示了雷达和通信调制类型可分为利用时频技术和深入学习网络。额外的改进可以继续努力研究利用时频分析中可用小波工具箱™和额外的傅里叶分析在信号处理工具箱™。

引用

[1]Brynolfsson、约翰和玛丽亚Sandsten。“一维非平稳信号的分类使用卷积神经网络中的能量。”25日欧洲信号处理会议(EUSIPCO)。IEEE 2017。

[2],小雨,Diyu杨,阿里El Gamal。“深层神经网络对调制分类架构。”第51艾斯洛玛尔会议信号,系统和电脑。2017年。

[3]的王,曹国伟、王健和Xudong张。“基于时频分析的雷达波形自动识别和卷积神经网络。”IEEE国际会议音响、演讲和信号处理(ICASSP)。2017年。