支付宝(AR虚拟现实)红包 玩法与技术背景 - GIS(LBS)、图像识别与秒杀技术的完美结合

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: 背景 作为搞IT的小伙伴们,对虚拟现实(AR)应该并不陌生,这次支付宝带来了一个很有趣的功能,虚拟现实与藏红包结合起来。 简单介绍一下这个业务,然后我们再来思考背后的技术。 支付宝(AR虚拟现实)藏红包、找红包 玩法介绍 想象一下,你可以把你的红包藏在世界各地的任意角落,让全世界的人来找红包

背景

作为搞IT的小伙伴们,对虚拟现实(AR)应该并不陌生,这次支付宝带来了一个很有趣的功能,虚拟现实与藏红包结合起来。

简单介绍一下这个业务,然后我们再来思考背后的技术。

支付宝(AR虚拟现实)藏红包、找红包 玩法介绍

想象一下,你可以把你的红包藏在世界各地的任意角落,让全世界的人来找红包,是不是一件很有趣的事情。

比如你可以把红包藏在你家的小狗身上,又或者你可以把它藏在某个建筑物、某个房间、某一本书中。。。。。。

藏的方法很简单,首先需要打开支付宝,然后选择红包->AR红包

然后你可以选择藏红包

pic

对准你要藏的地点,把手机的摄像头对准它,这个地方就是你要藏红包的地点。

pic

你可以选择红包是对所有人可见,还是对好友可见,那么一起来找红包吧!

找红包其实很简单,只要点中AR红包,如果你离藏红包的地点足够近(才能抢)的话,就会弹出一张被模糊化的图片,你需要以这张被模糊化的图片为线索,找到它,同时拿起手机扫描这个地方,那么就找到啦。

pic

好像这个功能已经很火爆了,我周围就有好多小伙伴已经藏了好多红包呢,目前支付宝应该限制了必须在藏红包的限定距离内才能找,否则我们只能看到周围有哪些红包,但是是无法开始找滴。

比如你发现距离你1公里的地方藏了个红包,赶紧裸奔前往抢红包吧,即锻炼了身体,又能抢到红包,何乐而不为呢?

为什么要限定距离才能抢呢?

1. 防止作弊,比如我发现5公里外有一个红包是对着一瓶牛奶拍的,而我刚好也有这样的牛奶,没有距离的限制,你就可以在远程刷红包了。

(当然,这也可能是业务层面的限制,兴许将来会开放这样的功能呢,比如允许多少公里以内的人和你一起找,比如你家里收藏了一张老唱片,通过AR红包有机会找出附近还有哪些同好,那不是很好玩么?)

看样子今年过年这个游戏会很火爆,以后不一定是藏红包,还可以藏别的啥??感觉脑洞不够用啦。

附加价值

个人认为这个功能的附加价值非常大,玩法多样,暗藏巨大商机。

AR红包背后的技术思考

介绍完功能,我们该来了解一下这项功能背后的技术啦。

我们来分解一下,有几个要素,首先说一下藏红包:

1. 藏红包的地点,即地球坐标(经纬度),在藏红包时会记录下这个红包的经纬度。

2. 藏红包的标识(图片),即藏红包现场拍的照片,在藏红包时,会存下这张图。

全世界有很多人藏红包的话,就会产生很多的红包地理坐标、红包表示(图片)

找红包:

1. 将你附近的红包展示出来,比如方圆2公里有哪些人藏了红包,并且把他们的坐标信息也在地图上展示出来,方便你前往找红包

2. 当你抵达红包坐标附近(比如50米内)时,你就可以拿起手机,根据红包提供的模糊化图片线索,扫描物体(即藏红包的图片),当你扫描的图片和藏红包时拍的图片完全匹配时,找红包成功,

所以这里涉及到两项技术

1. 地理位置信息的处理:红包位置的展示(将你的位置以及附近藏的红包位置分别在地图上展示出来),近邻查询(根据你所在的经纬度,查找你附近的红包)

2. 图片相似度比较,也就是找红包的人拍的照片 与 藏红包时拍下的照片 进行比对,相似度达到一定程度时,表示红包被找到了。

3. 秒杀特性,例如你在一处藏了很多个红包,那么可能有很多人同时在抢(不过这个秒杀应该比不上双十一,因为是小范围秒杀,除非开通全球可找(不受地域限制))。

这几个功能在PostgreSQL数据库中都可以高效的实现,是不是很棒?

你是不是也想做一个类似功能的应用了呢?

那么接下来我们来看看PostgreSQL如何处理这两项需求的吧,顺便看看性能如何?

地理位置信息处理, 军工\科研\民用领域霸主 PostGIS插件

在AR红包的业务中,地理位置信息的处理包括

1. 按你的位置,搜索附近的红包。即KNN搜索(如 select * from table where loc <-> poc<1orderbyloc<>poc<1公里orderbyloc<−>poc)

2. 根据用户的位置,红包的位置,计算用户与红包的距离

PostgreSQL 最为常用和流行的外围插件之一 - PostGIS。

pic

在军工、科研、民用场景都非常的流行,包括我们常见的精细地表raster探测,天文研究、地图、路径规划等应用中都可以看到PostGIS的影子,本文可能不会用到这么深入的功能,其实支付宝这个AR藏红包的业务只用到了PostGIS的一小部分功能:GIS数据类型、GIST索引、近邻查询。

pic

我这里测一组point的数据(性能与PostGIS的经纬度表示相当)

假设地球上布满了横竖各100000个点组成的100亿个点阵,随机往里面插入100亿记录,根据任意点,查出附近的点。

12核的机器,每秒可以处理将近8万次这样的请求,随着硬件的发展,现在32核的机器成为了主流,而且处理效率比以前的机器要高,每秒处理50万次请求也不为过。

详细的用法和测试方法参考

《PostgreSQL 百亿地理位置数据 近邻查询性能》

更多文章和详细的PostGIS功能可以参考

《如何建立GIS测试环境 - 将openstreetmap的样本数据导入PostgreSQL PostGIS库》

《聊一聊双十一背后的技术 - 物流、动态路径规划》

https://en.wikipedia.org/wiki/PostGIS

http://postgis.net/

图像近似度处理

图像近似度的处理,则更有意思了,需要根据图像匹配出相似的图像。

类似领奖,当你扫描的图片与藏红包的图片进行对比时,如果相似度高大99%(假设),领奖成功,否则继续找吧。

在PostgreSQL的的生态圈中,有很多这样的插件来满足图片搜索的需求,同时也支持图像相似度值的计算

1. 使用Haar wavelet算法的imgsmlr插件

https://github.com/postgrespro/imgsmlr

pic

2. 使用图片RGB点阵组成的数组来计算相似度的插件1, smlar

《从相似度算法谈起 - Effective similarity search in PostgreSQL》

pic

git://sigaev.ru/smlar

参考

《从相似度算法谈起 - Effective similarity search in PostgreSQL》

《PostgreSQL 在视频、图片去重,图像搜索业务中的应用》

git://sigaev.ru/smlar

https://github.com/postgrespro/imgsmlr

3. 使用图片RGB点阵组成的数组转成tsvector来计算相似度的插件2, RUM

RUM计算相似度时带上了位置信息,精确度更高。

比如(0,1,2,3,4,5与0,0,2,3,4,5与5,1,4,2,3,0与2,3,4,5,0,1)

其中0,1,2,3,4,5是原始点阵的值,那么0,0,2,3,4,5可能是有一定误差的值(因为依旧是线性相关的),而2,3,4,5,0,1出现了角度偏差(可以通过技术手段比如rum,把数据拉成环状修正),可能是图片拍摄角度造成的。但是5,1,4,2,3,0可能就不是那个图像了。

可以消除拍摄角度、图片大小(拍摄距离)造成的误差

pic

不过貌似业务层面,目前还没有支持距离偏差的修正,以及拍摄角度的修正,也许将来会做,用户体验可能更好。



详见

《从难缠的模糊查询聊开 - PostgreSQL独门绝招之一 GIN , GiST , SP-GiST , RUM 索引原理与技术背景》

pic

以上是PG开源生态中的图像相似度处理手段,如果其他的图像匹配需求,可以改进相应的算法,并将其合并到PostgreSQL中,PG提供的是坚实的底盘和丰富的扩展能力。

AR 藏红包如何计算图片匹配

我们在AR藏红包的业务中,只需要用到计算近似值的功能即可,以上两个插件都可以很好的满足。

比如使用RGB点阵时,在应用程序端生成RGB点阵,发送给数据库,与存储在数据库中的点阵进行相似度计算即可。

藏红包时的图像数字化流程如下:

1. 拍照,点阵RGB串成数组或转换为tsvector(带距离计算,相似度更加准确),将红包的位置信息、图片RGB点阵存储到数据库中

找红包,匹配图像时的流程如下:

1. 拍照,生成点阵,提交给服务端,进行图像匹配,匹配方法参考前面的三种方法之一即可,当然也可以考虑更高效的方法,搞进PostgreSQL的插件里面来。

注意,如果从服务端提取点阵,在客户端比对,这种做法虽然节省了服务端开销,但是这种做法可能存在漏洞,客户端可以被HACK,直接匹配上。

秒杀

目前业务层面只支持近距离找红包,也就是说,不可能出现大量人涌现刷红包的情况,当然你如果对着蓝天白云藏红包,那就另当别论了,但是由于限定了位置(比如方圆500米)才能抢,也不可能出现大量人涌现刷红包的情况。

所以通常来说,抢一个红包的人群不会太多,比如这张图已经是极限了,而且只有 "一环" 的人在同时抢。

pic

那么如果有上亿人同时秒杀一个红包怎么做呢?PostgreSQL同样有独门秘技来支持秒杀。

参考

《聊一聊双十一背后的技术 - 不一样的秒杀技术, 裸秒》

《PostgreSQL 使用advisory lock或skip locked消除行锁冲突, 提高几十倍并发更新效率》

小结

AR的技术会越来越流行,地理位置、图像、视频、声音等特殊数据类型的处理会越来越常见,数据库应该与时俱进,不能再仅仅存储和处理文本、数字这么简单的功能了。

PostgreSQL的高扩展能力,为AR提供了坚实的技术基础,不仅能存,更能高效处理。

比如在PostgreSQL中高效的存储、检索、处理: 基因、化学分子、文本、分词、图像、指纹、声波、GIS等数据类型,都得益于PostgreSQL的高扩展能力,支持新的数据类型的存取、索引、函数、操作符也是易如反掌的事情。

参考

《PostgreSQL 百亿地理位置数据 近邻查询性能》

《如何建立GIS测试环境 - 将openstreetmap的样本数据导入PostgreSQL PostGIS库》

《聊一聊双十一背后的技术 - 物流、动态路径规划》

https://en.wikipedia.org/wiki/PostGIS

http://postgis.net/

《从相似度算法谈起 - Effective similarity search in PostgreSQL》

《PostgreSQL 在视频、图片去重,图像搜索业务中的应用》

更多PostgreSQL的应用文章

《元旦技术大礼包 - ApsaraDB的左右互搏术 - 解决企业痛处 TP+AP混合需求 - 无须再唱《爱你痛到不知痛》》

《Leap second , 闰秒 , 数据库 , PostgreSQL , Solar time , UNIX time , UTC , UT1》

《元旦技术大礼包 - 2017金秋将要发布的PostgreSQL 10.0已装备了哪些核武器?》

《从天津滨海新区大爆炸、危化品监管聊聊 IT人背负的社会责任感》

《PostgreSQL 重复 数据清洗 优化教程》

《从难缠的模糊查询聊开 - PostgreSQL独门绝招之一 GIN , GiST , SP-GiST , RUM 索引原理与技术背景》

《从真假美猴王谈起 - 让套牌车、克隆x 无处遁形的技术手段思考》

《恭迎万亿级营销(圈人)潇洒的迈入毫秒时代 - 万亿user_tags级实时推荐系统数据库设计》

《DBA专供 冈本003系列 - 数据库安全第一,过个好年》

《聊一下PostgreSQL优化器 - in里面有重复值时PostgreSQL如何处理?》

《从相似度算法谈起 - Effective similarity search in PostgreSQL》

《一场IT民工 与 人贩子 之间的战争 - 只要人人都献出一点爱》

《"物联网"流式处理应用 - 用PostgreSQL实时处理(万亿每天)》

《为了部落 - 如何通过PostgreSQL基因配对,产生优良下一代》

《流计算风云再起 - PostgreSQL携PipelineDB力挺IoT》

《分析加速引擎黑科技 - LLVM、列存、多核并行、算子复用 大联姻 - 一起来开启PostgreSQL的百宝箱》

《金融风控、公安刑侦、社会关系、人脉分析等需求分析与数据库实现 - PostgreSQL图数据库场景应用》

《实时数据交换平台 - BottledWater-pg with confluent》

《PostgreSQL 在视频、图片去重,图像搜索业务中的应用》

《基于 阿里云 RDS PostgreSQL 打造实时用户画像推荐系统》

《PostgreSQL 与 12306 抢火车票的思考》

《门禁广告销售系统需求剖析 与 PostgreSQL数据库实现》

《聊一聊双十一背后的技术 - 物流、动态路径规划》

《聊一聊双十一背后的技术 - 分词和搜索》

《聊一聊双十一背后的技术 - 不一样的秒杀技术, 裸秒》

《聊一聊双十一背后的技术 - 毫秒分词算啥, 试试正则和相似度》

《PostgreSQL 9.6 引领开源数据库攻克多核并行计算难题》

《PostgreSQL 前世今生》

《如何建立GIS测试环境 - 将openstreetmap的样本数据导入PostgreSQL PostGIS库》

《PostgreSQL 9.6 单元化,sharding (based on postgres_fdw) - 内核层支持前传》

《PostgreSQL 9.6 sharding + 单元化 (based on postgres_fdw) 最佳实践 - 通用水平分库场景设计与实践》

《PostgreSQL 9.6 sharding based on FDW & pg_pathman》

《PostgreSQL 9.5+ 高效分区表实现 - pg_pathman》

《PostgreSQL 数据库安全指南》

《PostgreSQL 9.6 黑科技 bloom 算法索引,一个索引支撑任意列组合查询》

《PostgreSQL 使用递归SQL 找出数据库对象之间的依赖关系》

《用PostgreSQL描绘人生的高潮、尿点、低谷 - 窗口/帧 or 斜率/导数/曲率/微积分?》

《用PostgreSQL找回618秒逝去的青春 - 递归收敛优化》

《PostGIS 在 O2O应用中的优势》

《PostgreSQL 百亿地理位置数据 近邻查询性能》

《HybridDB最佳实践, 实现OLAP和OLTP一体化》

《hll插件在Greenplum中的使用 以及 分布式聚合函数优化思路》

《performance tuning about multi-rows query aggregated to single-row query》

《PostgreSQL aggregate function customize》

《想挑战AlphaGO吗?先和PostgreSQL玩一玩?? PostgreSQL与人工智能(AI)》

《PostgreSQL 全表 全字段 模糊查询的毫秒级高效实现 - 搜索引擎颤抖了》

相关实践学习
基于函数计算实现AI推理
本场景基于函数计算建立一个TensorFlow Serverless AI推理平台。
相关文章
|
15天前
|
机器学习/深度学习 监控 算法
深度学习赋能智能监控:图像识别技术的革新与应用
【4月更文挑战第8天】 随着人工智能技术的飞速发展,深度学习在图像处理领域取得了突破性进展。特别是在智能监控系统中,基于深度学习的图像识别技术已成为提升安全和效率的关键工具。本文将探讨深度学习技术如何革新传统监控体系,增强其对复杂场景的理解能力,以及在实际部署中面临的挑战和解决方案。通过分析最新的研究成果和应用案例,我们揭示了深度学习在智能监控领域的潜力及其对未来社会发展的影响。
18 2
|
14天前
|
机器学习/深度学习 监控 安全
智能化视野下的守卫者:基于深度学习的图像识别技术在智能监控领域的革新应用
【4月更文挑战第9天】 随着人工智能技术的飞速发展,深度学习已经成为了推动计算机视觉进步的重要力量。尤其在智能监控领域,基于深度学习的图像识别技术正逐步转变着传统监控系统的功能与效率。本文旨在探讨深度学习技术如何赋能智能监控,提高对场景理解的准确性,增强异常行为检测的能力,并讨论其在实际部署中所面临的挑战和解决方案。通过深入分析,我们揭示了深度学习在智能监控中的应用不仅优化了安全防范体系,也为城市管理和公共安全提供了有力的技术支持。
|
1天前
|
机器学习/深度学习 数据采集 自动驾驶
基于深度学习的图像识别技术在自动驾驶系统中的应用
【4月更文挑战第21天】 本文章深入探讨了深度学习技术在自动驾驶车辆图像识别领域的应用。不同于传统的摘要方式,本文将直接点出研究的核心价值和实际应用成果。我们专注于卷积神经网络(CNN)的创新设计,其在复杂道路场景下的行人和障碍物检测中的高效表现,以及这些技术如何整合到自动驾驶系统中以增强安全性和可靠性。通过实验验证,我们的模型在公开数据集上达到了行业领先水平的准确率,并且在真实世界的测试场景中展现了卓越的泛化能力。
|
3天前
|
机器学习/深度学习 传感器 自动驾驶
基于深度学习的图像识别技术在自动驾驶系统中的应用研究
【4月更文挑战第20天】 本研究聚焦于深度学习技术在图像识别领域的应用,并探讨其在自动驾驶系统中的实际效用。文章首先回顾了深度学习与图像处理技术的基础知识,随后详细分析了卷积神经网络(CNN)在车辆环境感知中的关键作用。通过实验数据对比分析,本文验证了所提出算法在提高自动驾驶车辆对周围环境的识别准确性和实时性方面的有效性。最后,讨论了目前技术的局限性及未来可能的研究方向,旨在为进一步的技术突破提供参考。
|
4天前
|
机器学习/深度学习 监控 算法
深度学习驱动下的智能监控革新:图像识别技术的前沿应用
【4月更文挑战第19天】 在数字时代,智能监控系统作为城市安全和效率的守护者,正经历着前所未有的技术变革。本文深入探讨了基于深度学习的图像识别技术如何重塑智能监控领域,通过算法创新提升识别准确率,实时处理大量数据,并在各种环境条件下稳定运行。我们将分析当前最前沿的技术应用案例,探讨其在实际应用中遇到的挑战及未来发展趋势,从而为相关领域的研究者和实践者提供参考和启示。
|
4天前
|
机器学习/深度学习 传感器 人工智能
基于深度学习的图像识别技术在自动驾驶系统中的应用
【4月更文挑战第18天】 随着人工智能的快速发展,深度学习技术在图像处理和识别领域取得了显著进展。特别是在自动驾驶系统中,基于深度学习的图像识别技术已成为关键技术之一。本文将探讨深度学习在自动驾驶系统中的应用,重点关注卷积神经网络(CNN)和循环神经网络(RNN)在车辆检测、行人识别和交通标志识别等方面的应用。通过对比传统图像识别方法,我们将展示深度学习技术如何提高自动驾驶系统的准确性和鲁棒性。
|
5天前
|
机器学习/深度学习 传感器 自动驾驶
基于深度学习的图像识别技术在自动驾驶系统中的应用
【4月更文挑战第18天】 随着人工智能的快速发展,特别是深度学习技术的突破性进步,图像识别已成为自动驾驶领域的核心组成部分。本文旨在探讨基于深度学习的图像识别技术如何优化自动驾驶系统的性能,并分析其在实时交通场景中处理复杂视觉信息的能力。文中将介绍几种主要的深度学习模型,包括卷积神经网络(CNN)和递归神经网络(RNN),以及它们在图像分类、目标检测和语义分割中的应用。同时,文章还将讨论当前技术面临的挑战和未来的发展方向。
|
5天前
|
机器学习/深度学习 传感器 自动驾驶
基于深度学习的图像识别技术在自动驾驶汽车中的应用
【4月更文挑战第18天】 随着人工智能技术的迅猛发展,深度学习已成为推动多个技术领域革新的关键力量。尤其在图像识别领域,深度学习技术通过模仿人类视觉系统的处理机制,显著提高了机器对视觉信息的理解和分析能力。本文将探讨深度学习在图像识别领域的核心技术原理,并重点分析其在自动驾驶汽车中的应用,如何通过精确的图像识别来增强车辆的环境感知能力,从而实现更安全、更高效的驾驶体验。
|
6天前
|
机器学习/深度学习 人工智能 监控
基于深度学习的图像识别技术进展
【4月更文挑战第17天】 随着人工智能领域的飞速发展,图像识别技术作为其重要分支之一,在多个领域内取得了显著的成就。本文旨在综述近年来基于深度学习的图像识别技术的关键进展,并探讨其在实际应用中的表现与挑战。文中首先概述了深度学习在图像处理中的基本概念和关键技术,随后详细分析了卷积神经网络(CNN)在图像分类、目标检测以及语义分割等方面的应用实例。此外,文章还着重讨论了数据增强、迁移学习、对抗性网络等先进技术对提升模型性能的影响。最后,本文提出了目前技术面临的主要问题和未来可能的研究方向。
|
7天前
|
机器学习/深度学习 监控 安全
深度学习驱动下的智能监控革新:图像识别技术的实战应用
【4月更文挑战第16天】 随着人工智能的迅猛发展,深度学习技术在图像处理和分析领域取得了突破性的进展。尤其是在智能监控系统中,基于深度学习的图像识别技术已经成为提高安全水平、实现自动化监控的关键工具。本文聚焦于深度学习在智能监控中的应用,探讨了卷积神经网络(CNN)、递归神经网络(RNN)等先进结构在实时视频流分析和异常行为检测方面的具体实践。通过深入分析多个案例,我们展示了深度学习如何提升监控系统的准确性、效率及智能化程度,同时对面临的挑战和未来发展趋势进行了展望。
10 2