主要内容

基于深度学习的行人和自行车分类

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

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

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

模拟合成数据生成

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

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

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

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

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

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

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

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

结合对象

由于行人和骑自行车的人的微多普勒信号是不同的,因此将单个实现分类为行人或骑自行车的人是相对简单的。然而,在添加高斯噪声或汽车噪声的情况下,对多个重叠的行人或骑自行车的人进行分类要困难得多。

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

配置接收端的高斯噪声电平rx =分阶段。ReceiverPreamp (“获得”25岁的“NoiseFigure”10);xRadarRec =复杂(0(大小(xPedRec)));2 = 1:尺寸(xPedRec, 3) xRadarRec(:,:,(二)= rx (xPedRec (:,:, ii) + xBicRec(:,:,(二));结束

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

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

因为行人和骑自行车的人的信号在时间和频率上重叠,区分这两个物体是很困难的。

生成的训练数据

在本例中,您通过使用由具有不同属性的对象的模拟实现组成的数据来训练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个使用助手函数生成的汽车信号组成helperBackScatterSignals而且helperDopplerSignatures.信号被分为两个数据集:一个没有汽车噪声样本,一个有汽车噪声样本。

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

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

为了生成第二个数据集(包含汽车噪声),遵循第一个数据集的过程,只是汽车噪声被添加到签名的50%。在训练和测试数据集中,有和没有汽车噪声的签名所占比例是相同的。

下载并解压临时目录中的数据,其位置由MATLAB®的tempdir命令。数据的大小为21 GB,下载过程可能需要一些时间。如果在不同的文件夹中有数据tempdir,在后续提示中修改目录名称。

%下载数据dataURL =“https://ssd.mathworks.com/supportfiles/SPT/data/PedBicCarData.zip”;saveFolder = fullfile (tempdir,“PedBicCarData”);zipFile = fullfile (tempdir,“PedBicCarData.zip”);如果~存在(zipFile“文件”) websave (zipFile dataURL);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激活后的分类层。有关网络设计指导,请参见深度学习技巧(深度学习工具箱)

layers = [imageInputLayer([size(S,1),size(S,2),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“填充”“相同”(2)“步”2) fullyConnectedLayer(5) softmaxLayer classificationLayer]
带有图层的图层数组: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”平均池化2x2平均池化与步幅[2 2]和填充[0 0 0 0]22”全连接5全连接层23”Softmax Softmax 24”分类输出crossentropyex

指定优化求解器和训练CNN使用的超参数trainingOptions.本例使用ADAM优化器和128的小批处理大小。使用CPU或GPU训练网络。使用GPU需要并行计算工具箱™。要查看支持哪些gpu,请参见GPU计算的需求(并行计算工具箱).有关其他参数的信息,请参见trainingOptions(深度学习工具箱).本例使用GPU进行训练。

选择= trainingOptions (“亚当”...“ExecutionEnvironment”“图形”...“MiniBatchSize”, 128,...“MaxEpochs”30岁的...“InitialLearnRate”1飞行,...“LearnRateSchedule”“分段”...“LearnRateDropFactor”, 0.1,...“LearnRateDropPeriod”10...“洗牌”“every-epoch”...“详细”假的,...“阴谋”“训练进步”);

分类签名无汽车噪音

在没有汽车噪音的情况下加载数据集并使用助手函数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

使用混淆矩阵来查看每个类别的预测性能的详细信息。经过训练的网络的混淆矩阵表明,在每个类别中,网络预测测试数据集中信号的标签具有较高的准确性。

图confusionchart (testLabelNoCar predTestLabel);

用汽车噪声对信号进行分类

为了分析汽车噪声的影响,将含有汽车噪声的数据进行分类trainedNetNoCar在没有汽车噪音的情况下进行训练。

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

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

将汽车噪声污染测试数据集输入网络。含有汽车噪声的测试数据集的预测准确率显著下降到70%左右,因为网络从未看到包含汽车噪声的训练样本。

predTestLabel =分类(trainedNetNoCar testDataCarNoise);testAccuracy =平均值(predTestLabel == testLabelCarNoise)
testAccuracy = 0.7176

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

confusionchart (testLabelCarNoise predTestLabel);

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

通过在训练数据集中添加汽车噪音来重新训练CNN

加载汽车噪声损坏的训练数据集trainDataCarNoise.mat

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

利用汽车噪声污染的训练数据集对网络进行再训练。在30个阶段中,训练过程达到了几乎90%的准确率。

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

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

predTestLabel =分类(trainedNetCarNoise testDataCarNoise);testAccuracy =平均值(predTestLabel == testLabelCarNoise)
testAccuracy = 0.8728

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

confusionchart (testLabelCarNoise predTestLabel);

案例研究

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

例如,汽车噪声损坏测试数据的签名#4,它没有汽车噪声,有两个自行车手的微多普勒签名重叠。网络正确地预测了场景中有两个骑自行车的人。

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

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

负载CaseStudyData.matM = 200;FFT窗口长度β= 6;%的窗口参数w = kaiser (M,β);% kaiser窗地板(R = 1.7 * (m - 1) /(β+ 1);%粗略的估计noverlap =先生;%重叠长度(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 (的频率(赫兹))标题(“自行车”)轴广场xy标题([“自行车”Num2str (ii)]) c = colorbar;c.Label.String =“数据库”结束

骑车人2签名的振幅比骑车人1的振幅要弱得多,两个骑车人的签名重叠。当它们重叠时,无法从视觉上区分这两个签名。然而,神经网络对场景的分类是正确的。

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

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

与汽车的信号相比,骑自行车的人的信号较弱,而汽车的噪音又使信号有尖峰。由于汽车的特征与骑自行车的人或低速行走的行人的特征非常相似,而且几乎没有微多普勒效应,因此网络对场景进行错误分类的可能性很大。

参考文献

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

葛布兹,s.z,阿明,m.g.。基于雷达的人体运动识别与深度学习:室内监控的有前途的应用。IEEE信号处理杂志.2019年第4期第36卷第16-28页。

[3]比利时文,D.和陈c.c.。77 GHz汽车雷达传感器中行人和自行车的微多普勒特性。在第11届欧洲天线与传播会议,2912 - 2916。巴黎:欧洲天线与传播协会,2017。

[4]安杰洛夫,A.罗伯逊,R.默里-史密斯,F.菲奥拉内利。利用汽车雷达和深度神经网络对不同运动目标进行实用分类。IET雷达,声纳和导航.2017年第10期,第12卷,第1082-1089页。

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

Baidu
map