高德网络定位算法的演进

1.导读

GPS定位精度高,且早已成为移动设备标配,但GPS也具有一些难以克服的缺陷,包括:

  • 冷启动时间长。GPS启动时,需要进行搜星,锁定卫星信号,然后再进行位置技术,这个过程可能会达到几十秒,即使采用诸如AGPS等技术,仍然有秒级的时间无法定位。
  • 室内或有遮挡的场景。GPS信号弱,无法有效定位。

用户需要持续的有效定位,因此需要另一个技术对GPS进行补充,这就是网络定位技术。

网络定位是将手机设备收到的信号(主要是基站、Wifi、蓝牙)发送到网络服务器,获得位置。之所以要将信号数据发送到网络上,是因为网络定位是利用信号指纹进行定位,需要一个庞大的且持续更新的指纹数据库,这个数据库难以同步到移动设备上。为了进行定位,需要事先建立每个位置的指纹特征,然后在定位时用实时指纹比对每个位置的历史指纹,确定位置。

高德网络定位不仅承担着高德地图用户的定位请求,还面向国内所有主流手机厂商,以及国内30万以上App提供服务,日均处理请求千亿次,峰值QPS百万级。

在过去的几年中,高德网络定位算法经历了从无监督算法向有监督算法的演进,从定位精度、定位能力透出等方面都有了显著的提升。

注:高德网络定位只存在于安卓平台上,在iOS上由于苹果公司未开放任何定位相关的指纹数据(Wifi、基站列表等),定位结果全部来自于iOS自身。

2.基于聚类的无监督算法

经典的指纹定位算法是无监督算法,其核心是计算指纹的相似性,用指纹确定位置。下图是一个例子,AP代表手机扫描到的基站和Wifi设备编号,纵轴代表不同的位置,二者交点的数值代表该位置扫描到该AP的信号强度,为空代表该位置没有扫描到该AP。

要对一个新定期请求进行定位(比如AP1:-30,AP2:-50,AP3:-90),一个最简单的方法,是用KNN逐一计算该指纹与历史指纹的相似度(比如用L2距离或者余弦相似度),取相似度最大的历史位置作为用户位置。

这有两个问题,第一是计算量太大(AP是10亿量级,loc是千亿量级),无法满足实时定位的要求,第二是历史指纹在局部可能比较稀疏,对于用户指纹无法精确匹配。

于是需要对历史数据进行预处理,提取出AP和网格的通用指纹,这样在定位时只需要比对一次即可。下图是利用一个AP的历史采集位置进行聚类,获得AP实际位置和覆盖半径的过程,有了每个AP的位置,在定位时将多个AP的位置进行加权平均即可获得最终位置。

这种方法需要解决的一个挑战是当有多个候选位置时如何选择,如下图所示,有两个候选位置。

此时需要设计一个策略进行簇选择,基于每个簇的特征进行打分,找出最有可能的一个簇作为用户位置。

基于加权平均的定位,速度很快,但精度比较差,原因是指纹在空间上的分布并不是连续的,而可能受到建筑、地形、道路的影响,呈现一种不规则的分布,于是在上面定位方式的基础上,发展出一种基于格子排序的算法,可以更精准的定位。

首先将地球划分为25*25的网格,然后统计每个网格内的指纹特征,最后进行格子排序。设候选网格为l,信号向量是S,则定位过程就是计算
fangxing5.png

根据贝叶斯公式,有
fangxing6.png

根据1-1,由于所有候选网格的分母相同,只需要计算分子,即:
fangxing7.png

其中P(l)是某个位置在全量用户位置中出现的概率,可以用定位PV表示,而P(S=S0|l)则需要计算在每个网格内出现某种信号向量的概率,由于向量维数高,概率难以计算,因此对不同维进行独立假设,认为每个信号出现的概率是独立的。有:
fangxing8.png

这样,可以基于历史指纹对每个网格内的每个AP的信号强度进行直方图统计,即可计算出概率,最后对所有格子的概率进行排序,获得概率最高的那一个,如下图:

3.基于分层排序的有监督算法

无监督算法的一个问题,是难以迭代,对于badcase无法进行有效优化,一旦调整策略就会影响到其他case,无法获得全局最优。

因此,有监督学习就变得很有必要,高德定位从近两年开始全面转向有监督学习,持续进行特征和模型设计,提升效果,取得了不错的收益,解决了50%以上的大误差问题(5公里以上),在移动Wifi识别上获得了99%以上的识别准确率。

有监督学习需要使用大量的特征,特征的计算需要消耗较多资源,考虑到定位服务要承受10万以上的QPS,模型的复杂性与效果同等重要,因此我们首先将定位服务进行了分层,上面的层级针对大网格,计算粗略的位置,下面的层级针对小网格,逐步细化位置。这样可以极大减少不必要的计算,在性能和效果间取得平衡。

对于每一个单独的算法模块,都采用类似下面的神经网络模型对每个候选网格进行打分,再使用LTR损失函数作为目标进行训练,从而获得神经网络的参数。在特征方面,同时考虑以下三类:

  • AP的动态特征,比如信号强度
  • 网格特征,比如PV、UV、AP数、周边候选网格数等
  • AP在网格上的特征,比如信号强度分布、PV、UV等

采用这种方法可以解决绝大部分格子选择不准确的问题,遗留的一个问题是当定位依据特别少的时候,比如只有一个基站和一个Wifi,二者分别位于距离较远的两个网格,此时无论选择哪个都有50%的错误概率。为了解决这个问题,我们引入了用户历史定位点辅助进行各自选择。

在特征部分加入历史定位点序列,输出一个历史位置特征(可以看成是一个预测的新位置),让这个预测位置参与网格打分。当有两个距离较远但打分接近的网格进行对比时,通过预测位置进行加权。这样模型应该可以学出这样的规律:如果网格距离预测位置比较远,打分就降低,如果比较近,分就高。通过这个方法,大误差case的比例可以降低20%。

4.场景化定位

用户在不同场景下对定位的要求是不同的,比如用户在旅途中可能只需要知道大致的位置,不需要很精确,但是在导航时就需要精确的知道自己在哪条道路上,距离出口多远。

因此,除了在整体算法架构上进行优化,高德还在不同特定场景上进行针对性的优化,满足用户不同场景下的定位需求。

室内场景

指纹定位的一个局限,是需要采集带GPS的样本作为真值进行训练,由于GPS只能在室外被采集到,即使用户在室内,其定位结果有很大概率在室外,这会对用户造成不少困扰,特别是在用户准备出行的时候,其定位点的漂移会导致起点偏离真实位置较大。

为了解决这个问题,有两个解决办法,一是采集室内真值,但这种方法需要大量人工采集工作,工作量巨大,目前高德在一些热门商场和交通枢纽进行人工指纹采集(除了基站Wifi还支持蓝牙、传感器定位)。第二个办法是借助大数据,无需人工干预,对Wifi进行建筑/POI关联,用建筑/POI位置去修正定位结果。

Wifi-POI关联有多种方法,一个简单的方法是用POI名字与Wifi名字的相似度判断是否有关联,比如麦当劳的Wifi名字就是McDonald,关联的时候需要考虑中英文、大小写、中英文缩写等。从名称能分析出关联关系的Wifi毕竟是少数。另外一种覆盖能力更强的方法是利用Wifi信号分布规律去挖掘Wifi的真实位置,毕竟绝大部分Wifi都是部署在室内的。

这里我们采用的是CNN的方法,将楼块数据、POI数据、采集真值数据绘制为二维图像,然后进行多层卷积计算,label为Wifi所在的真实楼块区域。下图中蓝色块为楼块,绿色为采集点,颜色越亮代表信号强度越高,红色点代表Wifi真实位置。

目前算法能挖掘出30%Wifi对应的真实位置,在最终定位效果上,用户在室内时,能正确定位到室内的样本比例提升了15%

高铁场景

从用户报错情况看,有大量报错是用户乘坐高铁时定位异常。高铁在近两年开通了车载Wifi,这些Wifi都是移动Wifi,因此这些AP是没有一个固定位置的,如果不进行任何处理,算法训练获得的Wifi位置一定是错误的,很大概率会在沿途的某个车站(用户集中,采集量高)。

针对这种场景,需要将移动Wifi全部去除再进行定位。我们开发了针对高铁和普通场景的移动Wifi挖掘算法,利用采集点时空分布等特征判断某个Wifi是否移动,挖掘准确率和召回率均超过99%,可以解决绝大部分高铁定位错误的问题。

地铁场景

地铁场景有点类似高铁,用户扫到的Wifi基本都是移动Wifi(少量车站有固定Wifi),因此只能借助基站进行定位。但基站深埋地下,缺乏采集数据,如何获得基站的真实位置呢?我们采用了两种策略,第一个策略是利用相邻基站信息,当用户在一个请求里或者在短暂时间段内同时扫描到地铁基站(无GPS采集)和非地铁基站(有GPS采集)时,我们可以用后者的位置去推算前者位置,当然这种方式得到的基站位置不太准确。于是我们进行了进一步优化,利用用户轨迹去精准挖掘出每个请求对应的地铁站,从而构建出指纹对应的真值。

基于以上方法,地铁内的定位精度可达到90%以上,实现地铁报站和换乘提醒。

5.未来演进

在未来,定位技术特别是移动设备的定位技术还将快速发展,主要突破可能来自以下方面:

图像定位:谷歌已经发布了基于街景的AR定位,可以解决在城市峡谷区域内的精准定位。这种定位利用了更丰富的数据源,对用户体验的提升也会非常显著。

5G定位:5G相比4G,频率更高,频带更宽,用于测距时精度更高(比如利用相位差进行传输时间计算),行业协会也在孵化5G定位相关的标准,运营商在未来可能会支持基于5G网络的定位,届时在5G覆盖区将会有类似GPS精度的定位效果。

IOT定位:随着物联网的普及,基于NB-IOT的定位技术也会应运而生,它可以使用类似基站定位的方法,或者使用P2P定位的方法为物联网设备进行定位。


原文链接
本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/517092.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

疫情之下网络安全如何保障?Akamai防护方案前来“保驾护航”

2020年春天,以5G、人工智能、云计算为代表的“新基建”蔚然成风,着眼国家数字经济体系建设,打造数字经济体系底座的“新基建”,无疑成为中国经济整体应对未来发展的核心方案。然而,面临“新基建”与企业数字化进程的突…

2020将至,谈谈中小企业创业的那些事儿

2019正迎来尾声,在创业这场轰轰烈烈的旅途中,有的人名利双收,有的人饱受非议。一入创业深似海,在创业赛道上,很多公司完成了从0到1,却死在从1到100的路上。而小程序的出现,让移动互联网创业走向…

axios从安装到使用的教程

安装axios: npm install --save axios 目录结构: 红框部分是接口文件: appApi.js是存放接口的文件 import Vue from vue import axios from axiosexport default {// 获取分类show_category: function () {return axios.post(/point-api-show_category);},// 获…

嘘,这是手淘双11 GMV 暴涨的秘密

阿里妹导读:信息流作为手淘的一大流量入口,对手淘的浏览效率转化和流量分发起到至关重要的作用。在探索如何给用户推荐其喜欢的商品这条路上,我们首次将端计算大规模应用在手淘客户端,通过端侧丰富的用户特征数据和触发点&#xf…

vuex从安装到使用的教程

vuex的安装 npm install vuex --save或cnpm install vuex --save main.js引入vuex import Vue from vue import Vuex from vuex import store from ./vuex/storeVue.use(Vuex) vuex的目录结构和store.js的代码 store.js的代码(异步和同步的代码均留下两个方法&am…

未来,仅凭几个前端工程师,就能 hold 住一家企业吗?

阿里妹导读:微前端架构旨在解决单体应用在一个相对长的时间跨度下,由于参与的人员、团队的增加,从一个普通应用演变成一个巨石应用(Frontend Monolith),随之而来的应用不可维护问题。这类问题在企业级 Web 应用中尤为常见。今天&a…

yarn : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本

文章目录1. 现象2. 授权安全策略3. 重新执行命令1. 现象 2. 授权安全策略 若要在本地计算机上运行您编写的未签名脚本和来自其他用户的签名脚本,请使用以下命令将计算机上的 执行策略更改为 RemoteSigned 执行: set-ExecutionPolicy RemoteSigned查看执…

央视315曝光SDK事件,应用开发者如何避坑?

7月16日晚,央视315晚会拉开大幕,再次敲响了消费领域的警钟。据央视报道,上海市消费者权益保护委员会委托第三方对市场上的App进行检测,发现某些第三方开发的SDK包存在违规收集用户个人信息的情况。日前,工信部已要求严…

VS Code 切换大小写

默认是空的,我设置的快捷键是 shift altd 转换为大写 shift altx 转换为小写

携程实时智能检测平台建设实践

本次演讲将为大家介绍携程实时智能异常检测平台——Prophet。到目前为止,Prophet基本覆盖了携程所有业务线,监控指标的数量达到10K,覆盖了携程所有订单、支付等重要的业务指标。Prophet将时间序列的数据作为数据输入,以监控平台作…

VS Code 设置好看的字体:Operator Mono

文章目录一、字体资源地址1. 链接2. 资源下载二、效果图2.1. JS 代码效果2.2. CSS 文件效果2.3. HTML 文件效果三、安装字体3.1. 字体列表3.3. 安装方式3.3. VSCode 配置一、字体资源地址 1. 链接 FiraCode 和 Operator Mono 字体下载地址 2. 资源下载 Git下载 git clone …

钟南山团队携手腾讯研发新冠重症AI预测 成果登上Nature子刊

钟南山院士团队与腾讯AI Lab日前披露了利用AI预测COVID-19患者病情发展至危重概率的研究成果,可分别预测5天、10天和30天内病情危重的概率,有助合理地为病人进行早期分诊。这项研究已在2020年7月15日发布于国际顶级期刊《Nature》子刊《Nature Communica…

CentOs搭建svn

安装SVN yum install -y subversion检查是否安装成功 svnserve --version创建版本库 我们先创建/var/svn这么目录 mkdir /var/svn cd /var/svn创建版本库 svnadmin create /var/svn/project后边的project就是我们项目的版本库 cd project ls 会看到自动生成的版本库文件…

互联网全域降维攻击战略概述

前言: 在互联网维度体系概念被提出之后,社会上对于降维的理解向不同的方向发展,如很多人认为降维呈现的是有高难度业务实施能力的企业向低难度领域业务进行渗透和发展的方式,还有的认为降维就是互联网行业对于传统行业的业务冲击…

当达摩院大牛学会抠图,这一切都不受控制了……

在外界人眼中,达摩院人才济济,大多是奇人异士,做着神秘且高端的研究,有如扫地僧一般的存在,但是如果有一天,当神秘专家不再神秘,你发现他们也开始玩抠图,且这一切都朝着不受控制的方…

腾讯安全携手华夏银行“论道”金融风控,传递在线反欺诈干货建议

前不久,Gartner发布了《在线反欺诈市场指南》,对全球聚焦在线反欺诈全链路监测与防护的厂商进行评估,给遭遇欺诈的企业提供了应对指南和选择建议。其中腾讯云成为中国唯一入选服务商,得到了Gartner官方的推荐。在报告中&#xff0…

Flutter嵌套深?扩展函数了解一下

背景 嵌套层级深的问题让众多刚接触Flutter的同学感到困扰,它不仅是看起来让人感到不适,还非常影响编码体验。 大佬们会告诉你应该拆分自己的嵌套代码(自定义widget或者抽取build方法)来减少嵌套层级。这确实是个行之有效的方法&#xff0c…

VS Code 中的文件添加图标的插件vscode-icons

文章目录1. 效果图2. 用法1. 效果图 2. 用法 一旦你安装了该插件你重启VS Code后会在右下角收到一个该插件的提示,这时你要点击Activate激活icons。 你也可以通过点击以下功能来激活它(VS Code中可能存在很多主题,想用哪个就激活哪个)。 Linux & W…

开发者说:如何使用插件降低上传文件部署服务的复杂度

“ 这里描述我们实际服务部署的时候频繁发生的两个常用场景。 第一个场景,我们“办公网环境”想要在“准生产环境”下部署,需要做如下工作: 打包、将文件上传到堡垒机上、scp将上传好的包裹传输到“准生产环境”的目标机器、ssh 目标机器、r…

打开通往新零售时代的大门,数据中台这把钥匙可行吗?

2016年“新零售”概念提出即被引爆,如今看来依然让人热血沸腾,因为这三个字,极有可能影响未来十年、二十年的商业格局。在新零售概念下,大数据技术可以在任何时间和地点无形地收集和沉淀客户的主要行为数据,直接掌握客…