使用 Serverless 工作流快速构建 AI Serving 应用-阿里云开发者社区

开发者社区> 渐意> 正文

使用 Serverless 工作流快速构建 AI Serving 应用

简介: 本文介绍如何快速使用 Serverless 工作流 + 阿里云|达摩院 视觉智能平台构建人工智能服务应用
+关注继续查看

人工智能在最近两年一直是很火的话题,我们也越来越多的在实际生活场景中能感受到 AI 所带来的便利,比如:自动售货机购物已经可以使用支付宝人脸支付;进行一些与财务相关的 APP 注册的时候 APP 已经可以自动进行活体人脸检测;小区的物业、门禁系统支持身份证/驾驶证/车牌号的自动身份识别等等。这些应用所用到的核心 AI 基础能力是一样的,如人脸人体检测、卡证识别等。目前阿里云视觉智能开放平台以 API 的方式向开发者提供了 100 多项 AI 能力,作为产品以及应用的开发者,我们可以越来越简单的使用这些 AI 能力,更加聚焦于业务。

在实际的产品或应用中,这些图片识别的 API 往往是作为一个处理流程的某个步骤。比如:

在用户 APP 注册的过程中,上传身份证照片->身份证照片识别,提取关键信息->记录关键信息,进行业务处理->返回注册结果 就是一个典型的图片处理流程。这类场景使用 Serverless 工作流来进行处理是十分合适的。

为适应用户的需求,Serverless 工作流对阿里云视觉智能开放平台提供的 AI 能力进行了集成(已支持的 API 能力详见 列表),丰富了用户的体验,降低了用户在工作流中使用 AI 能力的成本。在集成视觉智能平台之前,用户需要手动编写 API 调用的处理逻辑,并处理 API 调用的各种异常,现在可以直接将视觉智能 API 调用作为流程中的一个步骤进行处理,并将结果数据传递到后续的流程中。这种使用方式将极大简化用户的处理逻辑,降低开发成本。

下面我们将以上述 APP 注册场景作为示例,详细解释如何在 Serverless 工作流中编排视觉智能 API。

在流程中集成身份证识别能力

在上述 APP 注册场景中,身份识别(如用户身份认证、卡证信息录入、身份信息采集等)可以抽象为一个独立的流程,为不同的 APP 复用。在这个流程中,我们使用视觉智能开放平台所提供的身份证识别 RecognizeIdentityCard 能力进行图片识别。整个流程定义如下:

version: v1beta1
type: flow
steps:
  - type: task
    name: APIRecognizeIdentityCard
    action: ocr:RecognizeIdentityCard
    inputMappings:
      - target: image
        source: $input.imageUrl
      - target: cardSide
        source: face
    outputMappings:
      - target: name
        source: $local.Data.FrontResult.Name
      - target: gender
        source: $local.Data.FrontResult.Gender
      - target: idNumber
        source: $local.Data.FrontResult.IDNumber
    serviceParams:
      ImageURL: $.image
      Side: $.cardSide
    retry: # 针对系统内部错误进行重试
      - errors:
          - ocr.ServiceUnavailable
          - ocr.InternalError
          - ocr.Timeout
          - ocr.InvalidResult
          - ocr.InvalidImage.Download
        intervalSeconds: 10
        maxAttempts: 2
        multiplier: 2

完成该流程的定义后,即可在您的业务流程中使用 Serverless 工作流所提供的 SDK,传入不同的 imageUrl 对流程进行调用。

流程详解

步骤定义

为使用 API 编排功能,我们需要定义 任务步骤。根据 使用示例,在 action 下指定 serviceNameapiName 分别为 action: ocr:RecognizeIdentityCard;

输入及输出

输入输出参数可参考 RecognizeIdentityCard文档 。在 ServiceParams 中我们将 API 所需的 imageUrl 定义为输入,这样可以做到在执行时指定不同的图片作为流程的输入从而达到识别不同身份证的目的。

输出 outputMappings 与普通的任务步骤一致,对于 API 的返回,我们只关心姓名、性别及身份证号,因此在这里我们只将这些结果作为输出。

错误处理

在错误处理方面,本流程主要需要考虑对服务内部错误进行重试。API 的所有错误码见 文档,需要额外注意的是在工作流中使用这些错误码需要添加服务名称作为前缀,即 ocr.xxx

注:该应用已上线应用中心,您可以一键 尝鲜

更多信息

阿里云视觉智能开放平台目前已开放 100 + AI API 。Serverless 工作流已集成其中的大部分能力,具体详见 阿里云视觉智能开放平台 API
欢迎大家加入官网客户群,提出您的使用建议或疑问。

_

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
如何使用Terraform管理容器服务Kubernetes集群之--Serverless集群
#### 介绍 Terraform 是一款 Infrastructure as Code 的工具,可以将云端资源代码化。关于 Terraform 的基本介绍本文不再赘述,有兴趣的同学可以参考 [《云生态下的基础架构资源管理利器Terraform》](https://yq.aliyun.com/articles/215592) 等云栖社区的优秀文章。
1297 0
【终极解决方案】为应用程序池“XXX”提供服务的进程在与 Windows Process Activation Service 通信时出现严重错误。该进程 ID 为“XXXX”。数据字段包含错误号。
原文:【终极解决方案】为应用程序池“XXX”提供服务的进程在与 Windows Process Activation Service 通信时出现严重错误。该进程 ID 为“XXXX”。数据字段包含错误号。
2238 0
使用 Kafka + Spark Streaming + Cassandra 构建数据实时处理引擎
Apache Kafka 是一个可扩展,高性能,低延迟的平台,允许我们像消息系统一样读取和写入数据。我们可以很容易地在 Java 中使用 Kafka。 Spark Streaming 是 Apache Spark 的一部分,是一个可扩展、高吞吐、容错的实时流处理引擎。
2825 0
+关注
4
文章
0
问答
来源圈子
更多
专注Serverless、微服务、函数计算等
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载