基于机器学习和深度学习的雷达目标分类

这个例子展示了如何使用机器和深度学习方法对雷达回波进行分类。机器学习方法使用小波散射特征提取和支持向量机。此外,还举例说明了两种深度学习方法: 使用 SqueezeNet 的迁移学习和长期短期记忆(Long Short-Term Memory,LSTM)递归神经网络。注意,本例中使用的数据集不需要高级技术,但是描述了工作流,因为这些技术可以扩展到更复杂的问题。

1.引言

RCS散射分析

下一节将展示如何创建合成数据来训练学习算法。

下面的代码模拟了半径为1米、高度为10米的圆柱体的 RCS 图案。该雷达的工作频率为850兆赫。

%% 散射特性模拟
c = 3e8;
fc = 850e6;
[cylrcs,az,el] = rcscylinder(1,1,10,c,fc);
%% 圆盘形状RCS模拟结果
figure(1)
helperTargetRCSPatternPlot(az,el,cylrcs);
cyltgt = phased.BackscatterRadarTarget('PropagationSpeed',c,...
    'OperatingFrequency',fc,'AzimuthAngles',az,'ElevationAngles',el,'RCSPattern',cylrcs);
%% 立体面图像切割
figure(2)
plot(el,pow2db(cylrcs));
grid; axis tight; ylim([-30 30]);
xlabel('Elevation Angles (degrees)');
ylabel('RCS (dBsm)');
title('RCS Pattern for Cylinder');

然后将该模式应用于后向散射雷达目标,从不同角度模拟回波。

下图显示了如何模拟圆柱体随时间的100次回波。假设圆柱体在钻孔瞄准且周围产生微小振动,因此,从一个样品到下一个样品的纵向角度发生变化。

 圆锥的返回可以类似地产生。为了创建训练集,对于任意选择的5个圆柱半径重复上述过程。此外,对于每个半径,通过改变入射角来模拟10个随机生成的正弦曲线围绕孔瞄准具的运动轨迹。每个运动轮廓中有701个样本,所以有701乘50个样本。对圆柱体目标重复这个过程,得到一个701 × 100的训练数据矩阵,其中包含50个圆柱体和50个圆锥体轮廓。在测试集中,我们使用25个圆柱和25个圆锥轮廓来创建一个701乘50的训练集。由于计算时间较长,训练数据会在下面预先计算并载入。

%% 加载数据集
load('RCSClassificationReturnsTraining');
load('RCSClassificationReturnsTest');
%% 下一个图显示了从每个形状的运动轮廓之一的返回。这些图显示了入射方位角和目标返回值随时间的变化情况。
subplot(2,2,1)
plot(cylinderAspectAngle(1,:))
ylim([-90 90])
grid on
title('Cylinder Aspect Angle vs. Time'); xlabel('Time Index'); ylabel('Aspect Angle (degrees)');
subplot(2,2,3)
plot(RCSReturns.Cylinder_1); ylim([-50 50]);
grid on
title('Cylinder Return'); xlabel('Time Index'); ylabel('Target Return (dB)');
subplot(2,2,2)
plot(coneAspectAngle(1,:)); ylim([-90 90]); grid on;
title('Cone Aspect Angle vs. Time'); xlabel('Time Index'); ylabel('Aspect Angle (degrees)');
subplot(2,2,4);
plot(RCSReturns.Cone_1); ylim([-50 50]); grid on;
title('Cone Return'); xlabel('Time Index'); ylabel('Target Return (dB)');

 2.小波散射

在小波散射特征提取中,数据通过一系列的小波变换、非线性和平均来传播,从而产生时间序列的低方差表示。小波时间散射产生的信号表示对输入信号中的移位不敏感,而不牺牲类别识别能力。

在小波时间散射网络中需要指定的关键参数是每个小波滤波器组中的时不变量的尺度、小波变换的个数以及每个八度的小波数。在许多应用中,两个滤波器组的级联足以实现良好的性能。在这个例子中,我们构造了一个具有两个滤波器组的小波时间散射网络: 第一个滤波器组为每个八度4个小波,第二个滤波器组为每个八度2个小波。不变尺度设置为701个样本,数据的长度。

sn = waveletScattering('SignalLength',701,'InvarianceScale',701,'QualityFactors',[4 2]);

其次,我们得到了训练集和测试集的散射变换。

sTrain = sn.featureMatrix(RCSReturns{:,:},'transform','log');
sTest = sn.featureMatrix(RCSReturnsTest{:,:},'transform','log');

对于该模型,使用沿着每条路径的散射系数的平均值。

TrainFeatures = squeeze(mean(sTrain,2))';
TestFeatures = squeeze(mean(sTest,2))';

为训练和学习创建标签:

TrainLabels = repelem(categorical({'Cylinder','Cone'}),[50 50])';
TestLabels = repelem(categorical({'Cylinder','Cone'}),[25 25])';

3.模型训练

用一个二次核函数拟合一个支持向量机模型来描述散射特性,从而获得交叉验证的精度。

template = templateSVM('KernelFunction', 'polynomial', ...
    'PolynomialOrder', 2, ...
    'KernelScale', 'auto', ...
    'BoxConstraint', 1, ...
    'Standardize', true);
classificationSVM = fitcecoc(...
    TrainFeatures, ...
    TrainLabels, ...
    'Learners', template, ...
    'Coding', 'onevsone', ...
    'ClassNames', categorical({'Cylinder','Cone'}));
partitionedModel = crossval(classificationSVM, 'KFold', 5);
[validationPredictions, validationScores] = kfoldPredict(partitionedModel);
validationAccuracy = (1 - kfoldLoss(partitionedModel, 'LossFun', 'ClassifError'))*100

4.目标分类

利用训练后的支持向量机,对测试集得到的散射特征进行分类

predLabels = predict(classificationSVM,TestFeatures);
accuracy = sum(predLabels == TestLabels )/numel(TestLabels)*100

策略混淆矩阵

figure('Units','normalized','Position',[0.2 0.2 0.5 0.5]);
ccDCNN = confusionchart(TestLabels,predLabels);
ccDCNN.Title = 'Confusion Chart';
ccDCNN.ColumnSummary = 'column-normalized';
ccDCNN.RowSummary = 'row-normalized';

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值