手机兼容性:对拥有亿级用户的支付宝而言,机型特别是Andriod机型分布很广。对于我们3D模型渲染带来了很大的挑战,需要制定完善的兼容性方案,确保AR功能的正常使用。 AR实景红包的技术选型 AR红包的初期方案也和很多已有的产品类似,仅依靠LBS和手机陀螺仪来进行互动:用户在某个位置发一个红包,其他人到达这个地点后打开摄像头,朝着某个方向拍摄就能看到别人发的红包。这个方案由于仅依赖LBS和手机陀螺仪,方案比较成熟,但主要存在两个问题: 定位精度:产品初期的定位是让附近的人领取红包(比如附近几十米的人或者同一层楼的人),这对近距离定位要求就很高。内部也讨论了很多潜在的方案,比如结合WiFi定位、室内定位等等,但都不是很通用或者不成熟,没有很好的解决方案; 主观体验:由于GPS和陀螺仪的数据本身就存在较大的误差,位置定位和用户动作都无法精确度量,用户体验不太好,没有真实的藏?找的体验。 因此在AR红包中,我们希望能够重新设计交互方式,提出了图片匹配方案。在发红包时,用户对着场景拍摄一张图;其他人想要领取红包,必须到达该位置并且对着同一场景拍摄,只有位置和图片匹配才能领取,大大增加了精确度和用户趣味性。最终该方案被采纳,诞生出了AR实景红包。 AR实景红包最终的技术架构 AR实景红包 整个AR实景红包由两个场景组成:一是藏红包,用户对着某场景拍一张图,将红包藏在这个场景里面;二是找红包,用户在地图页选择一个红包,通过线索图走到对应地点,打开摄像头拍摄进行图片比对,匹配成功后领取红包。 藏红包 并不是所有的场景都适合藏红包,比如白墙到处可见,会造成线索图不唯一的情况。因此在藏红包时,我们会校验当前场景是否满足预设要求。藏成功后,拍摄的图片会传到服务端处理:一是将图片转成特征码用于图片匹配,二是生成一张线索图用于找红包。 找红包 根据用户当前的位置,服务端会下发附近的红包信息。用户通过红包列表可以选择领取某一个红包,此时客户端会到服务端拉取该红包的特征码和线索图。线索图在本地展示,提示用户红包的样子。特征码用于客户端本地实时比对。用户找红包时,将摄像头采集的图像转换成特征码,与服务端下发的红包特征码进行比对,如果本地匹配成功,则把图片信息传到服务端做二次校验来防止作弊。服务端校验通过后,红包就可以领取了。 扫福得福 在扫福字得福卡的活动中,为了解决高并发的问题,采用了客户端+服务端并行处理的架构体系,可支持两种识别方式: 所有图片都传至服务端做处理,这样识别精度更高,但是服务器端能处理的数量有限;二是先走客户端检测,客户端无法识别的再上传服务端。客户端检测能力稍弱,但将计算能力分散到各终端,能极大缓解服务端的压力。 活动开启后,由于用户的积极参与,我们在活动早期就打开了客户端识别,使得系统顺利支撑了14万次/秒的福字识别峰值,确保了整个活动的顺利进行。但是客户端的识别精度有限也导致了不是福字被是被为福字的问题,这个也是我们后续的优化方向。 如何防冒领 正常用户要成功领取红包,需要按照线索图的提示找到红包隐藏地点并完成实景拍摄,也就是说位置+图像匹配两个条件都需要满足,才可以领红包。 AR实景红包上线之初,为了让用户有较好的体验,线索图做的比较简洁美观。第一版线索图是通过添加均匀的横条纹蒙版(类似百叶窗效果)来对原图进行遮挡,同时确保用户能简单的识别出图片。 但是,由于该方案比较简单,部分用户通过PS线索图来补全被遮挡部分,后续甚至出现了自动化的PS工具。我们随后进行了升级,每个红包的线索图都是动态选择一个蒙版,蒙版还会随机的动态旋转/偏移等。新的线索图方案,大大增加了自动化PS的难度,基本解决了PS的问题。 除了对付图片的攻击外、对于LBS篡改等其他作弊手段,蚂蚁安全团队也做了大量的防控技术手段,通过对用户的行为数据来分析潜在的作弊用户,也有效地拦截了大部分作弊用户。 AR的未来 (责任编辑:本港台直播) |