主要内容

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

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

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

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

模拟合成数据生成

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

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

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

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

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

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

绘制第一个实现对象图subplot(1,3,1) imagesc(T,F,SPed(:,:,1)) ylabel(的频率(赫兹))标题(“行人”)轴广场xysubplot(1,3,2) imagesc(T,F,SBic(:,:,1)) xlabel(“时间(s)”)标题(“自行车”)轴广场xysubplot(1,3,3) imagesc(T,F,SCar(:,:,1))“汽车”)轴广场xy

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

结合对象

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

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

配置接收机的高斯噪声级Rx =相控。ReceiverPreamp (“获得”25岁的“NoiseFigure”10);xRadarRec = complex(零(大小(xPedRec)));2 = 1:尺寸(xPedRec, 3) xRadarRec(:,:,(二)= rx (xPedRec (:,:, ii) + xBicRec(:,:,(二));结束

然后利用STFT得到接收信号的微多普勒特征。

[S,~,~] = 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/金宝appsupportfiles/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激活后的分类层。有关网络设计指导,请参见深度学习技巧和技巧(深度学习工具箱)

图层= [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]
图层数组= 24x11”图像输入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平均池化与stride[2 2]和填充[0 0 0 0 0]22 "全连接5全连接层23 " Softmax Softmax 24 "分类输出

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

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

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

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

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

训练你创建的CNN。您可以查看训练过程中的准确性和损失。在30个epoch中,训练过程几乎达到95%的准确率。

trainedNetNoCar = trainNetwork(trainDataNoCar,trainLabelNoCar,layers,options);

使用训练过的网络和分类函数获取测试数据集的预测标签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 = mean(predTestLabel == testLabelCarNoise)
testAccuracy = 0.7176

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

confusionchart (testLabelCarNoise predTestLabel);

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

通过将汽车噪声添加到训练数据集来重新训练CNN

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

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

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

trainedNetCarNoise = trainNetwork(trainDataCarNoise,trainLabelCarNoise,layers,options);

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

predTestLabel = category (trainedNetCarNoise,testDataCarNoise);testAccuracy = mean(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窗口长度Beta = 6;%窗口参数w = kaiser(M,beta);%凯撒窗R =下限(1.7*(M-1)/(beta+1));%粗略估计重叠= 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 (的频率(赫兹))标题(“自行车”)轴广场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。

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

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

安杰洛夫,A.罗伯逊,R.默里-史密斯和F.费奥拉内利。使用汽车雷达和深度神经网络对不同运动目标的实际分类IET雷达,声纳和导航.Vol. 12, no . 10, 2017, pp. 1082-1089。

帕拉沙尔,K. N., M. C.奥维尼克,M.雷库诺夫,H.沙利和A.布尔杜。“使用卷积自编码器进行低延迟目标分类的微多普勒特征提取。”在2017 IEEE雷达会议, 1739 - 1744。西雅图:IEEE, 2017。