主要内容

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

这个例子展示了如何使用深度学习网络和时频分析基于行人和骑自行车者的微多普勒特征进行分类。

放置在雷达前面的物体的不同部分的运动会产生可用于识别对象的微多普勒签名。此示例使用卷积神经网络(CNN)根据其签名来识别行人和骑自行车的人。

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

通过模拟产生的合成数据

使用用于训练网络的数据使用backscatterpyestrian.Backscatterbicc车手从雷达工具箱™。这些功能分别模拟了从行人和骑自行车骑士反映的信号的雷达反向散射。

辅助函数helperBackScatterSignals产生指定数量的行人,自行车骑士和汽车雷达回报。因为该示例的目的是对行人和骑自行车的人进行分类,所以该示例仅考虑汽车签名作为噪声来源。为了了解要解决的分类问题,检查一个从行人,骑自行车的人和汽车的微多普勒签名的一个实现。(对于每个实现,返回信号具有尺寸 N 快速地 -经过- N , 在哪里 N 快速地 夏令时间样本和 N 缓慢时间样品。看雷达数据立方体为更多的信息。)

numPed = 1;百分比的行人实现numBic = 1;%骑自行车的人数实现numCar = 1;%汽车实现数量[xPedRec, xBicRec xCarRec Tsamp] = helperBackScatterSignals (numPed, numBic numCar);

辅助函数helperDopplerSignatures计算雷达返回的短时傅里叶变换(STFT)以产生微多普勒签名。为了获得微多普勒签名,请使用辅助功能将STFT和预处理方法应用于每个信号。

(加速、T、F) = helperDopplerSignatures (xPedRec Tsamp);[SBic, ~, ~] = helperDopplerSignatures (xBicRec Tsamp);[伤疤,~,~]= helperDopplerSignatures (xCarRec Tsamp);

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

%绘制对象的第一个实现图形子图(1,3,1)ImageC(T,F,Sped(:,:,1))Ylabel('频率(Hz)') 标题('行人')轴正方形XY.子图(1,3,2)ImageC(t,f,sbic(:,:,1))xlabel(“时间(s)”) 标题('骑自行车的人')轴正方形XY.次要情节(1、3、3)显示亮度图像(T, F,疤痕(:,:1)标题(“汽车”)轴正方形XY.

归一化光谱图(STFT绝对值)表明,这三个天体具有明显的特征。具体而言,行人和骑自行车者的光谱图分别具有丰富的由手臂和腿的摆动和车轮的转动引起的微多普勒特征。相比之下,在本例中,汽车被建模为带有刚体的点目标,因此汽车的频谱图显示,短期多普勒频移变化很小,说明微多普勒效应很小。

结合对象

由于行人和骑自行车者的微多普勒特征是不同的,因此将单个实现分类为行人或骑自行车者是相对简单的。然而,分类多个重叠的行人或骑自行车的人,加上高斯噪声或汽车噪声,是非常困难的。

如果同时在雷达的检测区域中存在多个对象,则接收到的雷达信号是来自所有对象的检测信号的求和。例如,通过高斯背景噪声生成用于行人和骑自行车的人的接收的雷达信号。

%设置接收端的高斯噪声电平rx =分阶段。ReceiverPreamp (“获得”25岁的'噪音文件'10);xRadarRec =复杂(0(大小(xPedRec)));为了2 = 1:尺寸(xPedRec, 3) xRadarRec(:,:,(二)= rx (xPedRec (:,:, ii) + xBicRec(:,:,(二));结尾

然后通过使用STFT获得接收信号的微多普勒签名。

[S,〜,〜] =辅助普勒斯类(Xradarrec,Tsamp);图ImageC(t,f,s(:,:,1))%绘制第一次实现XY.Xlabel(“时间(s)”) ylabel ('频率(Hz)') 标题('行人和骑自行车的分批图'

由于行人和骑自行车的人的特征在时间和频率上重叠,很难区分这两个物体。

生成培训数据

在该示例中,您通过使用具有不同性质的模拟的对象的模拟实现来训练CNN - 例如,以不同的速度行走的不同高度的不同速度和行人的骑自行车者。假设雷达在原点处固定,在一个实现中,一个物体或多个物体分别均匀地分布在沿x和y轴的[5,45]和[-10,10]米的矩形区域中。

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

1)行人

  • 高度 - 以[1.5,2]米的间隔均匀分布

  • 标题 - 以[-180,180]度的间隔均匀分布

  • 速度 - 以[0,1.4的间隔均匀分布H米/秒,在那里H为高度值

2)骑自行车的人

  • 标题 - 以[-180,180]度的间隔均匀分布

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

  • 齿轮传动比 - 以[0.5,6]的间隔均匀分布

  • 踩踏或惯性 - 踩踏的50%(滑行意味着骑自行车的人在没有踩踏的情况下移动)

3)汽车

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

卷积网络的输入是由分贝中表达的谱图组成的微多普勒签名,并标准化为[0,1],如图所示:

雷达回波来源于不同的物体和物体的不同部分。根据配置的不同,有些回报率要比其他回报率高得多。高回报往往掩盖低回报。对数缩放通过使返回强度具有可比性来增强功能。振幅归一化可以帮助CNN更快地收敛。

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

  • 现场有一个行人

  • 一个骑自行车的人在现场存在

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

  • 在现场存在的两个行人

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

下载数据

此示例的数据包括20,000个行人,20,000名骑自行车的人和12,500个通过使用辅助功能而产生的汽车信号helperBackScatterSignalshelperDopplerSignatures.将信号分为两个数据集:一个是没有汽车噪声样本的数据集,一个是有汽车噪声样本的数据集。

对于第一个数据集(没有汽车噪声),组合了行人和自行车信号,增加了高斯噪声,并且计算了微多数签名以为待分类的五个场景中的每一个生成5000个签名。

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

要生成第二数据集(具有汽车噪声),遵循第一个数据集的过程,除了将车噪声添加到签名的50%之外。培训和测试数据集中的签名比例与车噪声相同。

下载并解压缩临时目录中的数据,其位置由Matlab®指定tempdir命令。数据大小为21gb,下载过程可能需要一些时间。如果您有不同的文件夹中的数据tempdir,请在后续说明中修改目录名称。

%下载数据dataURL ='https://ssd.mathwands.com/万博1manbetxsupportfiles/spt/data/pedbiccardata.zip';saveFolder = fullfile (tempdir,'pedbiccardata');zipFile = fullfile (tempdir,“PedBicCarData.zip”);如果~存在(zipFile“文件”)Websave(ZipFile,Dataull);elseif〜存在(Savefolder,'dir'%解压数据解压缩(Zipfile,Tempdir)结尾

数据文件如下:

  • Traindatanocar.mat.包含训练数据集TrainDatanocar.及其标签集trainLabelNoCar

  • testDataNoCar.mat包含测试数据集testdatanocar.及其标签集testLabelNoCar

  • trainDataCarNoise.mat包含训练数据集TrainDatacarnoise.及其标签集trainLabelCarNoise

  • testDataCarNoise.mat包含测试数据集testDataCarNoise及其标签集testLabelCarNoise

  • tf.mat包含微多普勒签名的时间和频率信息。

网络架构

创建一个CNN与五个卷积层和一个完全连接层。前四个卷积层之后是批处理归一化层、整流线性单元(ReLU)激活层和最大池化层。在最后的卷积层中,最大池化层被平均池化层取代。输出层是激活softmax后的分类层。有关网络设计指导,请参见深度学习技巧(深度学习工具箱)

images = [imageInputLayer([size(S,1),size(S,2),1], images = [imageInputLayer([size(S,1), 1],]'正常化''没有任何')卷积2dlayer(10,16,'填充'“相同”)BatchnormalizationLayer Ruilulayer MaxPooling2Dlayer(10,'走吧',2)卷积2dlayer(5,32,'填充'“相同”)BatchnormalizationLayer Ruilulayer MaxPooling2Dlayer(10,'走吧',2)卷积2dlayer(5,32,'填充'“相同”)BatchnormalizationLayer Ruilulayer MaxPooling2Dlayer(10,'走吧',2)卷积2dlayer(5,32,'填充'“相同”)BatchnormalizationLayer Ruilulayer MaxPooling2Dlayer(5,'走吧',2)卷积2dlayer(5,32,'填充'“相同”)BatchnormalizationLayer Rublayer普通泡泡液(2,'走吧',2)全连接列(5)SoftMaxLayer分类层]
图层数组:1”图像输入400 x144x1图片2”卷积16 10 x10旋转步[1]和填充“相同”3“批量标准化批量标准化4”ReLU ReLU 5”麦克斯池10 x10马克斯池步(2 - 2)和填充[0 0 0 0]6”卷积32 5 x5旋转步[1]和填充“相同”7”批量标准化批量正常化8“ReLU ReLU 9”麦克斯池10 x10马克斯池步(2 - 2)和填充[0 0 0 0]10“卷积32 5 x5的隆起与步幅[1]和填充相同11”批量标准化批量标准化12“ReLU ReLU 13”马克斯池10 x10马克斯池步(2 - 2)和填充[0 0 0 0]14“卷积32 5 x5旋转步[1]和填充“相同”15“批量标准化批量标准化16”ReLU ReLU 17”麦克斯池5 x5 Max池步(2 - 2)和填充(0 0 0 0)18”卷积32 5 x5旋转步[1]和填充“相同”19“批量标准化批量正常化20”ReLU ReLU 21“平均池2 x2平均池与stride[2 2]和填充[0 0 0]22 "全连接5全连接层23 " Softmax Softmax 24

指定优化求解器和超级参数,以使用培训CNNtrainingOptions.本例使用ADAM优化器和128的迷你批处理大小。使用CPU或GPU训练网络。使用GPU需要并行计算工具箱™。要查看支持的图形处理器,请参见万博1manbetxGPU通万博1manbetx过发布支持(并行计算工具箱).其他参数请参见trainingOptions(深度学习工具箱).此示例使用GPU进行培训。

选择= trainingOptions (“亚当”...'executionenvironment'“图形”...“MiniBatchSize”, 128,...“MaxEpochs”30岁的...'italllearnrate'1飞行,...'shownrateschedule'“分段”...'学习ropfactor',0.1,...“LearnRateDropPeriod”10...'洗牌'“every-epoch”...'verbose'假的,...'plots'“训练进步”);

在没有汽车噪音的情况下分类签名

在没有汽车噪音的情况下加载数据集并使用helper函数HelperplottrainData.要绘制训练数据集中五个类别中的每个类别的一个示例,

load(fullfile(tempdir,'pedbiccardata'“trainDataNoCar.mat”))%加载训练数据集load(fullfile(tempdir,'pedbiccardata'“testDataNoCar.mat”))%加载测试数据集load(fullfile(tempdir,'pedbiccardata''tf.mat'))%加载时间和频率信息helperPlotTrainData (trainDataNoCar trainLabelNoCar T、F)

训练你创造的CNN。您可以在培训过程中查看准确性和损失情况。在30个时代,训练过程达到了几乎95%的准确率。

TrouthNetnocar = Trainnetwork(TrainDatanocar,TrainLabelnocar,图层,选项);

使用训练有素的网络和分类获取测试数据集的预测标签的功能testdatanocar..变量predTestLabel包含网络预测。在没有汽车噪声的情况下,该网络对测试数据集的准确率约为95%。

predtestlabel =分类(经过训练的网络,testdatanocar);testAccuracy =均值(predtestlabel == testlabelnocar)
testaccuracy = 0.9530.

使用混淆矩阵查看每个类别的预测性能的详细信息。训练网络的困惑矩阵显示,在每个类别中,网络在测试数据集中的标签以高精度预测到测试数据集中的信号。

图confusionchart (testLabelNoCar predTestLabel);

用汽车噪声分类信号

为了分析汽车噪声的影响,对含有汽车噪声的数据进行分类trainedNetNoCar网络,训练时没有汽车噪音。

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

load(fullfile(tempdir,'pedbiccardata''testdatacarnoise.mat'))

将汽车噪声破坏测试数据集输入网络。由于网络没有看到包含汽车噪声的训练样本,测试数据集的预测准确率明显下降到70%左右。

predTestLabel =分类(trainedNetNoCar testDataCarNoise);testAccuracy = mean(predTestLabel == testLabelCarNoise)
testaccuracy = 0.7176.

困惑矩阵表明,当网络从“行人”的“行人”“行人+行人”或“行人+骑自行车的”课程中的场景中占据了场景并将其分类为“自行车骑士”时,大多数预测错误都会发生。

confusionchart (testLabelCarNoise predTestLabel);

汽车噪音显着阻碍了分类器的性能。要解决此问题,请使用包含汽车噪音的数据训练CNN。

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

加载受汽车噪声影响的训练数据集trainDataCarNoise.mat

load(fullfile(tempdir,'pedbiccardata''traindatacarnoise.mat'))

利用受汽车噪声干扰的训练数据集对网络进行再训练。在30个时代,训练过程达到了近90%的准确率。

trainedNetCarNoise = trainNetwork (trainDataCarNoise、trainLabelCarNoise层,选择);

将汽车噪声破坏测试数据集输入网络TroustNetCarnoise..预测精度约为87%,比没有汽车噪声样本的网络的性能高约15%。

predtestlabel =分类(TrouthNetCarnoise,TestDatacarnoise);testAccuracy = mean(predTestLabel == testLabelCarNoise)
testAccuracy = 0.8728

混乱矩阵显示网络TroustNetCarnoise.在预测有一个行人的场景和有两个行人的场景时表现得更好。

confusionchart (testLabelCarNoise predTestLabel);

案例研究

为了更好地了解网络的性能,请检查其在分类重叠签名方面的性能。这部分只是为了插图。由于GPU培训的非确定性行为,当您重新运行此示例时,您可能无法在本节中获得相同的分类结果。

例如,汽车噪声损坏的测试数据的特征#4,它没有汽车噪声,有两个具有重叠微多普勒特征的自行车。网络准确预测现场有两名骑车人。

k = 4;ImageC(t,f,testdatacarnoise(::::,k))轴XY.Xlabel(“时间(s)”) ylabel ('频率(Hz)') 标题('真相:'+字符串(testlabelcarnoise(k))+', 预言: '+字符串(predtestlabel(k)))

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

加载CasestudyData.mat.m = 200;FFT窗长beta = 6;%window参数w = kaiser (M,β);%kaiser窗口r =地板(1.7 *(m-1)/(beta + 1));% 粗略估算noverlap = m-r;%重叠长度[Sc,f,t] = stft(x,1 / tsamp,'窗户',w,“FFTLength”,m * 2,“OverlapLength”, noverlap);为了2 = 1:2次要情节(1、2、2)显示亮度图像(T F 10 * log10 (abs (Sc (:,: ii))))包含(“时间(s)”) ylabel ('频率(Hz)') 标题('骑自行车的人')轴正方形XY.标题(['骑自行车的人'num2str(ii)])c =彩色键;c.label.string =.“数据库”结尾

2号自行车手的签名的振幅比1号的要弱得多,两个自行车手的签名是重叠的。当它们重叠时,这两个签名在视觉上无法区分。然而,神经网络可以正确地分类场景。

另一个有趣的例子是,当网络混淆了汽车噪音和骑自行车的人,如在汽车噪音损坏的测试数据的签名#267:

图k = 267;ImageC(t,f,testdatacarnoise(::::,k))轴XY.Xlabel(“时间(s)”) ylabel ('频率(Hz)') 标题('真相:'+字符串(testlabelcarnoise(k))+', 预言: '+字符串(predtestlabel(k)))

与汽车相比,骑自行车的签名是薄弱的,并且签名具有汽车噪音的尖峰。因为汽车的签名非常类似于骑自行车的踩踏板或行人以低速行走,并且具有很少的微量多普勒效果,网络可能会对场景进行分类,可能是不正确的。

参考文献

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

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

[3] Belgiovane,D.和C. C. Chen。“77 GHz的汽车雷达传感器的行人和自行车的微量多普勒特性。”在第11欧洲天线和传播(eucap)会议,2912 - 2916。巴黎:欧洲天线与传播协会,2017。

[4] Angelov,A.,A. Robertson,R. Murray-Smith和F.Fioranelli。“使用汽车雷达和深神经网络的不同移动目标的实际分类。”雷达,声纳和导航.第12卷第10期,2017年,第1082-1089页。

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