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

背景信息

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

前提条件

  • 获取调用服务的接口语义及所需参数。您可以通过访问视觉智能官网或参见文末已支持的视觉智能服务及API列表查看所有API信息。
  • 获取流程的roleArn具有调用该接口的相关权限,如AliyunVIAPIFullAccess。更多信息,请参见执行角色

使用方式

  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图片识别为例。识别图片中的商品种类,更多信息,请参见商品分类

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 在人脸检测基础上,实现高性能的人脸识别。我们的算法在公开测试集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 识别中国护照关键字段内容。
RecognizeTakeoutOrder 识别外卖单上的关键字段内容,输出商店名称、电话、包装费、配送费、商品合计、其他费用合计、顾客优惠合计、总件数、在线支付、订单编号、下单时间等。目前支持饿了么外卖单。
RecognizePassportMRZ 可以检测输入的护照MRZ图像,输出11个信息,方便后续信息提取和证件审核。
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

开通目标检测服务

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