木瓜子 2017-04-28
更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud
2016年,一款名为《Pokémon GO》的游戏出现在大众视野,怒刷各大游戏排行榜。极具趣味性和科技感的AR技术效果瞬间火爆全球。接着AR技术被广泛用在各大互联网公司APP的营销场景中,其中最多的便是AR识别和追踪。但一段时间内,真正掌握核心技术的国内厂家并不多,对应出现了提供AR识别SDK小公司的创业机会。
那么,这些技术背后的原理是什么?本文会从图像处理、特征检测、特征点匹配、图像变换匹配和追踪算法等方面给你进行深入浅出的技术展现,让AR识别技术不再成为难以逾越的技术壁垒。最后也会跟大家聊聊,天猫营销平台技术,是如何探索新技术在营销领域的运用,与商业进行紧密结合的。
AR技术从来不是单独的一门学科领域,它是众多技术学科集成在一起的一个应用方向。如图所示,除了一些图像处理基础及AR硬件相关算法外,它所依托的最重要两个领域是计算机视觉和机器学习,而这背后就人工智能这个大领域。我们会以计算机视觉理论作为基础,来讲讲AR的技术。
1. 基础知识准备
首先科普两个基础知识,我们先来说说图像的表示和色彩模型。
二维图像模型,定义一个二维图像的模型表示成z = I(x, y),x、y为二维图像上的像素点坐标值,z为此像素点的色彩值,如果使用的是RGB色彩模型,那z值就是以红、绿、蓝三个值定义的数据,比如红色为(255,0,0)。一般图片处理很多采用单通道即灰度值,那就是0~255之间的一个表示灰度的值,彩色图片也可以由一定公式变换到灰度空间里。后续的图像算子操作(如卷积等)均是在此模型上进行相信数值计算。这个模型很简单,下面要介绍的一个模型就有点难了。
计算机视觉的最重要模型:透视照相机模型,也叫小孔摄像机模型。这个模型来源于真实世界的成像原理,从古人发现的小孔成像、到凸透镜成像、一直到人眼成像结构的发现。
人们从发现的原理中受到启发,确立了由4个坐标系组成的透视照相机模型。它描述了现实世界的物体从世界坐标系、相机坐标系、图像坐标系到像素坐标系之见转换的位置关系,并对应到多个矩阵的计算上。AR算法所用到的计算机视觉技术,很多都是现实世界的物体与图像平面上的变换(这里一般称为单应性变换,后文会用到),所以这个模型就成为了AR算法中最基本的模型,大家心里要这个概念。
AR算法的核心技术:识别追踪
AR算法有很多不同种类,其中目前在手机端使用的最重要的就是识别和追踪。基本上,去年以来的所有在手机APP上宣称的AR功能都离不开此技术。
如图我厂去年的一些营销活动,“全民扫钱”领优惠券、扫实物瓶子出现相关3D动画,识别标记图片找红包等,都使用了图像的识别或者追踪技术。
AR识别追踪的流程
AR识别追踪,根据所需识别的图像内容,大致分为两个技术流派:Marker based AR 以及MarkerLess AR。Marker识别是使用一个较简单的标识,通常是正方形并且四边都清晰可辨。这类识别算法相对简单,通常用模板匹配算法解决,效果也不错,此方面经典实现可以参考早期ARToolKit引擎的Marker识别流程。
随着进一步发展,人们逐渐喜欢用更复杂的图像来代替Marker,简单的识别技术已经不适应现有需求。于是就出现了更复杂更通用的MarkerLess AR的识别,我们下面主要说的就是这种技术。
MarkerLess AR的识别追踪主要分为特征点检测、图片识别和追踪(姿态估计)三个步骤。图片识别的过程又分为特征点匹配和图片相似度度量两步。
特征检测
图像局部特征检测作为计算机视觉领域的热点内容,这十几年里研究进展不断。考察此技术的大致发展历史,是从简单的角点特征提取一直到尺度不变、旋转不变的特征提取算法。图像的角点特征是最容易被检测出来的,但是,在不同尺度不同大小分辨率的图像上会不稳定,比如在小图片中找到的角点不一定在同一张图片的小尺寸图片上检测得出来。
另外,图片发生旋转后特征区域的角度发生变化,也造成了检测不出原图对应的特征点。所以,我们来说一个经典的尺度不变特征检测(SIFT)算法,它通过引入尺度不变性和旋转不变性,解决了以上两个问题。
SIFT算法之经典,不仅在于它已经写成了教科书的经典段落,每个学图像处理或计算机视觉的人都会去完整的经历一遍它的原理;更在于这十几年里不断涌现的新的特征检测算法,都可能或多或少的借鉴了它的整体框架和思路。
怎么引入尺度不变性呢?SIFT引入了尺度空间的概念,将一张图片通过高斯卷积操作生成多个尺度的图片,这些不同尺度因子的图片给人的直观感受就是清晰度不同。然后加入多分辨率框架,每次都降采样宽高为原图的1/2。
然后同层相邻图片进行差分操作,就生成了高斯差分金字塔(DoG),如上右图所示。为啥使用DoG尺度空间作为特征点的搜索空间呢?因为人们发现高斯拉普拉斯(LoG)函数的极值点相对于其他的特征提取函数能够产生更加稳定的图像特征,而DoG和LoG非常相似并且DoG的处理速度比LoG快多了,于是就使用了DoG作为特征提取函数。
在DoG金字塔中,我们采用区域搜索算法去寻找最大值或最小值点(如上图)。对于每个点,考察其邻域点:周围的8个点及其上下相邻尺度的18个点,共26个点。一个点如果在这26个领域点中是最大值或最小值,就认为该点是图像在对应尺度下的一个特征点。全部检测完后,会使用一些算法去除其中不好的或者边缘的特征点,以增加特征点提取的稳定性。
为了获得特征的旋转不变性,SIFT通过计算特征点周围邻域像素的梯度方向并统计出方向累积直方图,把其中累计值最大的方向定为该特征点的主方向。后面的特征点描述就会把坐标轴旋转为特征点主方向,所以在发生旋转的图片上也会同原图片中的特征描述一致。这样,就具备了旋转不变性。
对检测出的特征点,根据点周围邻域像素的梯度方向形成特征描述子。如上图示,计算出特征点Keypoint周围16*16的window中每一个像素梯度,并使用高斯下降函数降低远离中心的权重。在每个4*4的1/16象限中,通过加权梯度值加到直方图8个方向区间中的一个,计算出梯度方向直方图。每个特征点的描述子大小为4*4*8=128维,归一化之后可以去除光照影响。
我们可直观感受下,上图中一张图片通过SIFT所提取的特征点信息。图中每个箭头代表一个检测到的特征点,箭头的起始位置为特征点坐标,方向为特征点主方向,长度为所检测到的尺度空间。以上是简要的SIFT算法原理描述,详细实现细节感兴趣的可以参考论文(Lowe, 2004)。
图片识别
特征点匹配就是一个高维特征空间的搜索近似最近邻点的问题。如果是用最简单的线性匹配,那么速度远远达不到性能要求。这时候我们就必须用构建高维特征空间的数据结构算法。最经典有效的当属KD树及KMeans树两种结构及对应算法。
首先KD树算法我们来举个例子,假设有特征点样本集:{(2,3), (5,4), (9,6), (4,7), (8,1), (7,2)},那么使用KD树生成算法,构建出如下的二叉树,特征点匹配的问题就转化成了二叉树查找。
假如有待查找点P(2.1, 3.1),如上图所示。那么搜索的过程就是先从(7,2)点开始进行二叉查找。由于第一层标记为考察X轴数据,于是待查找点与目前节点(7,2)的X轴数据比较:(2.1 < 7),选择走左子树到达(5,4),重复使用相同算法到达叶节点(2,3),就是所要求的最近邻特征点。以上只是简单而不精确的描述,实际查找算法会更复杂,因为要有回溯的过程避免遗漏路径上层子树区域内可能存在的更近距离点。
实际的KD树生成及查找算法请看相关论文(Muja et al., 2014)。
另一个很实用的最近邻查找方案是KMeans树,它和KD树查找的原理相似。区别在于,KD树是二叉树,每个节点背后对应一个样本点。而KMeans树为K叉树,使用KMeans聚类算法将特征点集分为K类,然后每类移入下一层负责分别生成下一层子树,每个节点保存的是聚类中心点等相关信息。直到叶子节点的数据量小于等于K为止,构建完成K叉树后,使用类似KD树的查找算法从Root节点开始搜索,直到找到最近邻点。K叉树如下图所示,详细相关算法可参考论文(Muja et al., 2014)。
特征点匹配的直观效果,如上图。每条蓝色线段两端连接着的是两张图片上对应的匹配点。
两张图片上的特征点匹配完成后,就需要进行下一个步骤:两图像间的相似度度量。前面普及过一个透视照相机模型,大家还有印象么?描述不同拍摄位置同一图片之间的变换,我们称之为单应性变换。如图所示的H变换。
我们使用无需相机标定的查找单应性H的算法,通过匹配的点集来得到两张图片中最佳单应性变换H,详细可参考OpenCV中的findHomography方法。然后根据得到的H,考察两图片中的匹配点集,哪些符合此单应性变换H,哪些不符合。据此,得出图片的匹配相似度量,超过预先设定阈值就认为两图片相似,即识别成功。
AR识别追踪
追踪的过程就是估计被摄物体3D姿态及3D引擎渲染对应虚拟物体姿态的过程。每一次的追踪,都依赖于前述的特征点提取、匹配、及计算单应性变换。得到单应性变换,就等于得到了被摄物体3D现实坐标点集与二维屏幕成像坐标点集。通过得到的匹配点集以及标定获得的摄像机内参数,使用求解透视N点问题的算法,就可以求出摄像机外参数,即摄像机实时姿态,随即便可估算出被摄物体3D姿态。
最后一步,使用3D引擎渲染被摄物体上的3D虚拟物体,并且把虚拟物体的姿态根据上面估计出的实际物体的姿态矩阵进行变换。如下图所展现的,虚拟与真实物体的联动,实际上就是实现增强现实的体验。
技术驱动商业变革
全民扫品牌,让广告变得更有趣
AR技术用在营销场景下,为消费者带来的扫码体验将是崭新的,遥想一群人拿着手机在街上扫描LOGO观看AR动画的盛况,简直是物物皆传播,无处不营销。与此同时,乘着内容营销的风口,众多品牌汇聚所带来的集群效应,也将进一步连接品牌与平台,实现双方价值的最大化。
图 99聚星节聚划算&哈根达斯扫Logo营销Banner
去年9.9期间,国内外160余个一线品牌参加了天猫营销平台&聚划算的品牌LOGO AR互动。几乎你身边能看到的品牌,用聚划算客户端扫一扫,都会出现酷炫的AR效果,同时消费者还可以领取品牌方发出的不同面额的现金红包。此玩法以AR这种科技手段为媒介,将用户、品牌、天猫营销平台三者进行有机结合。
消费者:通过聚划算App体验每个品牌带来的AR创意,同时可以获得自己喜爱品牌的现金红包。
品牌方:通过AR视频来表达自己的品牌理念及新品趋势告知给消费者,同时获取自己的线下目标客户信息。
天猫营销平台:从之前的告诉消费者什么品牌在参聚,变为消费者通过AR互动知道这个线下品牌在参聚,同时即使该品牌不在参聚状态下,消费者也可以通过扫LOGO获取该品牌活动,订阅该品牌,获得其参聚资讯。
2016.9.4-9.9期间,部分优质品牌方和聚划算全面线上线下联动,将品牌LOGO,聚字LOGO全面投到地铁、灯箱、建筑地标等,消费者扫LOGO即可获得由品牌方及聚划算提供丰厚红包及礼品。
那么,在以上业务场景构建完毕后,为了完成业务需求,提升用户体验,我们必须对AR算法原理进行深入考察,并实现能够很好应用于以上业务场景下的AR功能。
基于庞大的业务背景,是成百上千的Logo图标,这些Logo往往比Marker更加复杂和不规则,并不能做到像传统的Maker那样四边边框清晰。用更复杂的图像来代替Marker,简单的识别技术已经不适应现有需求。于是我们开始尝试MarkerLess AR技术,也就是文章开头为大家介绍的技术原理。
为了适应Logo数量的增长,我们需要在大量Logo的业务场景下,达到移动端快速AR识别的能力。于是,我们将以上的AR识别技术扩展到了云端,由移动端提取特征数据上传到云端,识别的过程可以在强大计算力的服务器上并行完成,并及时返回结果。目前在我们的生产环境下,已经稳定的运行着可以实时识别万级别Logo量的AR引擎。
以上,AR技术的基础框架就构建完成了。我们将此AR算法用在了扫Logo的业务场景上,并产生了很好效果。
实现量化数据,打造智能化平台
对99聚星节扫Logo活动进行了详细的复盘分析和效果评估,我们发现在实现创新营销体验的同时,也获得了营销广告的数据化监控能力。
从数据上看,我们得到了创新的营销效果。扫LOGO整体会场消费者访问UV达到近千万(仅在预热期间展示) 参与玩法用户达到20%, 到达抽奖页面50%。通过 AR 技术打通线上线下,提升用户参与感,共计超过 100 家以上的品牌参与,当天进入微博话题排行榜第三名,红包引导率接近 90%。
传统广告投放最难的就是数据监控。大多数商家只能通过各方数据汇总得到一个粗放的效果判断,无法精确到个人的具体行为。但此次聚划算的品牌扫LOGO活动却切实做到了数据的精准和量化。
而商家通过消费者的扫LOGO行为,可以精确了解,这个广告带来了多少收益,谁在哪个时间扫描了什么。进而判断出每个广告位究竟能带来多少流量、多少收益、实现多少转化。
在未来,通过扫LOGO的创新玩法以及聚划算已经积累的海量数据,将为每一个消费者量身定制出真正需要的导购页面,最终实现广告收益的最大化。
2016奥运年,里约RIO成了全球瞩目的焦点。而更巧合的是,锐澳RIO鸡尾酒与巴西里约RIO同名。RIO作为里约奥运赞助商和天猫营销平台进行了深入合作,把AR扫RIO限量版瓶子的活动推上了营销活动的高潮。
通过聚划算APP扫RIO里约联名限量涂鸦瓶身即可体验酷炫AR,将巴西风情真实融入瓶中,例如扫描奇幻亚马逊瓶,就能感受到骨头鱼与金刚鹦鹉的奇妙互动,消费者不光能在RIO X里约联名限量涂鸦瓶看里约,更能在RIO X里约联名限量涂鸦瓶体验里约。让消费者买到产品的同时感受营销体验,无疑又是一次创意上的巨大创新突破。
业界AR引擎的发展
我们来说说业界用于手机端识别追踪的AR引擎的发展情况。一言以概括,从2015年起国外几个著名的引擎都纷纷被大厂们收购,市场对AR技术的迫切需求产生了供给空白,这就给了国内一些小创业公司提供AR SDK服务的机会。
开源中最著名的ARToolKit,2015年被DAQRI收购,然后版本进度变缓,目前一直停留在5.3.3上,很多人翘首以盼的ARToolKit6一直跳票到现在。原先国外比较著名的几个商业AR引擎,如Vuforia和Metaio,前者被高通卖给了PTC,后者在2015年被苹果收购,基本上就退出了让开发者集成AR直接使用的舞台了。
于是,从2015年底开始市场出现了明显空白,这就给具备计算机视觉技术的某些国内厂商提供了绝佳的时间窗口机会。在2016年拼杀中,国内出现了几个有代表性的产品,如视辰EasyAR和亮风台HiAR。这些商业引擎虽然没有开源,但大都提供有限制的免费使用,需要集成AR功能的个人开发者可以去试试。
值得一提的是,天猫技术内部也已经有了AR SDK相关产品,目前已经提供给天猫及聚划算内部业务作为营销的技术支撑。后续不排除有接入整个集团基础服务平台或开源相关的计划,以供大家使用,各位不妨期待一下。
AR未来技术的展望
最近几年人工智能(AI)热潮越来越猛,最典型的便是好多人在说:“人工智能正在重塑整个社会”。AI正在从听觉、视觉与数据分析等多个方向形成对于人类智能的包围。计算机视觉与AR领域,无疑会受到AI进步的深刻影响。现在越来越多的AI算法渗入到计算机视觉领域,一个使用了深度学习的算法,很容易就可以得到比传统经典算法更好的性能效果。
比如大规模图像分类、目标检测与识别、场景语义理解都方面,都有了确切效果印证了AI算法的有效性。正如有人说的:“Deep Learning in All computer vision”,未来的AR技术发展会有越来越多的经典算法被DL算法替代。那么,到时候AR会达到怎样的体验,小伙伴们一起来期待吧。