主要内容

使用深度学习的行人和自行车分类

此示例显示了如何根据使用深度学习网络和时频分析对行人和骑自行车的人进行分类。

放置在雷达前的物体不同部位的运动产生微多普勒信号,可用于识别该物体。这个例子使用卷积神经网络(CNN)来识别行人和骑自行车的人基于他们的签名。

本例使用模拟数据训练深度学习网络,然后检查网络在分类两种重叠签名情况时的表现。

模拟合成数据生成

用于训练网络的数据是使用backscatterPedestrianbackscatterBicyclist从雷达工具箱™。这些函数分别模拟行人和骑自行车者反射信号的雷达后向散射。

辅助函数Helper Backscattersignals.生成指定数量的行人、自行车和汽车雷达返回。因为这个例子的目的是区分行人和骑自行车的人,所以这个例子只把汽车的特征作为噪声源。为了了解要解决的分类问题,检查行人、骑自行车者和汽车微多普勒信号的一个实现。(对于每个实现,返回信号都有维度 N ——- - - - - - N 缓慢的 ,在那里 N 快速时间样品和 N 缓慢的 标准时间样本。看到雷达数据立方体想要查询更多的信息。)

numped = 1;%行人实现的数量numbic = 1;%骑自行车的人数numCar = 1;%汽车实现的数量[xPedRec、xBicRec、xCarRec、Tsamp]=帮助包散射信号(numPed、numBic、numCar);

辅助函数辅助程序性计算雷达回波的短时傅里叶变换(STFT)以产生微多普勒信号。为了获得微多普勒信号,使用辅助函数对每个信号应用短时傅里叶变换和预处理方法。

[SPed,T,F]=helperDopplerSignatures(xPedRec,Tsamp);[SBic,~,~]=HelperDopperSignatures(xBicRec,Tsamp);[SCar,~,~]=helperdopperlsignatures(xCarRec,Tsamp);

绘制行人、骑自行车者和汽车实现的时频图。

%绘制对象的第一个实现图subplot(1,3,1) imagesc(T,F, ?的频率(赫兹))标题(“行人”)轴心广场xy次要情节(1、3、2)显示亮度图像(T, F, SBic(:,: 1)包含('时间'')标题(“自行车”)轴心广场xy子图(1,3,3)ImageC(T,F,瘢痕(:,:,1))标题('车')轴心广场xy

归一化谱图(STFT绝对值)表明三个对象具有相当明显的签名。具体而言,行人和骑自行车的谱图分别具有由臂和腿的摆动和轮子的旋转引起的微多普勒签名。相比之下,在这个例子中,汽车被建模为具有刚体的点目标,因此车辆的谱图表明短期多普勒频率变化很小,表明小微量多普勒效应很少。

结合对象

由于行人和骑车人的微多普勒特征不同,将单个实现分类为行人或骑车人相对简单。然而,将多个重叠的行人或骑车人分类,加上高斯噪声或汽车噪声,难度要大得多。

如果雷达的探测区域同时存在多个目标,则接收到的雷达信号是所有目标探测信号的总和。以高斯背景噪声为例,生成一个行人和骑自行车的人的雷达信号。

%在接收器处配置高斯噪声水平rx = phased.receiverProamp(“收益”,25,“NoiseFigure”,10); xRadarRec=复数(零(大小(xPedRec));ii=1:size(xPedRec,3)xRadarRec(:,:,ii)=rx(xPedRec(:,:,ii)+xBicRec(:,:,ii));结束

然后利用短时傅里叶变换获得接收信号的微多普勒特征。

(年代,~,~)= helperDopplerSignatures (xRadarRec Tsamp);图显示亮度图像(T、F S (:,: 1))绘制第一个实现xy包含('时间'')ylabel(的频率(赫兹))标题(“一个行人和一个骑自行车的人的光谱图”

因为行人和自行车骑士签名在时间和频率上重叠,所以两个物体之间的差异很难。

生成的训练数据

在这个例子中,您通过使用由具有不同属性的物体的模拟实现组成的数据来训练CNN——例如,骑自行车的人以不同的速度蹬车,不同高度的行人以不同的速度行走。假设雷达固定在原点,在一个实现中,一个物体或多个物体沿X轴和Y轴分别均匀分布在[5,45]和[- 10,10]米的矩形区域内。

随机调整的三个对象的其他属性如下:

1)行人

  • 高度-均匀分布在[1.5,2]米的区间内

  • 航向-均匀分布在[- 180,180]度区间内

  • 速度-均匀分布在[0,1.4h]米/秒,在哪里h是高度值

2)骑自行车

  • 航向-均匀分布在[- 180,180]度区间内

  • 速度-以[1,10]米/秒的间隔均匀分布

  • 齿轮传动比-均匀分布在[0.5,6]区间内

  • 踩踏板或滑行- 50%的可能性踩踏板(滑行意味着骑自行车的人在不踩踏板的情况下行驶)

3)汽车

  • 速度-沿X和Y方向以[0,10]米/秒的间隔均匀分布

卷积网络的输入是微多普勒信号,由以分贝表示的声谱图组成,归一化为[0,1],如图所示:

雷达回波来自不同的物体和物体的不同部分。根据配置的不同,有些回报要比其他回报强得多。更高的回报往往掩盖了较弱的回报。对数缩放通过使收益强度具有可比性来增强特征。振幅归一化有助于CNN更快地收敛。

数据集包含以下场景的实现:

  • 一个行人在现场存在

  • 现场有一个骑自行车的人

  • 现场有一名行人和一名骑自行车的人

  • 现场有两名行人

  • 两个骑自行车的人出现在现场

下载数据

本示例的数据包括使用helper函数生成的20,000个行人、20,000个自行车和12,500个汽车信号Helper Backscattersignals.辅助程序性.信号分为两个数据集:一个没有汽车噪声样本的数据集和一个带有汽车噪声样本的数据集。

对于第一个数据集(不含汽车噪声),将行人和自行车信号合并,加入高斯噪声,计算微多普勒特征,对待分类的5个场景分别生成5000个特征。

在每个类别中,训练数据集保留80%的签名(即4000个签名),测试数据集保留20%的签名(即1000个签名)。

为了生成第二个数据集(带有汽车噪声),除了在50%的签名中加入汽车噪声外,还遵循第一个数据集的步骤。在训练数据集和测试数据集中,有噪声和无噪声特征的比例是相同的。

下载并解压缩数据在您的临时目录,其位置由MATLAB®指定坦普迪尔命令。数据大小为21 GB,下载过程可能需要一些时间。如果您在文件夹中的数据不同坦普迪尔,更改后续指令中的目录名称。

%下载数据数据URL=“https://ssd.mathworks.com/万博1manbetxsupportfiles/SPT/data/PedBicCarData.zip”;savefolder = fullfile(tempdir,“PedBicCarData”); zipFile=fullfile(tempdir,'pedbiccardata.zip');如果~存在(zipFile“文件”) websave (zipFile dataURL);埃尔塞夫~存在(saveFolder“dir”%解压缩数据解压缩(zipFile tempdir)结束

数据文件如下:

  • trainDataNoCar.mat包含训练数据集trainDataNoCar以及它的标号集火车旅馆

  • testDataNoCar.mat包含测试数据集testDataNoCar以及它的标号集testLabelNoCar

  • TrainDatacarnoise.mat包含训练数据集trainDataCarNoise以及它的标号集火车车厢

  • testdatacarnoise.mat.包含测试数据集testdatacarnoise.以及它的标号集testlabelcarnoise.

  • TF.mat包含微多普勒信号的时间和频率信息。

网络体系结构

创建一个包含五个卷积层和一个完全连接层的CNN。前四个卷积层之后是批标准化层、校正线性单元(ReLU)激活层和最大池层。在最后一个卷积层中,最大池层被平均池层替换。输出层是softmax激活后的分类层。有关网络设计指南,请参阅深度学习提示和技巧(深度学习工具箱)

images = [imageInputLayer([size(S,1),size(S,2),1], images = [imageInputLayer([size(S,1), 1],]“归一化”“没有”16) convolution2dLayer(10日,“填充”'相同的'maxPooling2dLayer(10,“步”32岁的,2)convolution2dLayer (5“填充”'相同的'maxPooling2dLayer(10,“步”32岁的,2)convolution2dLayer (5“填充”'相同的'maxPooling2dLayer(10,“步”32岁的,2)convolution2dLayer (5“填充”'相同的'maxPooling2dLayer(5,“步”32岁的,2)convolution2dLayer (5“填充”'相同的'reluLayer averageepooling2dlayer (2,“步”,2) softmaxLayer (5) softmaxLayer classificationLayer
图层= 24x1层阵列,带有图层:1''图像输入400x144x1图像2''卷积16 10x10卷积与步幅[1 1]和填充'相同的'3'批量归一化批量归一化4''Relu Relu 5''最大汇集10x10 max汇集步进[2 2]和填充[0 0 0 0] 6''卷积32 5x5卷绕卷发[1 1]和填充'相同'7'批量归一化批量归一化8''Relu Relu 9''MAX池10x10 MAX汇集步部[2 2]和填充[0 0 0 0] 10''卷积32 5x5卷曲与步幅[1 1]和填充'相同的'11''批量归一化批量归一化12''Relu Relu 13''最大池10x10 max汇集步部[2 2]和填充[0 0 0 0] 14''卷积32 5x5卷曲与步幅[1 1]和填充'相同的'15''批量归一化批量归一化16''ReluRelu 17''最大汇集5x5 max池与步部[2 2]和填充[0 0 0 0] 18''卷积32 5x5卷曲与步幅[1 1]和填充'同一个'19''BaTCH归一化批量归一化20''Relu Relu 21''平均池平均汇集步进[2]和填充[0 0 0] 22''完全连接的5完全连接的层23''Softmax Softmax 24''分类输出crossentropyex.

指定优化求解器和超参数来训练CNN使用培训选项。此示例使用ADAM优化器和128的最小批处理大小。使用CPU或GPU训练网络。使用GPU需要并行计算工具箱™. 要查看支持哪些GPU,请参阅万博1manbetxGPU支万博1manbetx持情况(并行计算工具箱).有关其他参数的信息,请参阅培训选项(深度学习工具箱).这个例子使用GPU进行训练。

选项=培训选项(“亚当”...“ExecutionEnvironment”“图形”...“MiniBatchSize”,128,...“MaxEpochs”,30,...“InitialLearnRate”,1e-2,...“LearnRateSchedule”“分段”...“LearnRateDropFactor”, 0.1,...“LearnRateDropPeriod”,10,...“洗牌”'每个时代'...“详细”,错误的,...“阴谋”“培训进度”);

分类信号没有汽车噪音

加载无汽车噪音的数据集,并使用辅助功能helperPlotTrainData要绘制训练数据集中五个类别中每个类别的一个示例,

负载(fullfile (tempdir“PedBicCarData”“trainDataNoCar.mat”)))%负荷训练数据集负载(fullfile (tempdir“PedBicCarData”“testDataNoCar.mat”)))%负载测试数据集负载(fullfile (tempdir“PedBicCarData”“TF.mat”)))%加载时间和频率信息helperPlotTrainData (trainDataNoCar trainLabelNoCar T、F)

培训您创建的CNN。您可以在培训过程中查看准确性和损失。在30个时期,培训过程的准确性差价近95%。

trainedNetNoCar = trainNetwork (trainDataNoCar、trainLabelNoCar层,选择);

使用经过培训的网络和分类函数获取测试数据集的预测标签testDataNoCar.的变量predtestlabel.包含网络预测。在没有汽车噪声的情况下,该网络对测试数据集的准确率约为95%。

predTestLabel =分类(trainedNetNoCar testDataNoCar);testAccuracy = mean(predTestLabel == testLabelNoCar)
testAccuracy = 0.9530

使用混淆矩阵查看关于每个类别的预测性能的详细信息。训练后的网络的混淆矩阵表明,在每个类别中,网络对测试数据集中信号的标签都有很高的准确性。

figure confusionchart(testLabelNoCar、predTestLabel);

利用汽车噪声对特征进行分类

要分析汽车噪音的影响,请将包含汽车噪声的数据分类培训生网络,在没有汽车噪音的情况下进行训练。

加载汽车噪声损坏的测试数据集testdatacarnoise.mat.

负载(fullfile (tempdir“PedBicCarData”“testDataCarNoise.mat”)))

将卡噪声损坏的测试数据输入到网络。测试数据集的预测精度随着汽车噪声的显着降至大约70%,因为网络从未看到培训含有汽车噪声的样本。

predtestlabel =分类(经过训练的网络,testdatacarnoise);testaccuracy =均值(predtestlabel == testlabelcarnoise)
testAccuracy = 0.7176

混淆矩阵表明,大多数预测错误发生在网络从“行人”、“行人+行人”或“行人+自行车”类别中接收场景并将其分类为“自行车人”时。

confusionchart (testLabelCarNoise predTestLabel);

汽车噪声严重影响了分类器的性能。为了解决这个问题,使用包含汽车噪音的数据来训练CNN。

通过将汽车噪声添加到训练数据集对CNN进行再训练

加载汽车噪声损坏的培训数据集TrainDatacarnoise.mat

负载(fullfile (tempdir“PedBicCarData”“trainDataCarNoise.mat”)))

使用汽车噪声损坏的训练数据集对网络进行再训练。在30个时代中,训练过程几乎达到了90%的准确率。

TrouthNetCarnoise = Trainnetwork(TrainDataCarnoise,TrainLabelcarnoise,图层,选项);

将汽车噪声测试数据集输入网络trainedNetCarNoise.预测准确率约为87%,比无汽车噪声样本训练的网络性能高出约15%。

predTestLabel =分类(trainedNetCarNoise testDataCarNoise);testaccuracy =均值(predtestlabel == testlabelcarnoise)
测试精度=0.8728

混淆矩阵表明了网络trainedNetCarNoise在预测有一个行人的场景和有两个行人的场景时执行得更好。

confusionchart (testLabelCarNoise predTestLabel);

案例分析

为了更好地理解网络的性能,请检查其对重叠签名的分类性能。这一节只是为了举例说明。由于GPU训练的不确定性行为,当你重新运行这个例子时,你可能不会在本节得到相同的分类结果。

例如,没有汽车噪声的汽车噪声损坏测试数据的特征码#4有两个自行车手,具有重叠的微多普勒特征码。网络正确预测场景中有两个自行车手。

k = 4;显示亮度图像(T、F testDataCarNoise (:,:,:, k))轴xy包含('时间'')ylabel(的频率(赫兹))标题(“地面实况:”+ +字符串(testLabelCarNoise (k))”,预测:“+字符串(predTestLabel (k)))

从情节来看,签名似乎只来自一个骑自行车的人。加载数据CaseStudyData.mat场景中的两个物体。数据包含沿快速时间求和的返回信号。将STFT应用于每个信号。

负载CaseStudyData.matM = 200;%FFT窗口长度β= 6;%的窗口参数w = kaiser(m,beta);% kaiser窗地板(R = 1.7 * (m - 1) /(β+ 1);%粗略的估计noverlap =先生;%重叠长度(Sc, F, T) = stft (x, 1 / Tsamp,“窗口”w,'fftlength'M * 2,“重叠长度”,noverlap);ii=1:2子批次(1,2,ii)图像Sc(T,F,10*log10(abs(Sc(:,:,ii)))xlabel('时间'')ylabel(的频率(赫兹))标题(“自行车”)轴心广场xy标题([“自行车”Num2str (ii)]) c = colorbar;c.Label.String =“dB”结束

骑自行车者2号的信号幅度比骑自行车者1号的信号幅度小得多,而且两个骑自行车者的信号重叠。当它们重叠时,无法从视觉上区分这两个签名。但是,神经网络可以正确地对场景进行分类。

另一个令人感兴趣的情况是,当网络将汽车噪音与骑自行车的人混淆时,如汽车噪音损坏测试数据的签名#267所示:

图k = 267;显示亮度图像(T、F testDataCarNoise (:,:,:, k))轴xy包含('时间'')ylabel(的频率(赫兹))标题(“地面实况:”+ +字符串(testLabelCarNoise (k))”,预测:“+字符串(predTestLabel (k)))

与汽车相比,骑自行车的人的特征较弱,而且特征有汽车噪音的尖峰。由于汽车的特征与骑自行车或低速行走的行人的特征极为相似,且微多普勒效应很小,网络对场景的错误分类的可能性很大。

参考文献

[1] Chen,V. C.雷达中的微多普勒效应.伦敦:2011年Artech House。

Gurbuz, S. Z.和Amin, M. G.。基于深度学习的雷达人体运动识别:室内监测的应用前景IEEE信号处理杂志.2019年第36卷第4期16-28页。

比利时风信子,D.,陈冠希。77 GHz汽车雷达传感器行人和自行车的微多普勒特性在第十一届欧洲天线与传播会议,2912–2916. 巴黎:欧洲天线和传播协会,2017年。

A.罗伯逊,R.默里-史密斯和F.费奥拉内利。“基于汽车雷达和深度神经网络的不同运动目标的实用分类”。雷达,声纳和导航. 2017年第12卷第10期,第1082-1089页。

[5] Parashar,K.,N.,M. oveneke,M.Rykunov,H. Sahli和A. Bourdoux。“微多普勒特征用卷积自动编码器提取用于低延迟目标分类。”在2017年IEEE雷达会议(RadarConf), 1739 - 1744。西雅图:IEEE 2017。