分享 | 带来全新交互体验的『支付宝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 —

目录
相关文章
|
1月前
|
Go vr&ar 图形学
重塑体验:AR/VR技术在游戏与娱乐行业的创新应用
【10月更文挑战第29天】本文探讨了AR/VR技术如何改变游戏与娱乐行业,介绍了AR和VR的基本概念及其在游戏和娱乐中的应用实例,包括《精灵宝可梦GO》的AR开发和VR视频播放器的实现代码,并展望了未来的发展趋势。
112 2
|
4月前
|
vr&ar C# 图形学
如何开发增强现实(AR)应用:技术指南与实践
【8月更文挑战第24天】开发增强现实应用是一个充满挑战和机遇的过程。通过选择合适的技术栈、遵循科学的开发步骤,并充分考虑用户体验、设备兼容性、内容与创意以及数据安全等因素,您可以成功打造一款高质量的AR应用。随着技术的不断进步和应用场景的不断拓展,AR应用的未来充满了无限可能。
|
4月前
|
vr&ar C# 图形学
WPF与AR/VR的激情碰撞:解锁Windows Presentation Foundation应用新维度,探索增强现实与虚拟现实技术在现代UI设计中的无限可能与实战应用详解
【8月更文挑战第31天】增强现实(AR)与虚拟现实(VR)技术正迅速改变生活和工作方式,在游戏、教育及工业等领域展现出广泛应用前景。本文探讨如何在Windows Presentation Foundation(WPF)环境中实现AR/VR功能,通过具体示例代码展示整合过程。尽管WPF本身不直接支持AR/VR,但借助第三方库如Unity、Vuforia或OpenVR,可实现沉浸式体验。例如,通过Unity和Vuforia在WPF中创建AR应用,或利用OpenVR在WPF中集成VR功能,从而提升用户体验并拓展应用功能边界。
83 0
|
5月前
|
传感器 人工智能 数据可视化
虚拟现实(VR)与增强现实(AR)的技术革新:塑造未来的沉浸式体验
【7月更文挑战第24天】VR和AR作为两种前沿的沉浸式技术,正以前所未有的速度改变着我们的世界。随着技术的不断革新和应用的不断拓展,我们有理由相信,未来的VR和AR将为我们带来更多令人惊叹的体验和技术革新。
|
4月前
|
安全 算法 前端开发
外滩大会安全 AR 沙盘首秀--背后的前端技术
外滩大会安全 AR 沙盘首秀--背后的前端技术
|
5月前
|
数据采集 监控 安全
园区 AR 导航系统:技术创新与功能拓展
**维小帮园区AR导航系统**借助高精地图与AR技术,打破传统二维导航局限,提供三维立体地图和沉浸式导航体验。系统包括AR实景指引、VR全景预览、便捷预约参观和智能停车场导航等功能,大幅提升访客定位与通行效率,推动园区管理智能化。未来,该技术有望在更多领域广泛应用。
107 0
园区 AR 导航系统:技术创新与功能拓展
|
6月前
|
传感器 数据可视化 人机交互
虚拟现实(VR)与增强现实(AR)技术解析
【6月更文挑战第27天】 VR创造沉浸式虚拟环境,模拟真实感受,应用于旅游、医疗、教育和游戏。AR将虚拟信息叠加到现实,强调虚实结合与实时交互,常见于游戏、教育、购物和医疗。两者提供超越现实的体验,随着技术进步,将在更多领域发挥作用,开启新可能。
|
5月前
|
前端开发 Linux Shell
技术心得:基于AR9331(MIPS架构)分析系统启动过程(uboot)
技术心得:基于AR9331(MIPS架构)分析系统启动过程(uboot)
95 0
|
6月前
|
数据可视化 搜索推荐 vr&ar
增强现实(AR)技术在教育领域的应用研究
增强现实(AR)技术在教育领域的应用研究
197 0
|
6月前
|
vr&ar
增强现实(AR)技术在文化遗产保护与传承中的应用创新
增强现实(AR)技术在文化遗产保护与传承中的应用创新