主要内容

基于802.11az指纹识别和深度学习的三维室内定位

本示例展示了如何使用生成的IEEE®802.11az™数据训练卷积神经网络(CNN)进行定位和定位。使用训练好的CNN,可以根据由多通道脉冲响应(CIRs)组成的指纹来预测多个站点(STAs)的位置或位置,并评估CNN的性能。

简介

IEEE 802.11az Wi-Fi™标准[1],通常被称为下一代定位(NGP),提供物理层特性,可以使用经典技术增强测距和定位。

经典技术依赖于视距(LOS)条件,从多径信号中有效提取时间信息(如到达时间(ToA))或空间信息(如到达角(AoA)),以计算设备之间的距离或距离。当可以测量至少三个设备之间的距离时,可以使用三边测量来计算位置估计。有关如何使用经典测距和定位技术的更多信息,请参阅基于超分辨率到达时间估计的802.11az定位的例子。

指纹识别和深度学习技术可用于Wi-Fi定位系统,即使在非视距(NLOS)多路径环境中也可实现亚米级精度[2].一个指纹通常包含信道状态信息(CSI),例如在环境中特定位置测量的接收信号强度指示器(RSSI)或接收信号的信道估计[3.].

在网络的训练阶段,该示例通过采样环境中多个已知位置的通道指纹来创建数据库。该网络使用数据库作为参考,根据在未知位置接收到的信号估计用户的位置。

本例通过在室内环境中使用802.11az信号创建CIR指纹数据集,并为每个指纹标记其位置信息。该示例通过使用指纹子集训练CNN预测STA位置,然后根据数据集的CIR指纹余数生成STA位置预测,从而评估训练模型的性能。

为简单起见,本例使用了一个小数据集,这将导致模拟时间很短。为了获得更准确的结果,请使用更大的数据集。示例提供pretrained模型展示更多训练数据所能达到的高水平表现。

仿真参数

室内传播环境

文档指定的室内办公环境下,生成培训数据office.stl文件。

mapFileName =“office.stl”;helperVisualizeScenario (mapFileName)

图中包含一个轴。坐标轴包含patch、line类型的2个对象。

该示例在此环境中放置您指定的四个接入点(ap)和若干sta。该示例基于环境定义的传播信道生成指纹,然后使用射线跟踪技术生成相关的信道脉冲响应。有关室内环境的光线追踪的更多信息,请参见使用光线追踪的室内MIMO-OFDM通信链路的例子。

AP和STA参数

选择发射和接收天线阵列的大小,以及通道带宽。这些参数控制每个指纹中的数据量及其分辨率。更大的天线阵列产生更多的信道实现和每个指纹更多的CIRs。更高的带宽增加了CIR的采样率,可以更详细地捕获它。改变这些参数会使数据集与预训练的模型不兼容,因为每个指纹的维度必须与模型输入层的形状匹配。

S = RandStream(“mt19937ar”“种子”, 5489);设置可再现性的RNG。RandStream.setGlobalStream(年代);txArraySize =(4 - 1)线性发射阵列rxArraySize =(4 - 1)线性接收阵列chanBW =“CBW40”

指定用于映射环境的sta的数量和sta的分布。若要在每个维度上均匀地将sta分布为均匀间隔的网格,请设置分布统一的.若要在环境中随机分布sta,请设置分布随机

当您统一分配sta时,本例使用的值来确定sta的数量staSeparation,以米为单位,测量所有维度的sta之间的距离。

当随机分配sta时,可以通过设置的值指定sta的个数numSTAs

分布=“统一”;staSeparation =0.5% STA分离,单位为米,仅在分布均匀时使用numSTAs =500% sta数量,仅在随机分布时使用

定位与定位

确定示例执行的是本地化还是定位[4].定位是一种分类任务,其中模型的输出是与STA所在的地图的离散区域相关的预测标签。在某些任务中,精确定位不如准确估计用户的大致位置重要,例如,建筑物地板上的房间或商店的通道。定位是一个回归任务,其中模型的输出是STA的预测位置。定位可以估计用户的确切位置,但与定位相比,在区域内的位置可能会有更高的误差。

任务=“定位”

定位任务确定STA的一般位置,而不是其精确位置。该图显示了小型办公室的布局,其中使用离散区域作为定位类。红色方块标记表示ap的位置。蓝色虚线框表示示例在训练过程中分配sta的区域。该示例将sta的高度限制在0.8到1.8米之间。这个范围代表了便携式消费设备的一组现实值。这一限制也最大限度地减少了sta被放置在无法到达的位置的机会。

训练数据综合

本节展示如何合成训练CNN的数据集。

生成AP和STA位置

生成AP和STA对象,并在室内场景中可视化它们。如果您使用的文件不是office.stl时,必须调整AP和STA的位置dlPositioningCreateEnvironment功能适应新环境。

如果分布= =“统一”[APs,STAs] = dlPositioningCreateEnvironment(txArraySize,rxArraySize,staSeparation,“统一”);其他的[APs,STAs] = dlPositioningCreateEnvironment(txArraySize,rxArraySize,numSTAs,“随机”);结束helpvisualizescenario (mapFileName, ap,STAs)视图([65.99 32.49])

图中包含一个轴。坐标轴包含patch、line、scatter类型的4个对象。这些对象表示ap、sta。

利用射线跟踪技术生成信道特征

设置射线传播模型的参数。属性只考虑LOS和一阶反射MaxNumReflections参数1.要获得更精确的传播模型,请设置MaxNumReflections财产2.增加最大反射数会增加模拟时间。若要只考虑LOS传播,请设置MaxNumReflections财产0

pm =传播模型(“raytracing-image-method”...“CoordinateSystem”“笛卡儿”...“SurfaceMaterial”“木”...“MaxNumReflections”1);

对所有AP-STA对进行射线跟踪分析。的光线跟踪函数以单元格数组的大小返回生成的射线 N 美联社 ——- - - - - - N STA ,在那里 N 美联社 ap和的数量是多少 N STA 为sta的个数。

对所有发射器和接收器并行执行射线跟踪。射线=光线跟踪(ap, sta,pm,“地图”, mapFileName);大小(射线)
ans =1×2480年4

可视化所有ap和单个STA之间的计算射线。颜色表示相关的路径损耗,单位为dB。

helperVisualizeScenario(mapFileName,APs,STAs(30)) helperVisualizeRays([射线{:,30}]);视图([84.75 - 56.38])

图中包含一个轴。坐标轴包含patch、line、scatter类型的18个对象。这些对象表示ap、sta。

生成802.11az CIR指纹特征和标签

本节介绍如何使用计算出的射线计算每个AP-STA对的cir。该图显示了示例用于生成cir的处理链。

每个AP通过噪声通道发送一个802.11az报文,每个STA接收该报文。本例假设每个STA都可以区分ap,并且ap之间不存在干扰。

如果某个位置与AP之间的路径存在问题,或者由于信噪比过低导致同步失败,则该位置的数据包接收失败。在这种情况下,生成的CIR是一个零向量。

本例使用CIR中每个多路径分量的大小作为训练数据。因此,生成的cir为实值。该示例将cir存储在大小的四维数组中 N 年代 ——- - - - - - N tx - 处方 ——- - - - - - N 美联社 ——- - - - - - N r

  • N 年代 为CIR中的时域样本数。

  • N tx - 处方 是发射-接收天线对的总数。

  • N 美联社 为ap的个数。

  • N r 为所有信噪比点的信道实现数。

该示例通过将这些特征与STA位置或位置名称的标签相结合来训练CNN。

为了模拟环境的变化,通过指定信噪比值的范围,在不同的噪声条件下重复指纹识别过程。

信噪比= [10 15 20];

配置波形参数。具体来说,将时空流的个数设置为发射天线阵列的大小,可以保证在信道估计时,每个发射天线的信号都是STA的指纹。

cfg = heRangingConfig(“ChannelBandwidth”chanBW,...“NumTransmitAntennas”刺激(txArraySize),...“SecureHELTF”,真的,...“GuardInterval”, 1.6);cfg.User{1}。NumSpaceTimeStreams = prod(txArraySize);

生成数据集。

[features,labels] = dlPositioningGenerateDataSet(射线,STAs,APs,cfg,snrs);
生成数据集:完成10%。生成数据集:20%完成。生成数据集:完成30%。生成数据集:完成40%。生成数据集:完成50%。生成数据集:60%完成。生成数据集:70%完成。生成数据集:80%完成。生成数据集:90%完成。生成数据集:100%完成。

深度学习

深度学习使用神经网络来近似不同领域的函数。CNN是一种使用二维多通道图像的神经网络架构。cnn保存并从数据的空间方面学习特征。深度学习工作流包括以下步骤。

  1. 定义训练数据。

  2. 定义神经网络模型。

  3. 配置学习流程。

  4. 训练模型。

  5. 评估模型性能。

定义培训数据

神经网络是一种强大的模型,可以拟合各种数据。为了验证结果,将数据集分成80%的训练数据和20%的验证数据。训练数据是模型根据预测误差调整加权参数来学习拟合的数据。验证数据是该示例用于确保模型在未见数据上按预期执行且不会过度拟合训练数据的数据。

[training,validation] = dlPositioningSplitDataSet(features,labels,0.2);

定义神经网络模型

典型的CNN由七个主要层组成。

  1. 输入层,它定义输入数据的大小和类型

  2. 卷积层,通过使用一组过滤器对层的输入执行卷积运算

  3. 批处理规范化层,通过规范化一个层的激活来防止不稳定的梯度

  4. 激活(ReLU)层,它是一个非线性激活函数,阈值前一个功能层的输出

  5. 池化层,提取和池化特征信息

  6. Dropout层,在训练过程中随机停用前一层的一定百分比的参数,以防止过拟合

  7. 输出层,它定义了输出数据的大小和类型

你可以通过从这些类中排列层并在块中重复它们来形成一个深度网络。本例中的CNN由四个块组成,每个块具有卷积、批处理归一化、ReLU和平均池化层。这个例子在最后的层之前添加了dropout正则化(20%)。该体系结构类似于训练卷积神经网络回归(深度学习工具箱)示例,该示例预测了手写数字图像的旋转位置,并演示了深度学习模型在参数变化最小的情况下的各种应用。

构建CNN。

layers = [imageInputLayer(size(训练。X, 1:3))卷积2dlayer (3,256,“填充”“相同”(2,)“步”2,“填充”“相同”) convolution2dLayer (3256,“填充”“相同”(2,)“步”2,“填充”“相同”) convolution2dLayer (3256,“填充”“相同”(2,)“步”2,“填充”“相同”) convolution2dLayer (3256,“填充”“相同”(2,)“步”2,“填充”“相同”) dropoutLayer (0.2)];

根据所选任务,指定输出层的大小和输出的激活函数。

如果任务= =“定位”layers = [layers fullyConnectedLayer(7) softmaxLayer classificationLayer];其他的%的定位layers = [layers fullyConnectedLayer(3) regressionLayer];结束

将给网络的标签与每个任务的预期模型输出匹配。特征是两个任务的CIR指纹图像。

如果任务= =“定位”val = validation.Y.classification;trainY =训练。y .分类;其他的%的定位valY = validation.Y.regression;trainY = training.Y.regression;结束

配置学习过程和训练模型

设置模型在每次训练迭代期间评估的训练数据样本的数量。当使用更大的数据集时,增加样本的数量。

miniBatchSize = 32;

设置验证频率,以便每个epoch对网络进行一次验证。在每个验证期结束时,网络评估未见样本以测试泛化。

validationFrequency = floor(size(training.X,4)/miniBatchSize);

指定控制培训过程的选项。epoch的数量控制了示例在完整的训练数据集上连续训练模型的次数。默认情况下,该示例在可用的GPU上训练模型。使用GPU需要并行计算工具箱™和受支持的GPU设备。有关受支持设备的信息,请参见GPU支持版本(并行计算工具箱)

选项= trainingOptions(“亚当”...“MiniBatchSize”miniBatchSize,...“MaxEpochs”3,...“InitialLearnRate”1的军医,...“洗牌”“every-epoch”...“ValidationData”,{验证。X,淡水河谷的},...“ValidationFrequency”validationFrequency,...“详细”,真的,...“ResetInputNormalization”,真的,...“ExecutionEnvironment”“汽车”);

训练模型。

net = trainNetwork(training.X,trainY',layers,options);
单CPU训练。初始化输入数据规范化。|======================================================================================================================| | 时代| |迭代时间| Mini-batch | |验证Mini-batch | |验证基地学习  | | | | ( hh: mm: ss) | | | | |损失损失精度精度  | |======================================================================================================================| | 1 | 1 | 00:00:03 | | 21.88% 51.04% | 1.9794 | 1.6179 | 1.0000 e-04 | | 1 | 36 | 00:00:37 |68.75% | 65.28% | 0.8940 | 0.9550 | 1.0000e-04 | | 2 | 50 | 00:00:51 | 59.38% | | 1.0449 | | 1.0000e-04 | | 2 | 72 | 00:01:18 | 65.62% | 67.71% | 0.9359 | 0.8692 | 1.0000e-04 | | 3 | 100 | 00:01:44 | 65.62% | | 0.9281 | | 1.0000e-04 | | 3 | 108 | 00:01:53 | 59.38% | 65.62% | 1.0722 | 0.8376 | 1.0000e-04 | |======================================================================================================================|

评估模型性能

通过检验验证数据的预测值来研究模型性能。通过将验证集特征传递给网络来预测标签,然后通过将预测标签与验证集标签进行比较来评估网络的性能。

如果任务= =“定位”YPred = net. classification (validation.X);其他的%的定位YPred = net.predict(validation.X);结束

生成结果的可视化和统计视图。

对于本地化,dlPositioningPlotResults函数生成三维地图,显示sta的真实位置。分配给每个STA的颜色表示其预测位置。该函数还生成一个混淆矩阵,其中行对应于预测的类,列对应于真实的类。对角线的单元格对应的是被正确分类的观察结果。非对角线的单元格对应于分类错误的观察结果。如果网络性能良好,主对角线上的元素明显大于其他矩阵元素。

对于定位,分配给每个STA的颜色表示预测位置的距离误差。该函数还生成一个累积分布函数(CDF)。y轴测量测量距离误差小于或等于x轴上相应值的数据的比例。

metric = dlPositioningPlotResults(mapFileName,validation.Y,YPred,task);

图中包含一个轴。标题为{\bf{CNN位置预测}}\fontsize{10}的轴由预测类着色,包含补丁、线、散点类型的303个对象。这些对象分别代表会议室、桌面1、桌面2、桌面3、桌面4、办公室、储藏室。

图包含一个confusimatrixchart类型的对象。ConfusionMatrixChart类型的图表标题精度:68.0556%。

Pretrained模型

这个例子使用了一个小的数据集和有限的训练时间,产生了适度的结果。你可以通过使用大数据集预训练的CNN来获得更准确的结果。下载生成的CNN进行定位和本地化//www.ru-cchi.com/supportfiles/spc/wlan/Positioning80211azExample/pretrained_networks.zip.这个zip文件包含两个MAT文件:

  • localization_cbw40_4x4。mat - CNN训练本地化

  • positioning_cbw40_4x4。mat - CNN训练定位

用a训练所有模型100个epochminiBatchSize值为256的指纹数据集staSeparation的价值0.1.带宽为40mhz带宽,发射机和接收机采用四天线线性阵列(4 × 4米姆)。

要研究这些预训练模型的性能,请下载并提取zip文件,将适当的MAT文件加载到工作区中,然后运行评估模型性能节了。

天线阵列尺寸和带宽的影响

预训练的模型表明,增加的sta数量和训练周期可以提高性能。本节展示了信道带宽和天线阵列尺寸对性能的影响。

这些图显示了信道带宽对定位和定位性能的影响。这些结果是通过用a训练100个epoch的模型生成的miniBatchSize数值为256,该数据集由间隔0.1米采样的均匀分布的STA编译而成,其中每个STA和AP包含一个四元线性天线阵列。使用更大的带宽会导致更准确的估计,因为更高的采样率会增加CIRs的分辨率。

这些数字显示了发射和接收天线数量的影响。这些结果是使用20 MHz的带宽生成的。对于较大的天线阵列,由于存在更多的信道信息,精度提高。例如,4 × 4通道包含16通道实现,而2 × 2通道只包含4个通道。正如预期的那样,CNN在接受更多数据训练时表现更好。

这些结果是用未用于训练cnn的数据样本生成的。如果用于训练CNN的数据样本也用于评估性能,结果可能会有所不同。

参考文献

  1. IEEE P802.11az™/D2.6信息技术标准草案。系统间的电信和信息交换局域网和城域网。特殊要求。修改件3:定位的增强

  2. Kokkinis, Akis, Loizos Kanaris, Antonio Liotta和Stavros Stavrou。基于单一接入点的RSS室内定位。传感器19,没有。17(2019年8月27日):3711。https://doi.org/10.3390/s19173711。

  3. 王旭宇,高凌军,毛世文,Santosh Pandey。基于csi的室内定位指纹:一种深度学习方法。机械工程学报,2016,34(4):366 - 366。https://doi.org/10.1109/TVT.2016.2545523。

  4. GNSS,惯性和多传感器组合导航系统的原理。波士顿:Artech House, 2008年。

Baidu
map