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 | 檢測圖片背景是否為白底圖。 |
文檔內容是否對您有幫助?