Serverless 工作流目前已集成阿里云视觉智能服务,您可以通过Serverless 工作流来编排视觉智能服务的API。本文介绍集成视觉智能服务的具体操作步骤。
背景信息
您在Serverless 工作流的任务步骤指定资源类型为阿里云视觉智能服务的某个API,并提供所需参数,Serverless 工作流将在该步骤中按照定义调用对应的API,并将调用结果作为步骤的输出,以便您根据需要取对应的值来完成后续任务。如果调用过程中出现错误,您可以在流程中捕获该错误并根据错误类型实施重试或跳转等策略。前提条件
- 获取调用服务的接口语义及所需参数。您可以通过访问视觉智能官网或参见文末已支持的视觉智能服务及API列表查看所有API信息。
- 获取流程的roleArn具有调用该接口的相关权限,如AliyunVIAPIFullAccess。更多信息,请参见执行角色。
使用方式
- 在流程中定义被调用的API。您可以在任务步骤中调用视觉智能的API。在任务步骤中,按照以下示例指定Action参数替代resourceArn参数。
action: {serviceName}:{apiName}
{serviceName}
:服务名称,更多信息,请参见已支持的视觉智能服务及API列表。{apiName}
:调用的API名称,更多信息,请参见已支持的视觉智能服务及API列表。
- 指定调用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的参数。
- 错误处理。当调用API失败时,Serverless 工作流将返回error和cause两个key作为本步骤的output输出,您可以通过error来捕获错误类型进行相应的跳转等逻辑。Serverless 工作流将对服务返回的原始错误码添加{serviceName}.前缀作为捕获标识。以
goodstech:ClassifyCommodity
的错误码为例。更多信息,请参见错误码说明。
其中,InternalError.Busy是原始服务错误码,如需在流程中捕获该错误码,请添加服务前缀goodstech.。... 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
示例:编排视觉智能图片识别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 | 检测图片背景是否为白底图。 |
文档内容是否对您有帮助?