EventBridge 助力阿里云视觉智能开放平台 AI 智能存储实践
本文作者:李建,阿里巴巴达摩院技术专家。
01 视觉智能开放平台(VIAPI)业务场景介绍
阿里云视觉智能开放平台(简称 VIAPI),是基于之前很多技术实践经验积累的 AI 能力的沉淀平台。目前整个平台覆盖的行业非常广,比如城市大脑、数字营销、金融以及娱乐行业。面向的人群包含企业者、开发者和个人。整个平台类目有 14 种,包括人脸人体、目标检测、文字识别等。目前平台大约有 200 个 API。
第一项能力是智能家居场景中的人车宠物检测。目前在网上购买到的 IPC 的智能摄像机,比如老人摔倒检测,宠物移动检测,或安防中的外来入侵检测等,都属于该范围。
第二项能力是图像分割(抠图)。比如证件照可以通过手机拍照再进行抠图来实现。除了抠图应用外,在视频分析课中也有较多应用。比如线上视频会议时,可以更换背景,换成海边或其他自己喜欢的背景,以上能力都是基于视频的分割实现。
第三项能力是超分辨。可以对低分辨率的老旧照片进行超分辨输出,也可以对低分辨率的影视剧进行超分辨,获得更清晰的画质。
第四项能力是 OCR 。例如银行卡的卡号的识别,身份证的信息识别等均采用了 OCR 技术。在办公中,对于发票、通用人事的名片也可以应用 OCR 技术。
02 用户痛点解析
客户在使用 VIAPI 时希望将自己多媒体文件直接上传到 VIAPI,处理完成后,直接将结果推送给客户。
但实际使用的技术方式如下:用户先需要下载十几个 SDK ,然后开发集成几十个、上百个 API,并且在整个过程中还需要进行不断调试、修整代码,最终能跑通之后才会发布到线上。
除了使用 VIAPI-SDK 之外,还要接入 OSS 。因为目前 CV 的 AI 能力大部分基于视频或图像,所以对于文件的存储方面,我们官方支持的是 OSS 存储。
在上述过程中,主要的用户痛点有三个方面。
1.编码方面:开发者在集成 VIAPI 和 OSS 的 SDK 的过程中,Endpoint 产品间比较容易混淆,请求的过程中需要做安全通信的签名,因为各种概念比较多,所以比较容易出错,出错多了还容易打消热情。
重复工作:整个接入工作每一个客户都是做的相同的事情,所以无论从 API 维度或用户维度来说,这都是重复性工作,应当被简化掉。
门槛高。技术人员虽然会写代码,但面对非常多的概念,第一次使用的上手成本也比较高。对于非技术人员,比如运营人员,当他也想使用 AI 能力,但是不会写代码,就无法使用这些 AI 能力。
03 解决方案和架构
为了解决以上痛点,我们实现了一个简化版本的解决方案:
从用户角度考虑,是否有这么一种方式:用户上传之后,通过某种方式驱动主动从 OSS 获取信息再进行处理,处理完成后将结果推送给客户。将此前的 VIAPI 接入全部删去,OSS 的接入步骤也有选择性地摒弃,因此不需要直接使用 SDK,也不需要开发写代码,只需要通过可视化方式完成整合,即可实现 AI 的使用。
精简后的过程如上图所示,用户先通过可视化方式订阅一个主题(主题即为各个 API,比如某个具体的 AI 能力)。然后上传文件(图像/视频)到 OSS,通过数据驱动的方式,实现文件变更的感知以及数据处理,最终将结果推送给客户。
具体的技术实践如上图所示。首先在控制台以可视化的操作方式进行订阅,然后上传图像到 OSS,通过跨云账号的方式监听 OSS 文件变动,并通过 SDK 引擎根据订阅配置调用具体的 AI 能力,等算法产生结果后,将结果数据推送给租户。
以上过程存在两个基本难点:
1.跨云账号的数据监听和访问:“用户的 OSS”、“VIAPI”可以理解为两个云账号,而两个云账号之间是隔离的,默认拒绝访问。因此想要实现上述过程,需要通过某种授权机制实现可信的访问。
AI 的结果如何发送给客户:客户期望的数据形式以及数据的接收目的地不确定,有的客户希望发送到钉钉,有的客户希望发送到 HTTP,有的客户希望发送到 RocketMQ。此外,客户对字段方面的要求也不尽相同,可能只需要一个字段,也可能需要多个字段。因此如何针对这类个性化需求灵活地进行数据清洗和回调是一个难点。
EventBridge 很好地解决了这些技术难点,从文件变动感知、事件通知、跨账号授权访问,到结果回调。此外,EventBridge 还提供了安全的通信方式,以及事件溯源,从上传 OSS 到 VIAPI 的处理,再到结果的回调,数据具体发送到何处,都可以通过 EventBridge 进行追踪溯源。
上图展示了一个示例:用户 OSS 文件上传定义了一个事件,该事件通过可视化的方式进行配置。这样,建立在跨账号授权的基础上,用户在上传到 OSS 时就可以同步通知到 VIAPI。
上图展示了当钉钉作为数据接收方式时,直接将图片发送到钉钉的效果。
对于线上的业务,后端可能更希望将最终处理结果发送到 RocketMQ,从而提升开发效率。上图展示的为直接发送到 RocketMQ 的配置。
综上,整个架构实现如下:首先,用户在控制台配置订阅,然后上传到 OSS,EventBridge 会感知该过程,并将信息推送给用户,同时过程中获得了跨账号授权。SDK 引擎会进行算法调用,最终结果回调 EventBridge,EventBridge 再通过多渠道将结果返回给用户。由于不同的客户之间账号授权信息要加密以及数据访问等都需要较高的安全机制来进行保障,因此我们做了一个 SDK 引擎来实现租户间的数据、授权的隔离,以及支持 BYOK 加解密。
通过以上实践,我们沉淀出了 AI 智能存储产品,能够大幅提高工作效率,并且在数据安全方面做了较好的隔离。对于非技术人员,也实现了零代码的支持,最终结果可以发送到钉钉、邮箱等。
我们借助 EventBridge 实现了 VIAPI 产品的 AI 智能存储产品,EventBridge 对本次产品研发提供了非常大的支持,AI 的使用也为客户带来更好的体验,深入实现了“拿来即用”以及 AI 的“普惠”理念。
未来,我们会在品牌方和调用方面进行更多升级,提高技术效率,争取成为行业第一。
版权声明: 本文为 InfoQ 作者【Apache RocketMQ】的原创文章。
原文链接:【http://xie.infoq.cn/article/2dc1e7cb8ae5cb3cd97027f80】。文章转载请联系作者。
评论