频谱感知与深度学习识别5 g LTE的信号
这个例子展示了如何使用深度学习训练一个语义分割网络频谱监测。频谱监测的使用之一就是描述频谱占用。这个例子是训练的神经网络识别5 g NR和LTE信号宽带光谱图。
介绍
计算机视觉使用语义分割技术来识别对象和它们的位置在一个图像或视频。在无线信号处理、无线信号感兴趣的对象,对象的位置占用的频率和时间信号。在这个示例中,我们使用语义分割技术在宽带无线信号识别谱内容声谱图。
在下面,您将:
生成训练信号。
转移学习应用于语义分割识别5 g NR和LTE网络信号的时间和频率。
测试训练网络与合成信号。
使用一个特别提款权来测试网络在空气(OTA)的信号。
生成的训练数据
无线信号在深度学习域的一个优点是合成的信号。同样,我们有高度可靠的通道和射频损伤模型。作为一个结果,而不是收集和手动标记信号,可以生成5 g NR信号使用5 g的工具箱™和LTE信号使用LTE工具箱™函数。你可以通过这些信号通过标准的渠道模式创建的训练数据。
列车网络框架,只包含5 g NR和LTE随机信号,然后将这些信号在频率带内的利益。每一帧长40毫秒,40子帧的持续时间。假设5 g NR或LTE网络信号占用相同的乐队为整个帧持续时间。要测试网络性能,创建包含5 g NR和LTE的帧信号不同频带内的随机带的兴趣。
使用一个采样率为61.44 MHz。这个速度足够高来处理大部分的最新标准信号和一些低成本的软件定义无线电(SDR)系统可以样品以这种速度提供约50 MHz有用的带宽。监控一个更广泛的乐队,你可以增加采样率,再生训练帧和培训网络。
使用helperSpecSenseTrainingData
函数来生成训练帧。使用这个函数生成5 g NR信号helperSpecSenseNRSignal
功能和使用LTE信号helperSpecSenseLTESignal
函数。此表列出了5 g NR变量信号参数。
此表列出了LTE变量信号参数。
使用nrCDLChannel
(5 g工具箱)和lteFadingChannel
(LTE工具箱)功能添加通道障碍。通道配置的详细信息,请参阅helperSpecSenseTrainingData
函数。此表列出了信道参数。
的helperSpecSenseTrainingData
函数使用helperSpecSenseSpectrogramImage
函数来创建声谱图图像从复杂的基带信号。计算使用FFT长度4096色。在256年产生256 RGB图像。这个图像大小允许一个足够大的批图像训练期间装入内存,同时提供足够的时间和频率分辨率。如果你的GPU没有足够的内存,你可以调整图片尺寸较小或减少训练批量大小。
的generateTrainData
变量确定是否下载训练数据或生成。选择“使用下载数据”设置generateTrainData
变量来假
。选择“生成训练数据集generateTrainData
变量来真正的
从头开始生成训练数据。数据生成可能需要几个小时取决于你的电脑的配置。使用电脑与英特尔®CPU @ 3.60 ghz Xeon®w - 2133和创建一个平行池并行计算工具箱™,六名工人培训数据生成大约需要一个小时。选择“现在列车网络”来训练网络。这个过程大约需要20分钟的PC和NVIDIA GPU泰坦®V。选择“使用训练网络”跳过网络培训。相反,示例下载培训网络。
从每组使用900帧的信号:5 g NR, LTE只和5 g NR和LTE。如果你增加的数量可能值为系统参数,增加训练帧的数量。
图象尺寸= (256 - 256);%的像素sampleRate = 61.44 e6;%赫兹numSubFrames = 40;%对应于40毫秒frameDuration = numSubFrames * 1 e - 3;%秒trainDir = fullfile (pwd,“TrainingData”);generateTrainData =假;trainNow =假;如果~ generateTrainData | | ~ trainNow helperSpecSenseDownloadData ()结束
开始下载的数据文件://www.tatmou.com/supportfiles/spc/SpectrumSen金宝appsing/SpectrumSenseTrainingDataNetwork.tar.gz下载完成。提取文件。提取完成。
如果generateTrainData numFramesPerStandard = 900;helperSpecSenseTrainingData (numFramesPerStandard图象尺寸、trainDir numSubFrames, sampleRate);结束
负荷训练数据
使用imageDatastore
函数加载训练图像的光谱图5 g NR和LTE信号。的imageDatastore
功能使您能够有效地从磁盘加载大量的图像。光谱图图片存储在. png文件。
imd = imageDatastore (trainDir,“IncludeSubfolders”假的,“FileExtensions”,“使用”);
使用pixelLabelDatastore
(计算机视觉工具箱)函数加载谱图像素标签图像数据。每个像素标记为“NR”之一,“LTE”或“噪声”。一个像素标签数据存储封装了像素标签数据和标签ID到一个类名称映射。像素标签存储在.hdf文件。
一会= [“NR”“LTE”“噪音”];pixelLabelID = (127 255 0);pixelLabelID pxdsTruth = pixelLabelDatastore (trainDir,一会,…“IncludeSubfolders”假的,“FileExtensions”,“.hdf”);
统计分析数据集
看到类标签的训练数据集的分布,使用countEachLabel
(计算机视觉工具箱)函数来计算像素的数量的类标签,和情节类的像素数量。
台= countEachLabel (pxdsTruth);频率= tbl.PixelCount /笔(tbl.PixelCount);图酒吧(1:元素个数(类名),频率)网格在xticks(1:元素个数(类名)xticklabels (tbl.Name) xtickangle (45) ylabel (“频率”)
理想情况下,所有类都有一个相同数量的观察。然而,随着无线信号是很常见的在训练集的类不平衡。5 g NR信号可能会有更大的带宽比LTE信号和噪声填充背景。因为学习是有偏见的主要课程,不平衡的数量的观察每个类可以损害学习过程。在平衡类使用类权重节中,类权重是用来减轻偏差引起的不平衡在观察每个类的数量。
准备培训,验证集和测试集
深层神经网络使用80%的单一信号图像数据集的训练和20%的图像进行验证。的helperSpecSensePartitionData
随机函数将图像和像素标签数据分为训练集和验证集。
[imdsTrain, pxdsTrain imdsVal pxdsVal] = helperSpecSensePartitionData (imd, pxdsTruth 20 [80]);cdsTrain =结合(imdsTrain pxdsTrain);cdsVal =结合(imdsVal pxdsVal);%转换适用于调整到所需的图像和像素标签数据%的大小。cdsTrain =变换(cdsTrain @(数据)preprocessTrainingData(数据、图象尺寸));cdsVal =变换(cdsVal @(数据)preprocessTrainingData(数据、图象尺寸));
深层神经网络训练
使用deeplabv3plusLayers
(计算机视觉工具箱)函数创建一个语义神经网络分割。选择resnet50
(深度学习工具箱)为基础网络和指定输入图像大小(数量的像素用于表示时间和频率轴)和类的数量。如果深度学习工具箱™模型ResNet-50网络金宝app支持包没有安装,那么函数提供了一个链接到需要在插件浏览器支持包。安装支持包,单击该链接,然后单金宝app击安装。通过输入检查安装是否成功resnet50
在命令行中。如果所需的支持包安装,那么函数返金宝app回DAGNetwork
(深度学习工具箱)对象。
baseNetwork =“resnet50”;lgraph = deeplabv3plusLayers(图象尺寸,元素个数(类名),baseNetwork);
平衡类使用类权重
改善训练在训练集不平衡类时,您可以使用类加权平衡类。与早些时候使用像素标签数量计算countEachLabel
函数和计算中值频率类权重。
imageFreq =(资源。PixelCount。/ tbl.ImagePixelCount;classWeights =值(imageFreq)。/ imageFreq;
使用指定的类权重pixelClassificationLayer
(计算机视觉工具箱)。
pxLayer = pixelClassificationLayer (“名字”,“标签”,“类”tbl.Name,“ClassWeights”,classWeights);lgraph = replaceLayer (lgraph,“分类”,pxLayer);
选择培训选项
配置培训使用trainingOptions
(深度学习工具箱)函数来指定随机梯度下降法与动量(个)优化算法和hyper-parameters用于个。从网络获得最佳性能,您可以使用实验管理器(深度学习工具箱)优化培训方案。
选择= trainingOptions (“个”,…MiniBatchSize = 40,…MaxEpochs = 20,…LearnRateSchedule =“分段”,…InitialLearnRate = 0.02,…LearnRateDropPeriod = 10,…LearnRateDropFactor = 0.1,…ValidationData = cdsVal,…ValidationPatience = 5,…洗牌=“every-epoch”,…OutputNetwork =“best-validation-loss”,…情节=“训练进步”)
选择= TrainingOptionsSGDM属性:动力:0.9000 InitialLearnRate: 0.0200 LearnRateSchedule:“分段”LearnRateDropFactor: 0.1000 LearnRateDropPeriod: 10 L2Regularization: 1.0000 e-04 GradientThresholdMethod:“l2norm”GradientThreshold:正MaxEpochs: 20 MiniBatchSize: 40详细:1 VerboseFrequency: 50 ValidationData:(1×1 matlab.io.datastore。TransformedDatastore] ValidationFrequency: 50 ValidationPatience: 5洗牌:every-epoch CheckpointPath:”CheckpointFrequency: 1 CheckpointFrequencyUnit:“时代”ExecutionEnvironment:“汽车”WorkerLoad: [] OutputFcn:[]阴谋:“训练进步”SequenceLength:“最长”SequencePaddingValue: 0 SequencePaddingDirection:“对”DispatchInBackground: 0 ResetInputNormalization: 1 BatchNormalizationStatistics:“人口”OutputNetwork:“best-validation-loss”
列车网络利用训练数据存储相结合,cdsTrain
。合并后的训练数据存储包含单一信号帧和真正的像素标签。
如果trainNow[净,trainInfo] = trainNetwork (cdsTrain lgraph,选择);% #好< UNRCH >其他的负载specSenseTrainedNet净结束
测试合成信号
测试网络信号识别性能使用信号含有5克NR和LTE的信号。使用semanticseg
(计算机视觉工具箱)函数来获得光谱图图像的像素估计在测试数据集,使用evaluateSemanticSegmentation
(计算机视觉工具箱)函数来计算各种指标来评估语义分割结果的质量。
dataDir = fullfile (trainDir,“LTE_NR”);imd = imageDatastore (dataDir,“IncludeSubfolders”假的,“FileExtensions”,“使用”);pxdsResults = semanticseg (imd,净,“WriteLocation”,tempdir);
运行的语义分割网络- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 900张图片处理。
pixelLabelID pxdsTruth = pixelLabelDatastore (dataDir,一会,…“IncludeSubfolders”假的,“FileExtensions”,“.hdf”);指标= evaluateSemanticSegmentation (pxdsResults pxdsTruth);
评估语义分割结果- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *选定指标:全球准确性、类准确性,借据,加权借据,BF的分数。* 900(加工)图像。*完成……完成了。*数据集指标:GlobalAccuracy MeanAccuracy MeanIoU WeightedIoU _______ MeanBFScore * * *…………0.88609 0.87117 - 0.79066 0.79601 - 0.65623
情节的规范化混淆矩阵测试框架。
厘米= confusionchart (metrics.ConfusionMatrix.Variables,…一会,正常化=“row-normalized”);厘米。Title =规范化的混淆矩阵的;
情节每张图象的直方图相交在联盟(借据)。对于每个类,借据是正确分类像素总数的比例地面实况,并预测像素的类。
imageIoU = metrics.ImageMetrics.MeanIoU;网格图直方图(imageIoU)在包含(“借据”)ylabel (的帧数的)标题(“框架意味着借据”)
检测低信噪比帧显示谱图图像不包含视觉特性,可以帮助网络正确识别低信噪比的帧。重复相同的过程,只考虑帧的平均信噪比50 db或100分贝和忽略了帧的平均信噪比40 db。
文件= dir (fullfile (dataDir,‘* .mat‘));dataFiles = {};labelFiles = {};为p = 1:元素个数(文件)负载(fullfile(文件(p) .folder文件(p) . name),“参数”);如果参数个数。SNRdB > 40[~、名称]= fileparts(文件(p) . name);dataFiles =[数据文件来完成;fullfile(文件(p) .folder,名字“使用”)));% #好< AGROW >labelFiles = [labelFiles;fullfile(文件(p) .folder,名字“.hdf”)));% #好< AGROW >结束结束imd = imageDatastore(实际上);pxdsResults = semanticseg (imd,净,“WriteLocation”,tempdir);
运行的语义分割网络- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 608张图片处理。
一会,pxdsTruth = pixelLabelDatastore (labelFiles pixelLabelID);指标= evaluateSemanticSegmentation (pxdsResults pxdsTruth);
评估语义分割结果- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *选定指标:全球准确性、类准确性,借据,加权借据,BF的分数。* 608(加工)图像。*完成……完成了。*数据集指标:GlobalAccuracy MeanAccuracy MeanIoU WeightedIoU _______ MeanBFScore * * *…………0.94487 0.94503 - 0.89799 0.89582 - 0.74699
只考虑框架的集合与更高的信噪比,改建规范化混淆矩阵,观察改进网络精度。
厘米= confusionchart (metrics.ConfusionMatrix.Variables,…一会,正常化=“row-normalized”);厘米。Title =规范化的混淆矩阵的;
只考虑框架的集合与更高的信噪比,改建的每张图象直方图借条,观察改进的分布。
imageIoU = metrics.ImageMetrics.MeanIoU;网格图直方图(imageIoU)在包含(“借据”)ylabel (的帧数的)标题(“框架意味着借据”)
确定5 g NR和LTE信号谱图
可视化得到光谱,真正的标签,并预测602年图像索引标签。
imgIdx = 602;imgIdx rcvdSpectrogram = readimage (imd);trueLabels = readimage (pxdsTruth imgIdx);predictedLabels = readimage (pxdsResults imgIdx);图helperSpecSenseDisplayResults (rcvdSpectrogram trueLabels predictedLabels,…一会,sampleRate 0 frameDuration)
图helperSpecSenseDisplayIdentifiedSignals (rcvdSpectrogram predictedLabels,…一会,sampleRate 0 frameDuration)
测试无线信号
测试训练使用无线网络信号的捕获性能。找一个附近的基站和调整中心频率的无线电覆盖乐队想要识别的信号。这个例子集2.35 GHz的中心频率。如果你有至少一个ADALM-PLUTO广播和已经安装了为ADALM-PLUTO无线电通信工具箱支持金宝app包,您可以运行这段代码。以防您没有访问到一个ADALM-PLUTO广播,这个例子展示了使用捕获的信号进行测试的结果。
runSDRSection = false;如果收音机= findPlutoRadio helperIsPlutoSDRInstalled () ();如果长度(收音机)> = 1 runSDRSection = true;其他的disp (“至少一个ADALM-PLUTO收音机是必要的。跳过特别提款权测试”。)结束其他的disp (“通信工具箱支持方案模拟装置ADALM-PLUT金宝appO无线电没有找到。”)disp (在家里“点击插件选项卡的MATLAB将来发布安装支持包。”金宝app)disp (“特别提款权跳过测试”。)结束
为模拟设备通信工具箱支持包ADALM-PLUT金宝appO无线电没有找到。
在家里点击插件选项卡的MATLAB将来发布安装支持包。金宝app
跳过特别提款权测试。
如果runSDRSection%建立PlutoSDR接收器rx = sdrrx (“冥王星”);rx。CenterFrequency = 2.35 e9;rx。BasebandSampleRate = sampleRate;rx。SamplesPerFrame = frameDuration * rx.BasebandSampleRate;rx。OutputDataType =“单一”;rx。EnableBurstMode = true;rx。NumFramesInBurst = 1;Nfft = 4096;重叠= 10;meanAllScores = 0([图象尺寸元素个数(类名)]);segResults = 0([图象尺寸10]);为frameCnt = 1:10 rxWave = rx ();rxSpectrogram = helperSpecSenseSpectrogramImage (rxWave Nfft sampleRate,图象尺寸);[segResults (:,:, frameCnt),分数,allScores] = semanticseg (rxSpectrogram,净);meanAllScores = (meanAllScores * (frameCnt-1) + allScores) / frameCnt;结束释放(rx) [~, predictedLabels] = max (meanAllScores [], 3);图helperSpecSenseDisplayResults ([], rxSpectrogram predictedLabels,一会,…sampleRate、rx.CenterFrequency frameDuration)图freqBand = helperSpecSenseDisplayIdentifiedSignals (rxSpectrogram predictedLabels,…一会,sampleRate rx.CenterFrequency frameDuration)其他的图imshow (“lte_capture_result1.png”图imshow) (“lte_capture_result2.png”图imshow) (“nr_capture_result1.png”图imshow) (“nr_capture_result2.png”)结束
结论和进一步探索
经过训练的网络可以区分5 g NR和LTE信号包括两个示例截图来自真正的基站。网络可能无法正确识别每一个捕获信号。在这种情况下,提高了训练数据生成更具代表性合成的信号或捕获无线信号,包括这些训练集。
您可以使用LTE手机搜索、MIB和SIB1复苏(LTE工具箱)和NR细胞搜索和MIB和SIB1复苏(5 g工具箱)例子5 g LTE和NR基站手动获取训练数据,分别。
如果你需要监控广泛的光谱带,增加sampleRate
,重新生成训练数据和再培训网络。
金宝app支持功能
函数data = preprocessTrainingData(数据、图象尺寸)%调整相关的训练图像和图像像素标签。{1}= imresize数据(数据{1},图象尺寸);{2}= imresize数据(数据{2},图象尺寸);结束
另请参阅
classificationLayer
(深度学习工具箱)|featureInputLayer
(深度学习工具箱)|fullyConnectedLayer
(深度学习工具箱)|reluLayer
(深度学习工具箱)|softmaxLayer
(深度学习工具箱)|pixelLabelDatastore
(计算机视觉工具箱)|countEachLabel
(计算机视觉工具箱)|pixelClassificationLayer
(计算机视觉工具箱)
相关的话题
- 深度学习在MATLAB(深度学习工具箱)