集成视觉智能服务

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

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基于用户输入的两张图片,可检测两张图片中的人脸,并挑选两张图片的最大人脸进行比较,判断是否是同一人。同时返回这两个人脸的矩形框坐标、比对的置信度,以及不同误识率的置信度阈值。
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检测图片背景是否为白底图。