行人和自行车使用深度学习分类
这个例子展示了如何将行人和骑车人基于微多普勒特征使用深度学习网络和时频分析。
不同部位的运动物体放置在前雷达产生微多普勒特征,可用于识别对象。这个示例使用卷积神经网络(CNN)来识别行人和骑车人基于他们的签名。
这个例子中列车深度学习网络使用模拟数据然后检查网络重叠的情况下执行分类两个签名。
合成数据生成的模拟
使用生成的数据用于训练网络backscatterPedestrian
和backscatterBicyclist
从雷达工具箱™。这些函数模拟的雷达后向散射信号反映行人和骑车人。
辅助函数helperBackScatterSignals
生成指定数量的行人、骑自行车和汽车雷达的回报。因为这个例子的目的是将行人和骑车人,这个例子认为汽车签名噪声源。了解分类问题来解决,检查一个实现的微多普勒特征从一个行人,骑自行车和汽车。(对于每个实现,返回信号维度
——- - - - - -
,在那里
的数量是夏令时间样品和
的数量是标准时间样本。看到雷达数据立方体为更多的信息。)
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);
情节的时频图行人,自行车,汽车实现。
%画第一个实现对象图次要情节(1、3、1)显示亮度图像(T, F,加速(:,:1)ylabel (的频率(赫兹))标题(“行人”)轴广场xy次要情节(1、3、2)显示亮度图像(T, F, SBic(:,: 1)包含(“时间(s)”)标题(“自行车”)轴广场xy次要情节(1、3、3)显示亮度图像(T, F,疤痕(:,:1)标题(“汽车”)轴广场xy
规范化的谱图(STFT绝对值)表明这三个对象有不同的签名。具体来说,行人和骑自行车的声音(有丰富的微多普勒特征造成的胳膊和腿的摆动和旋转的轮子,分别。相比之下,在这个例子中,汽车被建模为一个点与刚体目标,所以汽车的谱图表明,短期内多普勒频移变化小,表明小微多普勒效应。
结合对象
分类一个实现行人或骑自行车是相对简单的,因为行人和自行车微多普勒特征是不同的。然而,多个重叠的行人或骑车人分类,添加高斯噪声或汽车噪音,是更加困难的。
如果多个对象存在于雷达探测区域的同时,接收到的雷达信号的求和检测信号的所有对象。作为一个例子,生成接收到的雷达信号与高斯背景噪声为行人和骑自行车。
%在接收机配置高斯噪声水平rx = phased.ReceiverPreamp (“获得”25岁的“NoiseFigure”10);xRadarRec =复杂(0(大小(xPedRec)));为2 = 1:尺寸(xPedRec, 3) xRadarRec(:,:,(二)= rx (xPedRec (:,:, ii) + xBicRec(:,:,(二));结束
然后获得微多普勒特征利用STFT接收的信号。
(年代,~,~)= helperDopplerSignatures (xRadarRec Tsamp);图显示亮度图像(T、F S (:,: 1))%画第一个实现轴xy包含(“时间(s)”)ylabel (的频率(赫兹))标题(一个行人和一个骑自行车的光谱图)
因为行人和骑脚踏车者签名重叠在时间和频率,区分这两个对象是很困难的。
生成的训练数据
在本例中,您训练CNN使用数据组成的模拟实现的对象有不同的特性—例如,拥有量与不同高度不同的速度和行人步行速度不同。假设雷达是固定在原点,在一个实现,一个或多个对象是均匀分布的矩形区域[5,45]和[10]-10年米沿着X和Y轴,分别。
三个对象的其他属性随机调整如下:
1)行人
高度,均匀分布的区间[1.5,2]米
标题——均匀分布的区间(-180、180)度
速度——均匀分布的区间[0,1.4h米/秒,在那里
h
是高价值
2)骑自行车
标题——均匀分布的区间(-180、180)度
速度-间隔均匀分布的1,10米/秒
齿轮传动比,均匀分布的区间(0.5 6)
骑车或滑行- 50%的概率骑车(滑行意味着自行车运动没有骑车)
3)汽车
速度——均匀分布的区间[0,10]米/秒沿X和Y方向
卷积的输入网络微多普勒特征组成的谱图用分贝表示归一化[0,1],此图所示:
雷达返回源自不同的对象和对象的不同部分。根据配置不同,有些回报比其他人更强。更强的回报往往掩盖弱的。对数比例增加的特性通过返回优势可比。振幅归一化帮助CNN收敛更快。
的数据集包含实现以下场景:
一个行人出现在现场
一个骑自行车出现在现场
一个行人和一个骑自行车出现在现场
两个行人出现在现场
两个骑自行车出现在现场
下载数据
这个例子的数据由20000名行人,20000骑自行车,12500车信号通过使用辅助函数生成的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激活。网络设计的指导,请参阅深度学习技巧和窍门(深度学习工具箱)。
层= [imageInputLayer([大小(年代,1),大小(年代,2),1],“归一化”,“没有”16)convolution2dLayer(10日,“填充”,“相同”)batchNormalizationLayer reluLayer maxPooling2dLayer (10,“步”32岁的,2)convolution2dLayer (5“填充”,“相同”)batchNormalizationLayer reluLayer maxPooling2dLayer (10,“步”32岁的,2)convolution2dLayer (5“填充”,“相同”)batchNormalizationLayer reluLayer maxPooling2dLayer (10,“步”32岁的,2)convolution2dLayer (5“填充”,“相同”)batchNormalizationLayer reluLayer maxPooling2dLayer (5“步”32岁的,2)convolution2dLayer (5“填充”,“相同”)batchNormalizationLayer reluLayer averagePooling2dLayer (2“步”,2)fullyConnectedLayer (5) softmaxLayer classificationLayer]
层x1 = 24层阵列层: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 Max池步(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平均池步(2 - 2)和填充(0 0 0 0)22”完全连接5完全连接层23“Softmax Softmax 24”crossentropyex分类输出
指定优化解算器和hyperparameters训练CNN使用trainingOptions
。下面的例子使用了亚当优化和mini-batch大小为128。列车网络使用一个CPU或GPU。使用GPU需要并行计算工具箱™。看到支持gpu,明白了GPU计算的需求(并行计算工具箱)。其他参数的信息,请参阅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个时代,培训过程达到近95%的准确率。
trainedNetNoCar = trainNetwork (trainDataNoCar、trainLabelNoCar层,选择);
使用网络和训练分类
功能获得预测标签的测试数据集testDataNoCar
。的变量predTestLabel
包含网络预测。网络达到约95%精度测试数据集没有汽车的噪音。
predTestLabel =分类(trainedNetNoCar testDataNoCar);testAccuracy =意味着(predTestLabel = = testLabelNoCar)
testAccuracy = 0.9530
使用一个混淆矩阵查看详细信息为每个类别预测性能。训练网络的混淆矩阵表明,在每个类别中,网络预测标签信号的测试数据集与高度的准确性。
图confusionchart (testLabelNoCar predTestLabel);
签名与汽车噪声进行分类
分析汽车噪声的影响,包含汽车噪声的分类数据trainedNetNoCar
网络,这是训练没有汽车的噪音。
加载car-noise-corrupted测试数据集testDataCarNoise.mat
。
负载(fullfile (tempdir“PedBicCarData”,“testDataCarNoise.mat”))
car-noise-corrupted测试数据设置为网络的输入。测试数据集的预测精度与汽车噪声明显下降,在70%左右,因为网络从未见过训练样本包含汽车噪音。
predTestLabel =分类(trainedNetNoCar testDataCarNoise);testAccuracy =意味着(predTestLabel = = testLabelCarNoise)
testAccuracy = 0.7176
混淆矩阵表明,大多数预测错误发生时,网络需要场景的“行人”,“步行+步行,”或“步行+自行车”类并将他们划分成“骑自行车”。
confusionchart (testLabelCarNoise predTestLabel);
汽车噪音大大阻碍了分类器的性能。为了解决这个问题,火车CNN使用数据,包含汽车噪音。
再教育CNN通过添加汽车噪声训练数据集
加载car-noise-corrupted训练数据集trainDataCarNoise.mat
。
负载(fullfile (tempdir“PedBicCarData”,“trainDataCarNoise.mat”))
重新培训网络通过使用car-noise-corrupted训练数据集。30时代,培训过程几乎达到90%的准确率。
trainedNetCarNoise = trainNetwork (trainDataCarNoise、trainLabelCarNoise层,选择);
car-noise-corrupted测试数据设置为网络的输入trainedNetCarNoise
。预测精度约为87%,大约15%高于网络的性能没有汽车噪声样本训练。
predTestLabel =分类(trainedNetCarNoise testDataCarNoise);testAccuracy =意味着(predTestLabel = = testLabelCarNoise)
testAccuracy = 0.8728
混淆矩阵表明,网络trainedNetCarNoise
执行更好的预测与一个带有两个行人的步行和场景场景。
confusionchart (testLabelCarNoise predTestLabel);
案例研究
为了更好地理解网络的性能,检查其性能分类重叠的签名。本节只是为了阐释。由于GPU的非确定性行为训练,你可能不会得到相同的分类结果在这一节中当你重新运行这个示例。
例如,car-noise-corrupted签名# 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。字符串=“数据库”;结束
骑自行车2签名更弱的振幅比骑自行车1,和两个骑车人的签名重叠。当他们重叠,两个签名不能视觉上区分。然而,神经网络分类正确。
感兴趣的另一个例子是当网络把汽车噪声和一个骑自行车,作为car-noise-corrupted签名# 267的测试数据:
图k = 267;显示亮度图像(T、F testDataCarNoise (:,:,:, k))轴xy包含(“时间(s)”)ylabel (的频率(赫兹))标题(“地面实况:”+ +字符串(testLabelCarNoise (k))”,预测:“+字符串(predTestLabel (k)))
骑自行车的签名是疲弱的汽车相比,从汽车噪声峰值和签名。因为汽车相似的签名,一个骑自行车的骑车或行人步行速度较低,并有小微多普勒效应,高网络将现场进行分类错误的可能性。
引用
[1],v . C。雷达的微多普勒效应。伦敦:Artech房子,2011年版。
[2]Gurbuz, s . Z。,和Amin, M. G. "Radar-Based Human-Motion Recognition with Deep Learning: Promising Applications for Indoor Monitoring."IEEE信号处理杂志。2019年36卷,问题4日,16-28页。
[3]Belgiovane D。和c·c·陈。“微多普勒特征的行人和自行车汽车雷达传感器在77 GHz。”In11日欧洲天线与传播(EuCAP),会议2912 - 2916。巴黎:欧洲协会在天线和传播,2017年。
[4]安格诺夫,。,A. Robertson, R. Murray-Smith, and F. Fioranelli. "Practical Classification of Different Moving Targets Using Automotive Radar and Deep Neural Networks."专业雷达、声纳、导航。10号卷。12日,2017年,页1082 - 1089。
[5]Parashar k . N。,M. C. Oveneke, M. Rykunov, H. Sahli, and A. Bourdoux. "Micro-Doppler Feature Extraction Using Convolutional Auto-Encoders for Low Latency Target Classification." In2017年IEEE雷达会议(RadarConf),1739 - 1744。西雅图:IEEE 2017。