日期:2018-04-26 点击数:1778
AR是一种新颖的交互方式,与传统交互方式相比,可以让用户更深入地参与互动,给用户带来新体验。
而春节期间,支付宝的「扫福得福」活动也异常火爆,支付宝将AR与游戏、红包相结合,探索出了一种新玩法。
虽然AR领域已经有了很多年的发展历程,但技术成熟度和用户普及度都还有很大的进步空间。而走在该领域前排的支付宝,背后又有哪些技术架构和研究故事呢?今天就有请我们的支付宝AR团队来给大家进行详细分享。
首先,我们回顾下网络上对AR技术的定义:增强现实技术(Augmented Reality,简称AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像、视频、3D模型的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动。
从这个定义可以看出,AR包含两个关键要素:相机姿态估计和虚实互动。
不过,在当前流行的AR应用中,未必都满足这两个要素,比如有些简单的AR应用主要是识别某个物料,识别成功后播放一段广告视频然后发个优惠券,这个过程并没有估计相机姿态,但是已经满足初期AR营销需求了。为此,我们可以称当前的很多AR应用为泛AR应用。
AR技术本身可以从各个维度进行分类,比如根据硬件载体不同,可以分为基于通用移动设备的AR(比如手机AR)和基于专用设备的AR(比如Hololens)。这里我们主要关注基于手机的AR,正是由于手机的普及推动了AR技术的普及。具体到手机AR,又可以细分成多种:
• 基于NFT(Natural Feature Tracking,自然特征点跟踪)的AR:对着一个纹理丰富的平面物体扫描,就可以实时估计相机姿态并将3D模型叠加到平面物体上;
• 基于SLAM(Simultaneous localization andmapping) 技术的AR:同时估计相机姿态和周围环境地图,并可在周围环境中叠加虚拟物体;
• 基于LBS的AR:主要利用GPS信息和陀螺仪信息实现AR效果,比如PokemonGo;
• 基于3D物体的AR:通常需要预先对3D物体进行建模,然后以任意角度扫3D物体均可估计相机姿态;
• 基于AI的AR:主要结合模式识别技术,实现物体类别识别、物体特征点定位、物体分割,然后在此基础上叠加虚拟物体。随着AI技术的蓬勃发展,这个方向将会受到更多的重视。
对于大多数AR应用来说,通常都包含以下3个模块:
• 识别:具体来说包含图像识别、跟踪、3D姿态估计;
• 渲染:结合成像模型,利用渲染引擎将3D虚拟物体叠加到图像上
• 交互:手机上主要是通过触控与虚拟物体互动,Hololens则通过手势、语音进行多模态互动
支付宝AR平台作为一个平台性的系统,除了包含以上基本模块外,还有线上活动运营管理系统等。这里,我们主要介绍识别模块,包括基于自然特征点的图片识别、跟踪、姿态估计,以及基于AI技术的物体识别。
其中识别核心层由AR客户端识别引擎和服务端识别引擎构成,这两个引擎都是建立在核心算法基础之上,两者有机结合、互为补充、协同完成识别任务。
AR业务层也包含客户端和服务端,负责视频采集、交互渲染、业务路由、后台管理等工作。另外一大块是识别内容管理,包括识别模型训练、评测以及识别内容发布、监控,本文主要介绍的就是核心识别算法。
从数据流角度看,我们的NFT核心识别算法流程如下图所示。
整个流程包括客户端和服务端,对于输入的每帧图像,首先会进行客户端识别,如果客户端没能识别出来且满足静止判断条件,则上传服务端识别。
客户端识别包含局部特征点检测、特征点描述、快速检索、图片1对1匹配、单应性校验等步骤。针对每一个步骤,都有多种方法可选择。比如特征点检测方法有SIFT,SURF,Fast,ORB等,其中前两种具有尺度不变性,后两种不具备尺度不变性,需要在不同分辨率图像上分别提取特征。
局部特征点描述有SIFT、SURF、BRISK、FREAK、ORB等,它们的耗时分别为SIFT>SURF>BRISK=FREAK>ORB,准确性和耗时基本相反,在手机上常用的特征一般为后面三种。
对于快速检索方面,有两个思路:
• 采用FLANN近邻搜索方式:从所有候选图像的所有特征点里查找最相似的特征点,然后根据每张图片匹配上的点数进行排序得到候选匹配图片。
• 是采用BOW(Bag-of-Words)检索方式:这样可以让我们像查字典一样快速检索到候选匹配图片。
快速检索只是从众多图片中检索出最相近的N幅候选图片,针对这N幅候选图片,还需要做进一步的甄别,给出明确的答案,确定到底和哪一幅图片匹配,不能模棱两可。
最后再做一个单应性校验:基于平面物料的假设,物料模板图片和实际拍摄的物料图片之间存在一个单应性变换,利用匹配上的特征点可以估计出一个单应性变换矩阵,最后再根据内点数多少判定是否真的匹配上了。到此,单纯的图片识别过程就完成了。
对于需要需要跟踪的场景,比如我们最初做的Costa活动,就需要实时对Costa餐盘纸进行跟踪和姿态估计,以便虚拟的花总是无缝贴合在餐盘纸上,如下图所示:跟踪的最终目的是为了能够实时地给出相机姿态,以便3D虚拟物体可以实时叠加到实景中。
事实上,如果每帧做特征点检测、匹配、校验、姿态估计的速度足够快足够准,也可以不用做跟踪。然而现有的特征点检测匹配算法在客户端速度还不够快,因此普遍做法是检测之后做跟踪。
由于跟踪过程中,我们还需要实时估计相机姿态,因此基于整个物体ROI区域跟踪的方法比如KCF(Kernelized CorrelationFilters)方法在这里不适用,我们需要特征点跟踪方法,以便利用特征点进行姿态估计。
最常用的特征点跟踪算法就是KLT(Kanade-Lucas-Tomasi)算法,当运动幅度不是很剧烈时,效果还是很不错的,对于相对剧烈的运动,容易跟踪失败。
为此,我们采用了局部区块模版匹配的方式进行特征点跟踪。当然,为了提速,具体实现时采用了很多加速策略。跟踪完成后,同样也需要做单应性校验,确认跟踪是否正确。如果跟踪正确了,则进行后面的3D姿态估计环节。
知道2D点和3D点对应关系求解位姿,可采用非线性的Bundle Adjustment方法,也可以采取线性PnP(Perspective-n-Point)的方法求解。相比Bundle Adajustment方法,PnP方法速度更快,但精度略低,抖动大一些。为减轻抖动,可以通过对位姿做帧间平滑。
相比客户端本地识别,我们的服务端可以识别更多种类的图片,具有更多更强的识别能力。服务端具备海量图片检索能力和热点图片检索能力,并且融合这两个检索结果,做进一步的精匹配以确定最终匹配结果。
除了常规的NFT图片识别外,我们还提供了其他基于模式识别的算法,比如春节扫红包用的Adaboost目标检测、SSD目标检测、xFuNet识别以及定制的圆形目标检测、颜色识别、HogSVM识别等。
其中,基于SSD目标检测的方法由于通用性好、速度快、能够处理多种复杂情况,借助支付宝强大的客户端深度学习引擎xNN已落地到多个业务场景:
在AR平台,SSD目标检测最初用于解决弱纹理商家logo识别问题。
不少商家希望通过扫他们的品牌logo参加活动,然而有些品牌logo实在是没啥纹理,比如耐克的logo,之前介绍的NFT图片识别算法对这种场景基本无能为力。因此,我们迫切需要找到一种新方法来满足这一场景需求。
期间我们尝试了多种方案:Dense SIFT、深度特征学习、目标检测等。对各种方案进行比对后,结合AR平台业务场景,我们选择了目标检测的方式。具体到目标检测,常见的有Faster-RCNN、YOLO、SSD等。
实测发现SSD的检测速度最快,精度也能满足业务需求。最终,我们选择了SSD目标检测方式来识别弱纹理商家logo。
主体方案确定之后,还有一个问题需要解决,即商家通常只提供少量几张logo图片,这对于深度学习来说,那真是杯水车薪。我们的解决方案是对少量的商家logo图像数据做倍增,具体倍增方式包括面内面外旋转、缩放、平移、背景替换、颜色变化等。
此外,针对容易误检的样本,特别添加到样本集参与样本倍增合成。最终,我们的SSD目标检测训练流程如下图所示:
除了SSD目标检测,基于Adaboost的目标检测算法由于其全机型覆盖、计算量小等优势用在了春节红包扫福和扫手势活动中。此外,还有之前的扫中秋月亮、扫脉动瓶盖也使用了定制化的模式识别算法。
AR平台识别算法基本性能如下:
1.客户端NFT识别耗时:<200ms
2.客户端NFT跟踪耗时:<10ms
3.NFT识别包大小:<20k
4.客户端SSD检测+校验:<100ms
支付宝AR平台经过长时间的打磨,各项基本功能日趋完善。同时,我们也非常欢迎AR、AI爱好者加入我们团队,共同把支付宝AR平台打造得更好!
代表产品有:支付宝AR扫、2017春节AR红包、2018新春集五福扫福字、扫“五福到”手势、支付宝小程序缴费通、开创了支付宝银行卡识别绑定、声波支付等。
主办单位:深圳市增强现实技术应用协会
地址:深圳市宝安区兴东社区南天辉创研中心6楼
电话:18938893801 Email:Vip@szar.org.cn
《中华人民共和国电信与信息服务业务经营许可证》编号: 粤ICP备18013217号
关注微信公众号
手机查看