分享 | 带来全新交互体验的『支付宝AR』技术大解密

简介: 用AR技术都能玩出哪些新花样?

小蚂蚁说

AR是一种新颖的交互方式,与传统交互方式相比,可以让用户更深入地参与互动,给用户带来新体验。

而春节期间,支付宝的「扫福得福」活动也异常火爆,支付宝将AR与游戏、红包相结合,探索出了一种新玩法。

虽然AR领域已经有了很多年的发展历程,但技术成熟度和用户普及度都还有很大的进步空间。而走在该领域前排的支付宝,背后又有哪些技术架构和研究故事呢?今天就有请我们的支付宝AR团队来给大家进行详细分享。


1. 前言


首先,我们回顾下网络上对AR技术的定义:增强现实技术(Augmented Reality,简称AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像、视频、3D模型的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动。


从这个定义可以看出,AR包含两个关键要素:相机姿态估计和虚实互动


不过,在当前流行的AR应用中,未必都满足这两个要素,比如有些简单的AR应用主要是识别某个物料,识别成功后播放一段广告视频然后发个优惠券,这个过程并没有估计相机姿态,但是已经满足初期AR营销需求了。为此,我们可以称当前的很多AR应用为泛AR应用。


2. AR技术概述


AR技术本身可以从各个维度进行分类,比如根据硬件载体不同,可以分为基于通用移动设备的AR(比如手机AR)和基于专用设备的AR(比如Hololens)。这里我们主要关注基于手机的AR,正是由于手机的普及推动了AR技术的普及。具体到手机AR,又可以细分成多种:


536822b577b0203a8515cf56bf1f7e7efd6a850f


•   基于NFT(Natural Feature Tracking,自然特征点跟踪)的AR:对着一个纹理丰富的平面物体扫描,就可以实时估计相机姿态并将3D模型叠加到平面物体上;


•   基于SLAM(Simultaneous  localization  andmapping) 技术的AR:同时估计相机姿态和周围环境地图,并可在周围环境中叠加虚拟物体;


•   基于LBS的AR:主要利用GPS信息和陀螺仪信息实现AR效果,比如PokemonGo;


•   基于3D物体的AR:通常需要预先对3D物体进行建模,然后以任意角度扫3D物体均可估计相机姿态;


•   基于AI的AR:主要结合模式识别技术,实现物体类别识别、物体特征点定位、物体分割,然后在此基础上叠加虚拟物体。随着AI技术的蓬勃发展,这个方向将会受到更多的重视。


2.1 AR平台识别算法

对于大多数AR应用来说,通常都包含以下3个模块:

•   识别:具体来说包含图像识别、跟踪、3D姿态估计;

•   渲染:结合成像模型,利用渲染引擎将3D虚拟物体叠加到图像上

•   交互:手机上主要是通过触控与虚拟物体互动,Hololens则通过手势、语音进行多模态互动


支付宝AR平台作为一个平台性的系统,除了包含以上基本模块外,还有线上活动运营管理系统等。这里,我们主要介绍识别模块,包括基于自然特征点的图片识别、跟踪、姿态估计,以及基于AI技术的物体识别。


2.2 识别算法框架


总体上,AR平台识别算法框架包含识别核心层业务层识别内容管理层。


其中识别核心层由AR客户端识别引擎和服务端识别引擎构成,这两个引擎都是建立在核心算法基础之上,两者有机结合、互为补充、协同完成识别任务。


AR业务层也包含客户端和服务端,负责视频采集、交互渲染、业务路由、后台管理等工作。另外一大块是识别内容管理,包括识别模型训练、评测以及识别内容发布、监控,本文主要介绍的就是核心识别算法。


3. NFT识别算法


3.1 NFT算法流程

从数据流角度看,我们的NFT核心识别算法流程如下图所示。


b068dc606bd1c85bf5fb3c25e65172238cf72edf


整个流程包括客户端和服务端,对于输入的每帧图像,首先会进行客户端识别,如果客户端没能识别出来且满足静止判断条件,则上传服务端识别。


3.2 客户端NFT识别

客户端识别包含局部特征点检测、特征点描述、快速检索、图片1对1匹配、单应性校验等步骤。针对每一个步骤,都有多种方法可选择。比如特征点检测方法有SIFT,SURF,Fast,ORB等,其中前两种具有尺度不变性,后两种不具备尺度不变性,需要在不同分辨率图像上分别提取特征。


局部特征点描述有SIFT、SURF、BRISK、FREAK、ORB等,它们的耗时分别为SIFT>SURF>BRISK=FREAK>ORB,准确性和耗时基本相反,在手机上常用的特征一般为后面三种。


对于快速检索方面,有两个思路:


•   采用FLANN近邻搜索方式:从所有候选图像的所有特征点里查找最相似的特征点,然后根据每张图片匹配上的点数进行排序得到候选匹配图片。

•   是采用BOW(Bag-of-Words)检索方式:这样可以让我们像查字典一样快速检索到候选匹配图片。


快速检索只是从众多图片中检索出最相近的N幅候选图片,针对这N幅候选图片,还需要做进一步的甄别,给出明确的答案,确定到底和哪一幅图片匹配,不能模棱两可。


最后再做一个单应性校验:基于平面物料的假设,物料模板图片和实际拍摄的物料图片之间存在一个单应性变换,利用匹配上的特征点可以估计出一个单应性变换矩阵,最后再根据内点数多少判定是否真的匹配上了。到此,单纯的图片识别过程就完成了。


3.3 客户端NFT跟踪

对于需要需要跟踪的场景,比如我们最初做的Costa活动,就需要实时对Costa餐盘纸进行跟踪和姿态估计,以便虚拟的花总是无缝贴合在餐盘纸上,如下图所示:

f854cfa55ad69273b890cb4a54d04cb61825a81a


跟踪的最终目的是为了能够实时地给出相机姿态,以便3D虚拟物体可以实时叠加到实景中。


事实上,如果每帧做特征点检测、匹配、校验、姿态估计的速度足够快足够准,也可以不用做跟踪。然而现有的特征点检测匹配算法在客户端速度还不够快,因此普遍做法是检测之后做跟踪。


由于跟踪过程中,我们还需要实时估计相机姿态,因此基于整个物体ROI区域跟踪的方法比如KCF(Kernelized CorrelationFilters)方法在这里不适用,我们需要特征点跟踪方法,以便利用特征点进行姿态估计。


最常用的特征点跟踪算法就是KLT(Kanade-Lucas-Tomasi)算法,当运动幅度不是很剧烈时,效果还是很不错的,对于相对剧烈的运动,容易跟踪失败。


为此,我们采用了局部区块模版匹配的方式进行特征点跟踪。当然,为了提速,具体实现时采用了很多加速策略。跟踪完成后,同样也需要做单应性校验,确认跟踪是否正确。如果跟踪正确了,则进行后面的3D姿态估计环节。


知道2D点和3D点对应关系求解位姿,可采用非线性的Bundle Adjustment方法,也可以采取线性PnP(Perspective-n-Point)的方法求解。相比Bundle Adajustment方法,PnP方法速度更快,但精度略低,抖动大一些。为减轻抖动,可以通过对位姿做帧间平滑。


3.4 服务端NFT识别

相比客户端本地识别,我们的服务端可以识别更多种类的图片,具有更多更强的识别能力。服务端具备海量图片检索能力和热点图片检索能力,并且融合这两个检索结果,做进一步的精匹配以确定最终匹配结果。


3.5 AI识别算法

除了常规的NFT图片识别外,我们还提供了其他基于模式识别的算法,比如春节扫红包用的Adaboost目标检测、SSD目标检测、xFuNet识别以及定制的圆形目标检测、颜色识别、HogSVM识别等。


其中,基于SSD目标检测的方法由于通用性好、速度快、能够处理多种复杂情况,借助支付宝强大的客户端深度学习引擎xNN已落地到多个业务场景:


e3b21fc84614db39db6a8efb9d260fd4b22cf6dd


在AR平台,SSD目标检测最初用于解决弱纹理商家logo识别问题。


不少商家希望通过扫他们的品牌logo参加活动,然而有些品牌logo实在是没啥纹理,比如耐克的logo,之前介绍的NFT图片识别算法对这种场景基本无能为力。因此,我们迫切需要找到一种新方法来满足这一场景需求。


期间我们尝试了多种方案:Dense SIFT、深度特征学习、目标检测等。对各种方案进行比对后,结合AR平台业务场景,我们选择了目标检测的方式。具体到目标检测,常见的有Faster-RCNN、YOLO、SSD等。


实测发现SSD的检测速度最快,精度也能满足业务需求。最终,我们选择了SSD目标检测方式来识别弱纹理商家logo。


主体方案确定之后,还有一个问题需要解决,即商家通常只提供少量几张logo图片,这对于深度学习来说,那真是杯水车薪。我们的解决方案是对少量的商家logo图像数据做倍增,具体倍增方式包括面内面外旋转、缩放、平移、背景替换、颜色变化等。


此外,针对容易误检的样本,特别添加到样本集参与样本倍增合成。最终,我们的SSD目标检测训练流程如下图所示:


416ca8e465544d5df6e93a387712d51d949ac6f8


除了SSD目标检测,基于Adaboost的目标检测算法由于其全机型覆盖、计算量小等优势用在了春节红包扫福和扫手势活动中。此外,还有之前的扫中秋月亮、扫脉动瓶盖也使用了定制化的模式识别算法。


3.6 性能指标

AR平台识别算法基本性能如下:

1.客户端NFT识别耗时:<200ms

2.客户端NFT跟踪耗时:<10ms

3.NFT识别包大小:<20k

5.客户端SSD检测+校验:<100ms


4. 后记


支付宝AR平台经过长时间的打磨,各项基本功能日趋完善。同时,我们也非常欢迎AR、AI爱好者加入我们团队,共同把支付宝AR平台打造得更好!


代表产品有:支付宝AR扫、2017春节AR红包、2018新春集五福扫福字、扫“五福到”手势、支付宝小程序缴费通、开创了支付宝银行卡识别绑定、声波支付等。


如果你对我们的工作感兴趣,欢迎投简历加入我们!我们目前正在招聘目标检测、图像识别等方向的专业人才,有兴趣可以发邮件至: mingcai.zmc@antfin.com


— END —

目录
相关文章
|
3月前
|
人工智能 物联网 vr&ar
AR与VR技术的融合:开启全新的现实体验
在当今快速发展的科技领域中,混合现实(AR)和增强现实(VR)技术成为引人注目的热门话题。本文将探讨AR与VR技术的融合应用,以及它们给我们带来的全新现实体验。通过结合虚拟和真实世界的元素,AR与VR技术正逐渐改变着我们对于交互、娱乐、教育和工作的理解。
|
3月前
|
vr&ar 开发者 Python
探索未来的现实世界:混合现实(AR)与增强现实(VR)技术的应用Python异步编程:解放性能的重要利器——异步IO库深入解析
在当今科技飞速发展的时代,混合现实(AR)和增强现实(VR)技术正迅速改变着我们对现实世界的认知和体验。本文将介绍这两种技术的基本原理以及它们在不同领域的广泛应用,包括教育、医疗、旅游、娱乐等。混合现实和增强现实技术为我们带来了全新的沉浸式体验,将人与数字世界融合在一起,为未来的现实世界带来无限可能。 在当今信息爆炸的时代,高效的编程方式成为开发者追求的目标。Python异步编程与其强大的异步IO库(例如asyncio)成为了解放性能的重要利器。本文将深入解析Python异步编程以及异步IO库的原理和使用方法,帮助读者进一步掌握这一技术,提升开发效率。
|
4月前
|
传感器 数据可视化 vr&ar
AR增强现实技术特点、工作原理等简介
AR增强现实技术特点、工作原理等简介
155 0
|
4月前
|
存储 数据处理 vr&ar
实时云渲染技术为何被称为VR和AR领域的加速剂?
实时云渲染技术为何被称为VR和AR领域的加速剂?
|
9月前
|
搜索推荐 机器人 大数据
【AR技术】AR教学机器人
【AR技术】AR教学机器人
|
10月前
|
开发工具 vr&ar 图形学
【AR隔空手势交互】Unity中基于Manomotion实现隔空手势交互
Unity开发,基于Manomotion实现隔空手势交互,无硬件设备要求,支持安卓、苹果、AR Foundation开发
250 0
|
11月前
|
传感器 自动驾驶 算法
【年终特辑】看见科技创新力量 洞见时代创业精神—交通物流—FUTURUS:打破“次元壁”,光场AR HUD提升智能汽车的人车交互体验
【年终特辑】看见科技创新力量 洞见时代创业精神—交通物流—FUTURUS:打破“次元壁”,光场AR HUD提升智能汽车的人车交互体验
|
11月前
|
供应链 定位技术 新制造
【年终特辑】看见科技创新力量 洞见时代创业精神—ARVR—灵犀微光:AR光波导显示技术先行者与领导者
【年终特辑】看见科技创新力量 洞见时代创业精神—ARVR—灵犀微光:AR光波导显示技术先行者与领导者
|
11月前
|
算法 JavaScript 前端开发
支付宝五福 AR 玩法及背后的互动引擎—Paladin
支付宝五福 AR 玩法及背后的互动引擎—Paladin
493 0
|
11月前
|
编解码 前端开发 JavaScript
支付宝 AR 空中写福技术揭秘
支付宝 AR 空中写福技术揭秘
7314 0

热门文章

最新文章