APP下载

基于CNN的NLOS识别与定位技术研究*

2020-09-27孔乾坤

通信技术 2020年9期
关键词:池化层识别率定位精度

孔乾坤

(重庆市长寿区大数据应用发展管理局,重庆 401220)

0 引言

随着无线通信技术的发展和物联网在各行业的推广应用,智能终端及智能设备逐渐普及,对室内环境下获取终端或设备位置的需求日益增多。基于位置的服务(Location-Based Services,LBS)已成为定位导航、应急搜救、抢险救灾的必备功能[1]。室内定位技术是LBS 的核心,LBS 依赖于人员、货物或资产的精确位置,但NLOS 环境影响定位精度的进一步提高[2]。自从2016 年谷歌“阿尔法狗”围棋系统以5:0 全胜韩国围棋大师李世石以来,CNN受到人们的广泛关注并取得了迅速发展。本文研究利用CNN 识别NLOS 信号的具体过程,将CNN 技术用于NLOS 识别,不需要人工提取信号特征,只需要将原始CIR 信号作为输入,将是否为NLOS 信号作为输出,模型训练完成后就能用于识别NLOS信号[3],识别NLOS 信号后只利用LOS 信号做定位,结果表明该方法能显著提高定位精度。

1 CNN 分类原理

1.1 基本原理

CNN 是一类包含卷积计算且具有深度结构的前馈神经网络,可用于图像识别、信号识别、自然语言处理等领域。使用CNN 识别信号的步骤:(1)卷积层提取初步特征;(2)池化层提取主要特征;(3)全连接层汇总特征并进行分类预测。

1.1.1 卷积层

对输入数据矩阵中每个元素点,计算卷积核矩阵每个元素与卷积核矩阵覆盖范围内对应元素点的乘积,并累加所有乘积,累加和即为卷积层输出。

1.1.2 池化层

池化层利用局部相关性原理对信号进行下采样,作用是保证生成的特征图在特征不变的情况下降低数据维度,保留有用信息的同时,减少模型的参数数量和计算复杂度。

1.1.3 全连接层

全连接层中神经元不经过卷积运算直接连接到相邻层的神经元上。对全连接层输入加权求和并经过激活函数,就可得到对应的输出。为了防止过拟合,全连接层中一般采用dropout 方法。

1.2 Dropout 方法

随机失活[4](dropout)是指在训练模型过程中按照一定的概率使隐藏层部分神经元失活,失活的神经元不参与下一步的网络训练,从而避免过拟合的发生。对某层神经元,训练阶段以概率p随机将该神经元失活,测试阶段所有神经元全部为激活状态,但其权重需要乘1-p以保证训练和测试阶段各自的权重有相同的期望。假设dropout 输入为x,对应的输出为y,该层权值用w表示,依据特定概率随机选取的w矩阵的子集用w´表示,于是dropout运算过程可表示如下。

训练过程:

测试过程:

dropout 方法缓解过拟合现象的原因是:训练CNN 时,每次得到的子网络是按照概率对权值矩阵随机采样后得到,多次训练后,每次参与训练的神经元有所不同,避免了某个网络参数过多导致的模型过于复杂,从而抑制过拟合。

1.3 训练步骤

卷积神经网络的训练过程分为两个阶段。第一阶段是数据由低层次向高层次传播的阶段,即前向传播阶段。第二阶段是当前向传播得出的结果与预期不相符时,将误差从高层次向底层次传播训练的阶段,即反向传播阶段。

训练过程如下。

步骤1:初始化卷积神经网络的权值;

步骤2:输入数据经过卷积层、池化层、全连接层,前向传播得到输出值;

步骤3:求出卷积神经网络输出值与理想输出值之间的误差;

步骤4:将误差传回网络中,依次求得全连接层、池化层和卷积层的误差;

步骤5:按照误差最小化准则,通过反向传播调整卷积神经网络的权值,然后进入第二轮重复训练,直到误差小于设定值或者达到最大训练次数时,结束训练过程。

2 基于CNN 的NLOS 识别方法

2.1 网络结构

本文使用的CNN 包括4 层卷积层、2 层池化层、1 层全连接层和1 层输出层,网络结构如图1 所示。

网络中的数据维度和参数设置[5]:Conv1 层输入数据为1 024,从时域和频域上看是2 个维度,输入数据为2×1 024×1,Conv1 层卷积核大小为1×3,通道数目为32,输出数据为2×1 024×32,激活函数为Relu;Conv2 层卷积核大小为1×3,通道数目为16,输出数据为2×1 024×16,卷积层后继续连接卷积层可以提取更加抽象的特征;Pool1层池化核大小1×2,池化层输入为2×1 024×16,经过池化层后数据维度变成原来的一半;同样的方法得到Conv3 层输入和输出分别为2×512×16 和2×512×16,Conv4 层输入和输出分别为2×512×16 和2×512×16,Pool2 层输入和输出为2×512×16 和2×256×16,特征图的大小为2×256;全连接层中使用了dropout 方法,输出数据的维度是256;最后是输出层,它建立特征到分类的映射,判断输入信号是否为NLOS 信号。根据信号的类型,最终输出为1 或0。

图1 本文神经网络结构

2.2 数据来源和仿真平台简介

2.2.1 数据来源

本文使用的数据来源于欧盟“地平线2020”研究计划的子课题eWINE(elastic Wireless Networking Experimentation,eWINE)。该计划是利用人工智能知识解决当前密集和动态无线网络中存在的问题[6]。数据使用DW1000 超宽带收发芯片测量,芯片配置为通道4(带宽为500 MHz,中心频率为3 993.6 MHz)数据长度为1 024,数据速率110 kb/s。数据集总样本数量为42 000 个,共分为7 个不同的测量场景——办公环境1、办公环境2、公寓、车间、客厅、卧室和锅炉房。本文根据研究需要重点分析办公环境数据,样本数量为12 000 个。数据集中每行数据的长度为1 024,其中包含CIR0-CIR1015 共1 016 个信道冲激响应数据和是否为NLOS 等信号参数。本文将原始CIR 作为输入,将是否为NLOS作为输出训练CNN。

2.2.2 硬件仿真平台简介

计 算 机CPU 为Intel(R) Core(TM)i5-4670 3.4 GHz,没有使用GPU,安装内存8 GB,硬盘512 GB。

2.2.3 软件仿真平台简介

软件仿真平台采用Windows7 64 位操作系统、Python3.6.5、Anaconda Navigator5.0.1、pip10.0.1、scikit-learn0.19.1、tensorflow1.9.0 和Keras2.1.6。程序运行过程中使用了大量第三方开发包,主要有用于科学计算和数据分析的软件库numpy1.14.0和scipy0.19.0,用于绘图的python开发包matplotlib2.2.2。Anaconda是一款Python集成开发环境,是在Windows 上执行Python 数据科学和机器学习的最便捷工具。Anaconda 包含了Conda、Python 等180 个科学包及其依赖项,可以方便地用于数据分析与处理。scikit-learn 算法库中集成了主流机器学习算法,适用于中小型实用机器学习项目。tensorflow1.9.0 是一个支持Python 语言的开源软件库,适合于进行神经网络方面的研究。Keras2.1.6 是基于Theano 和tensorboard 的深度学习库,具有高度模块化、极简和可拓展性等特点,支持CNN 和RNN。此外,还用到了可视化工具tensorboard1.9.0,将tensorflow 程序运行过程中权值更新、损失函数值变化、模型性能评估函数值等重要数据以图像的方式显示出来,方便调试与优化。

3 仿真结果与分析

为验证所提方法的效果,设置了3 组仿真实验。实验1 是观察不同dropout 值对CNN 识别效果的影响,实验2 是观察不同训练次数对CNN 识别效果的影响,实验3 是观察不同激活函数对CNN 识别效果的影响,最后对比NLOS 识别前后定位效果。经过实验分析可知,采用NLOS 识别的定位能够显著提高定位精度。

3.1 实验1

实验1 观察不同dropout 值对系统识别性能的影响。将网络中的训练次数保持为20 000,改变不同的dropout 值,观察不同dropout 值对NLOS 信号识别率的影响。从表1 中可以看出,不同dropout值会影响识别效果,过大或过小都会导致NLOS 识别率降低,本文选择的dropout 值为0.5。

表1 不同dropout 值对识别率的影响

3.2 实验2

实验2 观察不同训练次数对识别性能的影响。将网络中的dropout 值保持为0.5,网络每训练1 000 次输出一次结果,观察不同训练次数对NLOS 信号识别率的影响。从表2 可以看出,随着训练次数的增加,NLOS 识别率也在增加,最终识别率稳定在89.20%。

表2 不同训练次数对识别率的影响

3.3 实验3

实验3 观察不同激活函数对识别性能的影响。本文设计的CNN 网络结构使用5 个激活函数,分别在4 个卷积层和1 个输出层中。表3 的激活函数是指卷积层和输出层中的全部的激活函数,网络中的dropout 值保持为0.5,观察不同激活函数对NLOS 信号的识别率的影响。从表3 可以看出,当激活函数为relu6 时,识别效果最好为89.20%。

表3 不同激活函数对识别率的影响

激活函数为relu6 时识别效果最好,此时识别率随着训练次数的变化曲线如图2 所示。

分析完NLOS 识别后,研究识别后的定位。NLOS 信号识别后的定位有两种方法:一种是将NLOS 信号直接丢弃,只采用LOS 信号做定位;另一种是根据CIR 建立信号与测距误差之间的模型,根据模型预测信号对应的测距误差,测距值减去模型预测出的测距误差得到校正后的测距值,然后利用校正后的测距值做定位。本文只分析第一种定位方法。

图2 识别率随着训练次数的变化

本文使用的定位算法为LS 算法和WLS 算法,算法的推导过程在此不具体阐述,算法定位效果如图3 所示。

图3 NLOS 识别前后定位效果对比

由图3 可知,采用NLOS 信号识别的定位能够显著提高定位精度。当存在10 个信标节点时,NLOS 信号识别前后的定位误差分别为40 cm 和20 cm。可见,该方法有效降低了定位误差,提高了定位精度。

4 结语

本文以CNN 技术为基础,针对室内环境下影响UWB 定位精度的主要原因是NLOS 传播,研究了使用CNN 技术对NLOS 信号的识别,并给出识别之后的定位。文章首先介绍CNN 的理论知识,其次建立所需要的CNN 分类模型,最后基于CNN,用从真实环境中测量的原始CIR 训练NLOS 信号分类模型。仿真结果表明,使用原始CIR 的NLOS 识别效果良好。此外,本文还研究了NLOS 识别后的定位。结果表明该方法能显著提高定位精度。

猜你喜欢

池化层识别率定位精度
卷积神经网络模型研究分析*
Galileo中断服务前后SPP的精度对比分析
基于卷积神经网络的纸币分类与点钞
基于深度学习卷积神经网络的人体行为识别研究
基于真耳分析的助听器配戴者言语可懂度指数与言语识别率的关系
GPS定位精度研究
GPS定位精度研究
基于全卷积神经网络的SAR图像目标分类*
高分三号SAR卫星系统级几何定位精度初探
档案数字化过程中OCR技术的应用分析