融合深度学习和特征点识别的室内定位研究
2023-12-09王陈哲,陈宇佳*,陶诗量,李明,胡博,贾军辉,陈浩男
王 陈 哲,陈 宇 佳*,陶 诗 量,李 明,胡 博,贾 军 辉,陈 浩 男
(1.国家基础地理信息中心,北京 100830;2.百度(中国)有限公司,北京 100193;3.自然资源部第三航测遥感院,四川 成都 610100;4.国网思极位置服务有限公司,北京 102209)
0 引言
近年来,随着智慧城市概念的全面普及,基于位置的服务得到广泛关注并促进定位技术迅猛发展。由于全球导航卫星系统(GNSS)定位技术无法解决室内场景下的定位问题[1],室内定位技术应运而生,其应用场景更贴近日常衣食住行,涵盖各类博览会、机场、火车站、大型商场、地下矿井、商场地下车库等诸多场景[2]。目前室内定位的主要手段有WiFi、蓝牙beacon、行人航位推算(PDR)、地磁、红外、超宽带等。其中,WiFi主要采用指纹比对算法,需提前布置设备并采集大量指纹信息[3],国外多采用众包信源并增加位置语义注释的方式减少前期的指纹采集工作,但受限于众包位置的不平均,仍无法解决所有位置的精度问题[4];蓝牙采用指纹匹配或类似基站信号轨迹匹配方式[5],精度更高,但仍需布置设备且需定期检修[6];PDR算法虽无需提前布置设备,但因累计误差无法消除,仍需结合蓝牙或WiFi进行绝对位置纠正,如融合自适应扩展卡尔曼滤波的低功耗蓝牙PDR方案[7]、基于PDR和地理网格的方案等[8];基于语义结构的室内定位等算法也存在精度不高或成本较高等缺陷[9],尤其对于无法布设额外设备的受控环境,多数常用定位手段均无法使用。
随着智能手机的发展,基于图像的室内定位成本低,无须额外安装较多设备,相比传统方案准确性更高[10],且对于传统硬件设备(WiFi等)限制安装区域的适用性较高。但当前基于图像的室内定位技术也存在特定缺陷[11],例如:基于Simultaneous Localization and Mapping(SLAM),融合视觉里程与PDR的室内定位算法复杂度较高,导致效率较低,无法满足实时性要求[12];基于目标跟踪检测并投影还原位置的被动视觉方案仍需提前布设硬件设备且精度不能保证[13];基于深度学习网络目标特征识别的方案虽无额外硬件依赖,但无法准确估计位置[14];基于双目视觉深度估计的定位方案依赖的视觉摄像头较多,无法适用于日常生活[15]。随着人工智能与计算机视觉技术的不断发展,基于卷积神经网络的深度学习算法在图像识别领域成果斐然[16]。因此,为解决已有室内定位技术的缺陷,本文结合特征点识别与深度学习算法,提出一种基于图像的室内定位技术,该技术只需通过移动终端拍摄的视频流图像,即可获得实时室内位置。
1 基于图像的室内定位技术
本文基于图像的室内定位技术实现流程(图1)为:①在室内选定密度足够且分布均匀的具有标志特征的区域,并对每个标志特征区域拍摄大量不同角度、不同大小的图像,通过灰度、滤波、旋转、仿射等变换膨胀图片集,得到标志物训练数据集,然后基于标志物训练数据集对卷积神经网络进行训练,得到标志物识别器;同时,对每个标志特征区域拍摄一张清晰的模板图像,并量取相对距离获得模板图像的位置信息(移动设备终端相对于模板图像的距离和角度),对每张模板图像进行特征点识别与描述,形成环境特征信息库。②基于手机视频流,将室内定位分为概略定位和精细定位两个阶段:在概略定位阶段,将视频流中的每帧图像输入训练好的卷积神经网络标志物识别器,获得该帧图像的粗略位置及其对应的模板图像;在精细定位阶段,将视频流中的每帧图像进行特征点识别与描述,并与其模板图像在环境特征信息库中对应的特征点进行匹配,在剔除误匹配后,通过仿射变换和分解单应矩阵得到精确的位置信息。
图1 基于深度学习和特征点识别的室内定位系统工作流程Fig.1 Workflow of indoor positioning system based on deep learning and feature point recognition
图2 RANSAC算法流程Fig.2 Flow chart of RANSAC algorithm
1.1 卷积神经网络标志物识别器构建
1.1.1 MobileNet V3网络结构 MobileNet V3[17,18]凭借网络结构优化,在更少的参数和计算量下,精度和计算速度均优于多数大型神经网络[19],本文系统主要部署于移动端设备,对性能及计算速度要求较高,故选取MobileNet V3-Small作为基础网络结构。MobileNet V3-Small共有12个特有的bneck层[20]、1个标准卷积层和2个逐点卷积层,且具备以下特性:①具有MobileNet V1的深度可分离卷积。深度可分离卷积[21]由1层深度卷积与1层逐点卷积组合而成,每层卷积后均紧跟着批规范化和ReLU激活函数,在精度基本不变的情况下,参数与计算量均低于标准卷积。②具有MobileNet V2的线性瓶颈逆残差结构[22]。该结构相比标准卷积能减少参数量和卷积计算量,从空间和时间上优化网络。③加入轻量级的注意力模型(Squeeze-and-Excitation模块)[23]。该模型可使网络输入特征的有效权重更大,无效或效果小的权重更小。④使用h-swish激活函数。研究表明,使用该激活函数在Google AI的实验中会提高约15%的效率[20,24]。
1.1.2 网络参数求解 本文将MobileNet V3在ImageNet数据集上训练好的权重参数进行迁移,获得预训练模型参数;通过训练特定层、冻结其他层的方式对预训练模型参数进行微调[25],最终得到研究所需的标志物识别器。
1.1.3 标志物识别器在移动设备端的部署 通过TensorFlow生成模型部署至Android设备所需的.so、.pb文件及jar包,将上述文件放入Android工程的相关资源路径中并配置gradle;在Android工程中写入模型部署所需的类并调用,即可实现在移动Android端标志物识别器的部署。
1.2 环境特征信息库构建
1.2.1 非线性空间构造 在对模板图像进行特征点识别时,需对每个模板图像进行空间特征构建。相比SIFT、SURF等常用的线性滤波空间特征构建算法,AKAZE的非线性扩散滤波对模板图像进行选择性模糊(平缓区域模糊程度高,陡峭区域模糊程度低),有效保持了原有模板图像的特征信息。因此,本文采用AKAZE算法[26]对模板图像构建非线性滤波空间特征[27]:首先,利用式(1)对模板图像进行金字塔分层,并利用式(2)将像素尺度因子转换为时间尺度因子,这种映射仅用于获取一组进化时间值,并通过这些时间值构建非线性空间特征;最后,利用非线性偏微分方程求解(式(3))构建模板图像的所有非线性空间特征。
(1)
(2)
(3)
式中:σi(o,s)为尺度因子,O和S分别为金字塔分层的层数和组数,σ0为尺度基准值,N为金字塔分层中所有尺度因子数量,ti为进化时间,L为模板图像的空间特征值,A为图像随整体纬度变化所变换的传导矩阵,m为循环周期。
1.2.2 特征点识别 对模板图像进行非线性空间特征构建后,通过在特征图像中寻找不同尺度归一化后的Hessian局部极大值点,以实现特征点的识别(式(4)),在金字塔分层中,当空间特征的某像素点大于其图像域和尺度域的所有相邻点时,该点为极大值点;在找到特征点在空间特征中的位置后,根据Taylor展开式求解特征点在模板图像中的位置,得到模板图像中特征点的坐标。
(4)
式中:σ为尺度因子σi的整数值,x和y分别为空间特征点的坐标。
1.2.3 特征点描述 识别出模板图像的特征点后,需对所有模板图像特征点的点位信息和主方向信息进行描述,并构建特征描述向量,通过特征描述向量集合构建环境特征信息库。其中,点位信息可在特征点识别过程中求解,特征点主方向的求解和特征描述向量的构建流程如下:①特征点主方向求解。在模板图像中确定特征点的搜索圈,并对搜索圈内所有像素点非线性空间特征值的一阶微分值Lx和Ly进行高斯加权,将加权后微分值视作向量空间中的点集,在角度为60°的扇形滑动窗口内对点集进行向量叠加,遍历整个圆形区域,获得最长向量的角度即为主方向。②特征描述向量构建。为提升效率,本文采用BRISK特征描述方法进行特征描述并构建特征描述向量,选取512个短距离点对,故描述子位数为512。
1.3 室内坐标解算
在概略定位阶段,通过构建的标志物识别器确定视频流中每帧图像的粗略位置,从而获得图像对应的模板图像;在精细定位阶段,需先对视频流中每帧图像进行特征点识别与描述,再与其所属模板图像在环境特征信息库中对应的特征点进行匹配,然后剔除误匹配,最后解算出精确位置。
1.3.1 特征点匹配 由于本文采用BRISK特征描述方法,故选择Hamming距离进行匹配。两个二进制字符串的Hamming距离指在各自对应的位数上数值是否一致,若一致,记为0,否则记为1。当对比过所有位数后,得到的1的数量即为Hamming距离。
1.3.2 误匹配点剔除 基于特征点的图像匹配不可避免地会产生错误匹配对,本文采用RANSAC算法剔除误匹配点[28](图 2)。在循环迭代过程中(最大迭代次数由式(5)计算),若找到满足判定为内点的误差门限及内点数阈值的单应矩阵数据组,则采用该组单应矩阵对全部特征点数据进行计算,最终得到剔除误匹配后的特征点对。
(5)
式中:wa为第a个特征点均为正确匹配点对的概率,p为抽取到的 4组匹配点数据全部来自内点集的概率。
1.3.3 精确位置解算 从匹配点对中筛选出主方向强烈的稳定特征点对,计算两者的单应矩阵H(式(6)),因匹配的特征点对肯定大于4对,因此通过SVD分解求得旋转矩阵和平移矩阵,进而得到相机姿态角θ;对稳定特征点集随机跳跃求差,根据差值大小进行反向赋权,求取模板图像与视频流图像的特征点位距离差加权平均值δ;再通过已知的相机焦距f、相机姿态角θ、模板图像的位置坐标P0及模板图像拍摄距离z0计算得到手机与当前模板图像的距离,进而得出精确位置P(式(7))。
(6)
式中:K为相机内参数,d为中心距离,N为相机平面法向量,R为相机外参旋转矩阵,T为相机外参平移向量。
P=P0+[(δf+z0)sinθ(δf+z0)cosθ]T
(7)
2 实验结果与分析
2.1 实验环境与数据采集
实验采用的软硬件平台信息为:①定位终端硬件平台(Android手机):Samsung Galaxy Z Flip3;②模型训练硬件平台(PC):MacBook Pro 2020;③模型训练软件平台:Tensorflow 2.10;在Tensorflow平台训练得到模型后,保存得到.pb文件,并通过Bazel软件生成得到在Android端调用模型所需的.so文件和jar包,最后将.pb文件、.so文件和jar包分别导入Android工程的app/src/main/assets、app/src/main/jniLibs和app/libs路径下,即可调用模型。实验场地位于国家基础地理信息中心(国家测绘档案资料馆),因涉及重要密级资料,无法进一步部署额外的电子设备,故不适合采用WiFi等室内定位手段,通过基于图像识别的室内定位系统进行定位是最合适且有效的。
在实验场地进行标志物训练数据集采集,共获取25个标志物,进行一定范围内的增强变换(灰度、对比度、滤波、平移、旋转、仿射、锐度等变换)后,得到足够多的训练集供标志物识别器训练(每个标志物图片约1 000张)(图3),最终得到标志物识别器;选取模板图像进行AKAZE特征点提取与描述,得到所有模板图像的环境特征信息库。
2.2 实验结果分析
采用基于本文方法的硬件设备在实验场地进行实时定位试验,对相同路线试验20次,以减少偶然性,最终获得实验路线平均定位轨迹(图4)。与真实轨迹进行比对可知,本文方法定位精度较高,90%以上的路线平均误差控制在0.2 m以内。
图4 真实轨迹与试验轨迹对比Fig.4 Comparison between real track and test track
3 结语
本文提出一种基于深度学习算法和特征点识别的室内定位方法,利用手机等移动设备终端获得实时视频流,通过基于卷积神经网络的标志物识别器对视频流中的每帧图像进行标志物识别,从而获得其粗略位置,完成概略定位;接着对视频流中每帧图像进行特征点识别,并与构建的环境特征信息库中带有位置信息的特征点进行匹配,计算其精确位置,完成精细定位。在有针对性的受控区域内对该方法的定位精度及稳定性进行有效验证,定位误差基本保持在0.2 m以内。由于本文方法通过选取稳定匹配点对计算单应性矩阵,只需拍摄到标志物的一部分即能获取足够数量的特征点对,故整体定位精度较高。
为使本文方法将来能应用在性能相对不佳的移动端设备上,如何在保持精度的基础上优化算法效率需要深入研究;本文实验室内场景中标志物的数量规模较小,可能会影响部分位置的定位精度,也需进一步研究。