Serverless 工作流目前已集成阿里云视觉智能服务,您可以通过 Serverless 工作流来编排视觉智能服务的 API。本文介绍具体操作步骤。

背景信息

您在 Serverless 工作流任务步骤指定资源类型为阿里云视觉智能服务的某个 API,并提供所需参数,Serverless 工作流将在该步骤中按照定义调用对应的 API,并将调用结果作为步骤的输出,以便您根据需要取对应的值来完成后续任务。如果调用过程中出现错误,您可以在流程中捕获该错误并根据错误类型实施重试或跳转等策略。

前提条件

使用方式

  1. 在流程中定义被调用的 API。
    您可以在任务步骤中调用视觉智能的 API。在任务步骤中,按照以下示例指定 Action 参数替代 resourceArn 参数。
    action: {serviceName}:{apiName}
  2. 指定调用 API 参数。

    API 调用的参数请填写到 ServiceParams 下。对于服务 API 已经定义的必填参数,Serverless 工作流将进行定义检查。

    以视觉智能服务的 API ClassifyCommodity 为例,对应的调用任务 FDL 表述如下。 API 详情请参见 商品分类

    ...
      - type: task
        name: APIClassifyCommodity
        action: goodstech:ClassifyCommodity
        inputMappings:
          - target: image
            source: $input.imageURL
        serviceParams: # 描述 ClassifyCommodity 所需参数,参数列表请参见 API 说明
          ImageURL: $.image

    在该示例中,action 指定了本次调用的具体服务名称及 API 名称,ServiceParams 中的参数为对应 API 的参数。

  3. 错误处理。
    当调用 API 失败时,Serverless 工作流将返回 error 和 cause 两个 key 作为本步骤的 output 输出,您可以通过 error 来捕获错误类型进行相应的跳转等逻辑。Serverless 工作流将对服务返回的原始错误码添加 {serviceName}. 前缀作为捕获标识。以 goodstech:ClassifyCommodity 的错误码为例。详情请参见错误码说明
    ...
    steps:
      - type: task
        name: APIClassifyCommodity
        action: goodstech:ClassifyCommodity # 格式为 {serviceName}:{apiName},参见文末的 API 列表
        ...
        retry: # 捕获错误后重试
          - errors:
            - goodstech.InternalError.Busy
            intervalSeconds: 10
            maxAttempts: 2
            multiplier: 2
        catch: # 捕获错误后跳转
          - errors:
            - goodstech.CommonError
            - goodstech.IllegalUrlParameter
            - goodstech.InvalidParameter
            goto: xxxxx
    其中,InternalError.Busy 是原始服务错误码,如需在流程中捕获该错误码,请添加服务前缀 goodstech.

示例:编排视觉智能图片识别 API

本示例将以视觉智能 API 图片识别为例。识别图片中的商品种类,API 详情请参见 商品分类

version: v1
type: flow
steps:
  - type: task
    name: APIClassifyCommodity
    action: goodstech:ClassifyCommodity # 格式为 {serviceName}:{apiName},参见文末的 API 列表
    inputMappings: # 对变量进行输入映射,用于 ClassifyCommodity 参数
      - target: image
        source: $input.imageURL
    outputMappings: # 映射输出到本地变量
      - target: classifyCommodity_Categories
        source: $local.Data.Categories
    serviceParams: # 描述 ClassifyCommodity 所需参数,参数列表请参见 API 说明
      ImageURL: $.image
    retry: # 捕获错误后重试
      - errors:
        - goodstech.InternalError.Busy
        intervalSeconds: 10
        maxAttempts: 2
        multiplier: 2
    catch: # 捕获错误后跳转
      - errors:
        - goodstech.CommonError
        - goodstech.IllegalUrlParameter
        - goodstech.InvalidParameter
        goto: ExecFailed
  - type: foreach # 根据 ClassifyCommodity 返回参数说明,该接口会返回一个数组。这类数据建议在后续的流程中使用 foreach 步骤进行处理
    name: ElemDealt
    iterationMapping:
      collection: $.classifyCommodity_Categories
      item: catagory
    steps:
      - type: pass
        name: pass1
        inputMappings:
          # the index can be from context
          - target: index
            source: $context.step.iterationIndex
          - target: catagory
            source: $input.catagory
    end: true
  - type: fail
    name: ExecFailed
Serverless 工作流创建该流程。请以下述输入作为流程输入,启动流程。
{
    # 待处理的图片地址
    "imageURL": "https://viapi-demo.oss-cn-shanghai.aliyuncs.com/viapi-demo/images/DetectImageElements/detect-elements-src.png"
}

已支持的视觉智能服务及 API 列表

服务名称 API 名称 API 功能说明
facebody

开通人体人脸服务

DetectFace 识别图像中是否有人脸并给出人脸区域,进行人脸检测后返回检测到的人脸矩形框坐标。可支持最多上千个人脸的同时检测,支持平面 360 度旋转人脸检测,支持左右最大 90 度侧面人脸检测。同时毫秒级提取图像中的人脸五官关键点,识别人脸 105 个关键点定位。
RecognizeExpression 识别图片人脸表情。
RecognizeFace 在人脸检测基础上,识别各个检测人脸的性别(男/女)、年龄、表情(笑/不笑)、眼镜(戴/不戴)四种属性。返回人脸的 1024 维深度学习特征,基于这个特征并按照特征比较规则,用户可实现高性能的人脸识别。我们的算法在公开测试集 lfw 上达到了 99.58% 的识别精度。
CompareFace 基于用户输入的两张图片,可检测两张图片中的人脸,并挑选两张图片的最大人脸进行比较,判断是否是同一人。同时返回这两个人脸的矩形框坐标、比对的置信度,以及不同误识率的置信度阈值。
detectmask 识别输入图片中占比最大的人脸是否有戴口罩。
DetectBodyCount 识别并统计图片中人物人体的数量,主要适用于室内场景。
CreateFaceDb 创建人脸数据库。
ListFaceDbs 查看人脸数据库列表。
AddFaceEntity 向人脸数据库中添加人脸样本数据。
GetFaceEntity 查询人脸数据库中的人脸样本数据。
ListFaceEntities 查询人脸数据库中的人脸样本列表。
UpdateFaceEntity 更新人脸数据库中的人脸样本数据。
AddFace 为指定数据库添加人脸数据。
SearchFace 根据输入图片,可以在数据库中搜索相似的人脸图片数据。
DeleteFace 删除指定数据库中的人脸图片信息。
DeleteFaceEntity 删除人脸数据库中的人脸样本数据。
DeleteFaceDb 删除指定的人脸数据库。
BodyPosture 获取人体的 18 个关键点信息。
HandPosture 获取手势的 21 个关键点信息。
DetectPedestrian 检测图像中的人体。
EnhanceFace 对输入图像中的人脸进行裁剪、对齐、细节增强,最后再融合回原图。
FaceBeauty 对图像中的人脸进行美颜,包括磨皮、美白、去除黑眼圈、法令纹等。
FaceMakeup 模拟彩妆,通过添加口红、高光、整妆等彩妆素材,进一步提升人脸美化效果。
FaceTidyup 对人脸的轮廓和五官进行调整。 您也可以通过手动调整美型强度,进一步对人脸进行精细化调整。
FaceFilter 对图片的整体风格进行转变。
ocr

开通文字识别服务

RecognizeIdentityCard 自动定位身份证图片区域,识别身份证上的相关信息。
RecognizeBankCard 自动定位银行卡图片区域,识别银行卡号等相关信息。
RecognizeBusinessCard 自动从图片中定位名片图片,识别名片上的相关信息。
RecognizeAccountPage 自动定位户口个人页面图片区域,识别户口个人页的相关信息。
RecognizeDrivingLicense 自动定位行驶证图片区域,识别行驶证上的相关信息,支持新能源车辆的相关信息识别。
RecognizeDriverLicense 自动从图片中定位驾驶证图片,识别驾驶证上的相关信息。
RecognizeLicensePlate 自动定位车牌区域,识别车牌内容等信息,支持新能源车牌识别。
RecognizeVINCode 自动定位 VIN 码区域,识别 VIN 码区域内容。
RecognizeTaxiInvoice 自动定位出租车发票区域,识别出租车发票上的相关信息。
RecognizeTrainTicket 自动定位火车票区域,识别出火车票上的相关信息。
RecognizeBusinessLicense 自动定位营业执照区域,识别营业执照上的相关信息。
RecognizeStamp 自动定位图片里公章的位置,识别公章中的机关、团体、企事业单位名称。
RecognizeVATInvoice 识别增值税发票(电子发票和纸质发票)上的内容。
RecognizeCharacter 多场景图片文字识别并返回坐标信息。
GetAsyncJobResult 异步接口调用 API 接口后,返回的并不是真正的请求结果,您需要保存返回结果中的 RequestId,然后调用 GetAsyncJobResult 来获取真正的请求结果。
TrimDocument 对输入文档内容进行解析,输出结构化样式(HTML 或者 JSON)。
RecognizeChinapassport 识别中国护照关键字段内容,包括:中文姓名(带拼音)、护照号码、护照人身份 ID、性别、英文姓名、出生日期、出生地(带拼音)、国籍、发证日期、结束日期、发证地址(带拼音)、MRZ 码第一行、MRZ 码第二行、护照类型。
RecognizeVerificationcode 别图像中验证码,输出验证码中的字母和数字。
RecognizeTakeoutOrder 识别外卖单上的关键字段内容,输出商店名称、电话、包装费、配送费、商品合计、其他费用合计、顾客优惠合计、总件数、在线支付、订单编号、下单时间等。目前支持饿了么外卖单。
RecognizePassportMRZ 可以检测输入的护照 MRZ 图像,输出 11 个信息,包括:类型、国家码、护照号、姓名、国籍、生日、性别、开始日期、结束日期、机器校验码 1、机器校验码 2,方便后续信息提取和证件审核。
goodstech

开通商品理解服务

ClassifyCommodity 识别图像中的商品分类,返回商品类目、置信度等信息,目前已经支持服饰鞋包、3C 数码、家居用品等超过 1 万种类目分类。
RecognizeFurnitureAttribute 识别输入的家居模型图的风格,目前支持 16 种风格识别。
RecognizeFurnitureSpu 对输入的家居模型图进行分类,目前类别数可达 70 类。
imagerecog

开通图像识别服务

RecognizeImageColor 可以对输入图的颜色信息进行分析,给出颜色值(RGB 形式和 HEX 格式)与对应的占比信息。
TaggingImage 识别图像中的主体内容并打上类型标签,支持数千个内容标签,覆盖常见物体品类。
RecognizeScene 识别图像所处的场景环境,支持数十种常见场景,如天空、草地等。
DetectImageElements 用于识别输入图中所包含的元素,用矩形框标注出其位置,并区分其对应的基本类型(人物、修饰、文案)。
RecognizeImageStyle 对输入图的风格类型进行分析,识别可能的风格与语意标签。
ClassifyingRubbish 对图片中的物品垃圾进行分类,并给出具体的物品名称。
RecognizeVehicleType 识别图片(完整或部件图片)中汽车的类型,目前主要有小轿车、多用途汽车、SUV 等类别。
imageseg

开通图像分割服务

SegmentHead 识别输入图像中的人头轮廓,含人脸、头发耳朵、发饰区域,不含脖子,返回仅人头区域可视的透明图(4 通道),适用于单人场景,多人场景。人像比较明显的图片输入效果会更好。
SegmentFace 识别输入图像中的人脸轮廓,不含脖子、耳朵头发,返回仅人脸区域可视的透明图(4 通道),适用于单人、多人场景,人脸比较明显的图片输入效果会更好。
SegmentHair 识别输入图像中的头发轮廓,不含脖子、耳朵头发,返回仅人脸区域可视的透明图(4 通道),适用于单人、多人场景,人脸比较明显的图片输入效果会更好。
ParseFace 识别输入图像中的五官轮廓,对眼睛、鼻子、嘴进行像素级语义分割,人脸比较明显的图片输入效果会更好。
SegmentVehicle 识别输入图像中的汽车轮廓,对汽车进行像素分割,输出结果为透明图。
SegmentCommodity 用于识别输入图像中的商品轮廓,与背景进行分离,返回分割后的前景商品图(4 通道),适用于单商品、多商品、复杂背景等场景。
SegmentBody 用于识别输入图像中的人体轮廓,与背景进行分离,返回分割后的前景人像图(4 通道),适用于单人、多人、复杂背景、各类人体姿态等场景。
SegmentCommonImage 识别输入图像中的视觉中心物体轮廓,与背景进行分离,返回分割后的前景物体图(4 通道)。
SegmentFurniture 对输入图片中的家具进行像素级抠图。
RefineMask 对输入图像与粗糙 mask 进行精细化处理,输出精细化 mask。
imageenhan

开通图像增强服务

ChangeImageSize 改变图片大小。
IntelligentComposition 输入一张的图像,通过美学评估,智能输出几个 bounding box,根据这些 bounding box 可以将原图裁剪成构图更好的图像。
ExtendImageStyle 将输入图按照指定的风格图像进行风格的迁移,使得图像的色彩、笔触等视觉风格发生转化。
MakeSuperResolutionImage 可以将输入图放大四倍,同时基于推断出的细节保持结果图像的清晰度。
RecolorImage 将输入图自动或根据指定色板进行色彩转换,同时保证视觉热点区域避免不正常拓色。
RemoveImageSubtitles 擦除图片中的标准字幕。
RemoveImageWatermark 擦除图片中的常见标志,如台标、互联网平台 Logo 标志等。
ImageBlindCharacterWatermark 为图片添加或者解析指定文字水印。
ImageBlindPicWatermark 为图片添加或解析图片水印。
objectdet

开通目标检测服务

RecognizeVehicleParts 对输入的车险图片进行分类。
RecognizeVehicleParts 检测图片中车辆部件的位置以及名称。
DetectVehicle 检测图像中的机动车主体,返回该机动车主体的区域位置,坐标信息。
DetectMainBody 输入抠图后的图片检测,输出主体定位信息。
RecognizeVehicleDashboard 识别仪表盘上故障灯等信息。
RecognizeVehicleDamage 检测图片中车辆损伤的位置以及类型。
DetectTransparentImage 检测图片背景是否为透明图。
DetectObject 检测输入图像中的物体。
DetectWhiteBaseImage 检测图片背景是否为白底图。