PAI多媒體分析支援通過Python SDK調用各項演算法服務。本文為您介紹多媒體分析Python SDK的介面詳情以及使用Python SDK調用演算法服務和查詢結果的樣本。
步驟一:安裝Python SDK
環境依賴Python 3及其以上版本,安裝命令如下。
pip install ai-service-python-sdk==1.1.5步驟二:初始化Client
使用以下命令,進行環境初始化。
from ai_service_python_sdk.client.api_client import ApiClient
client = ApiClient('<HOST>', '<YOUR-APPID>', '<YOUR-TOKEN>')您需要根據實際情況,替換以下參數值。
參數 | 描述 |
<HOST> | 服務端地址: |
<YOUR-APPID> | 開通多媒體分析服務後,您可以直接在多媒體分析頁面查看AppId。 |
<YOUR-TOKEN> | 開通多媒體分析服務後,您可以直接在多媒體分析頁面查看TOKEN。 |
使用樣本
映像品質評分
提供映像品質評估能力,返回[0,100]的浮點數分值,請求程式碼範例如下。
from ai_service_python_sdk.client.api.ai_service_image_api import AiServiceImageApi
# 請求圖片URL。
image_url = 'https://your_image_url.jpg'
ai_service_api = AiServiceImageApi(client)
# 定製模型名稱。
model_name = ''
# 模型返回配置,該模型沒有返回配置參數,傳入空字典即可。
configure = {}
# 請求服務。
response = ai_service_api.image_qa(image_url, model_name, configure)
# 請求流水號。
request_id = response.request_id
# 請求狀態。
code = response.code
# 請求狀態具體資訊。
message = response.message
# 模型傳回值。
data = response.data
# 列印返回結果。
print(response)
參數說明如下。
參數 | 類型 | 是否必選 | 描述 |
image_url | STRING | 是 | 圖片URL,建議圖片大小不大於5 MB,解析度不低於240 * 240。 |
model_name | STRING | 是 | 預設輸入Null 字元串,表示調用通用模型。 如果通用模型不能滿足您的業務需求,您可以聯絡您的商務經理,為您提供定製模型。傳入定製模型名稱,即可調用定製的模型結果。 |
configure | Dict | 是 | 模型返回配置,該模型服務輸入空字典即可。 |
返回結果樣本如下。
{
"code":"OK",
"data":{
"image_height":214,
"image_width":398,
"iqa_result":66.88
},
"message":"success",
"request_id":"1d4572a1-2800-4213-9e9c-33f9fa7e****"
}返回欄位說明如下。
參數 | 描述 |
request_id | 請求流水號,STRING類型。 |
code | 請求狀態代碼,STRING類型。 |
message | 請求狀態具體資訊,STRING類型。返回樣本如下:
更多請求狀態,詳情請參見返回錯誤碼說明。 |
data | 模型返回內容,Dict類型。內部參數說明如下:
|
人臉屬性分析
提供人臉相關屬性的輸出,包括臉型、發色、髮型、顏值等資訊。請求程式碼範例如下。
from ai_service_python_sdk.client.api.ai_service_image_api import AiServiceImageApi
# 請求圖片URL。
image_url = 'https://your_image_url.jpg'
ai_service_api = AiServiceImageApi(client)
# 定製模型名稱。
model_name = ''
# 模型返回配置,該模型沒有返回配置參數,傳入空字典即可。
configure = {}
# 請求服務。
response = ai_service_api.face_attr_image(image_url, model_name, configure)
# 請求流水號。
request_id = response.request_id
# 請求狀態。
code = response.code
# 請求狀態具體資訊。
message = response.message
# 模型傳回值。
data = response.data
# 列印返回結果。
print(response)
參數說明如下。
參數 | 類型 | 是否必選 | 描述 |
image_url | STRING | 是 | 圖片URL。映像中人臉地區大小需大於100 * 100像素。 |
model_name | STRING | 是 | 預設輸入Null 字元串,表示調用通用模型。 如果通用模型不能滿足您的業務需求,您可以聯絡您的商務經理,為您提供定製模型。傳入定製模型名稱,即可調用定製的模型結果。 |
configure | Dict | 是 | 模型返回配置,該模型服務輸入空字典即可。 |
返回結果如下。
{'code': 'OK',
'data': {'attr': [{'FaceShape': {'三角臉': 0.0013,
'圓臉': 0.0147,
'心形臉': 0.0405,
'方形臉': 0.0001,
'橢圓臉': 0.9266,
'菱形臉': 0.0027,
'長臉': 0.0141},
'FemaleHairStyle': {'BangsType': {'中分劉海': 0.5932,
'劉海編髮': 0.0058,
'斜劉海': 0.0575,
'無劉海': 0.3078,
'空氣劉海': 0.0143,
'齊劉海': 0.0213},
'FemaleCurlyHairType': {'雲朵卷': 0.1289,
'大波浪': 0.2526,
'小波浪': 0.084,
'氧氣卷': 0.2027,
'空氣卷': 0.1434,
'羊毛卷': 0.1539,
'蛋卷': 0.0345},
'FemaleHairType': {'捲髮': 0.1941,
'盤發': 0.0112,
'直發': 0.7947},
'FemaleLongShortHair': {'中長發': 0.2807,
'短髮': 0.0346,
'長發': 0.6846},
'紮發': 0.3054,
'編髮': 0.3453},
'HairColor': {'其他顏色': 0.0001,
'咖啡色': 0,
'奶奶灰': 0,
'栗色': 0.0025,
'棕色': 0.0622,
'漸層色': 0.0004,
'酒紅色': 0.0001,
'金色': 0,
'黃色': 0,
'黑色': 0.9347},
'MaleHairStyle': {'分發': 0.9939,
'圓寸': 0,
'子彈頭': 0.0033,
'平頭': 0,
'板寸': 0.001,
'毛寸': 0.0008,
'碎發': 0,
'背頭': 0.0001,
'莫西幹': 0.0006},
'bbox': [91, 0, 430, 452],
'face_score': 3.2431,
'index': 0}]},
'message': 'success',
'request_id': '9b2f2c0e-d2c0-45f8-b922-058d00edc9ad'}返回欄位說明如下。
參數 | 描述 |
request_id | 請求流水號,STRING類型。 |
code | 請求狀態代碼,STRING類型。 |
message | 請求狀態具體資訊,STRING類型。返回樣本如下:
更多請求狀態,詳情請參見返回錯誤碼說明。 |
Data | 模型返回內容,Dict類型。具體返回參數說明,詳情請參見data內部欄位。 |
表 1. data內部欄位
參數 | 描述 |
attr | 整個映像的屬性內容,List類型。列表中的每一個元素表示一個人臉的屬性。 說明 如果列表內容為空白,表示沒有檢測到人臉。 |
FaceShape | 人臉形狀,Dict類型。 |
FemaleHairStyle | 女性髮型分類,Dict類型。 |
BangsType | 女性劉海類型,Dict類型。 |
FemaleCurlyHairType | 女性捲髮類型,Dict類型。 在FemaleHairType欄位中,捲髮對應機率最高時讀取該欄位的內容。 |
FemaleHairType | 女性髮型,Dict類型。 |
FemaleLongShortHair | 女性頭髮長短,Dict類型。 |
紮發 | 女性頭髮是否為紮發,FLOAT類型。 該值大於等於0.5時,表示頭髮是紮發。 |
編髮 | 女性頭髮是否是編髮,FLOAT類型。 該值大於等於0.5時,表示頭髮是編髮。 |
HairColor | 頭髮顏色,Dict類型。 |
MaleHairStyle | 男性髮型分類,Dict類型。 |
bbox | 人臉矩形框,LIST類型。排列為 |
index | 人臉在該圖中的編號,INT類型,從0開始遞增。 |
年齡分析
用於識別映像中主體人臉(需唯一)的年齡區間。
由於該模型屬於定製模型,您需要提供AppId給您的商務經理或相關介面人,進行後台配置後才可以調用。
請求程式碼範例如下:
from ai_service_python_sdk.client.api.ai_service_image_api import AiServiceImageApi
# 請求圖片URL
image_url = 'https://your_image_url.jpg'
ai_service_api = AiServiceImageApi(client)
# 定製模型名稱
model_name = 'fairface'
# 模型返回配置,該模型沒有返回配置參數,傳入空字典即可
configure = {}
# 請求服務
response = ai_service_api.face_attr_image(image_url, model_name, configure)
# 請求流水號
request_id = response.request_id
# 請求狀態
code = response.code
# 請求狀態具體資訊
message = response.message
# 模型傳回值
data = response.data
# 列印返回結果
print(response)參數說明如下:
參數 | 類型 | 是否必選 | 描述 |
image_url | STRING | 是 | 圖片的URL地址。圖片中的人臉地區需要大於 |
model_name | STRING | 是 | 自訂模型名稱。 |
configure | Dict | 是 | 模型返回配置。該模型服務輸入空字典即可。 |
返回結果樣本如下:
{
"request_id":"10000",
"code":"OK",
"message":"success",
"data":{
"age_range":"3-9",
"age_range_prob":0.9525
}
}參數 | 描述 |
request_id | 請求流水號,STRING類型。 |
code | 請求狀態代碼,STRING類型。 |
message | 請求狀態具體資訊,STRING類型。返回樣本如下:
|
data | 模型返回內容,Dict類型。具體返回參數說明如下:
|
映像多標籤
提供映像多標籤打標能力,支援輸出機率較高的Top K個標籤及對應機率,也支援輸出映像的高維特徵。請求程式碼範例如下。
from ai_service_python_sdk.client.api.ai_service_image_api import AiServiceImageApi
# 請求圖片URL。
image_url = 'https://your_image_url.jpg'
ai_service_api = AiServiceImageApi(client)
# 定製模型名稱。
model_name = ''
# 模型返回配置。
configure = {'tag_top_k': 5, 'output_embedding': False}
# 請求服務。
response = ai_service_api.multi_label_image_v2(image_url, model_name, configure)
# 請求流水號。
request_id = response.request_id
# 請求狀態。
code = response.code
# 請求狀態具體資訊。
message = response.message
# 模型傳回值。
data = response.data
# 列印返回結果。
print(response)
參數說明如下。
參數 | 類型 | 是否必選 | 描述 |
image_url | STRING | 是 | 圖片URL,建議圖片大小不大於5 MB,解析度不低於240 * 240。 |
model_name | STRING | 是 | 預設輸入Null 字元串,表示調用通用模型。 如果通用模型不能滿足您的業務需求,您可以聯絡阿里雲機器學習支援小組,為您提供定製模型。傳入定製模型名稱,即可調用定製的模型結果。 |
configure | Dict | 是 | 模型返回配置,預設輸入 說明 當configure為None時,configure內部參數取預設值。 |
configure內部參數
configure內部參數 | 類型 | 是否必選 | 描述 |
tag_top_k | INT | 否 | 輸出Top K個結果。取值範圍:[1,10],預設為10。 |
output_embedding | BOOL | 否 | 是否輸出圖片embedding,取值如下:
|
返回結果樣本如下。
{'code': 'OK',
'data': {'image_height': 510,
'image_width': 516,
'tag_result': [{'score': 0.505, 'tag': '笑容'},
{'score': 0.493, 'tag': '女士'},
{'score': 0.475, 'tag': '美女'},
{'score': 0.438, 'tag': '微笑'},
{'score': 0.432, 'tag': '蜜茶棕'}]},
'message': 'success',
'request_id': 'c9e5aa33-4d8d-49ce-8991-bcbb5f12e43b'}返回欄位說明如下。
參數 | 描述 |
request_id | 請求流水號,STRING類型。 |
code | 請求狀態代碼,STRING類型。 |
message | 請求狀態具體資訊,STRING類型。返回樣本如下:
更多請求狀態,詳情請參見返回錯誤碼說明。 |
data | 模型返回內容,Dict類型。具體返回參數說明,詳情請參見data內部欄位。 |
表 3. data內部欄位
參數 | 描述 |
tag_result | 標籤結果,List類型,按score(機率)降序排列。 列表長度由tag_top_k決定。 |
score | 標籤機率,FLOAT類型,精度精確到小數點後三位。 |
tag | 標籤名,STRING類型。 |
embedding_result | 512維圖片特徵,STRING類型,使用半形逗號(,)分隔。 僅當output_embedding為True時,存在該返回欄位。 |
image_height | 圖片像素高度,INT類型。 |
image_width | 圖片像素寬度,INT類型。 |
AI繪圖打標
提供AI繪圖(Stable-Diffusion)訓練使用到的映像多標籤打標能力,輸出為合成好的Caption以及相對於原標籤集合的得分,支援主流社交平台、新聞媒體、視頻網站等浮水印類型。
該模型屬於定製模型,您需要提供AppId給您的商務經理或相關介面人,進行後台配置後才可以調用。
請求樣本如下。
from ai_service_python_sdk.client.api.ai_service_image_api import AiServiceImageApi
# 請求圖片URL
image_url = 'https://your_image_url.jpg'
ai_service_api = AiServiceImageApi(client)
# 定製模型名稱
model_name = 'tagger'
# 模型返回配置
configure = {'threshold': 0.5, 'tagger_type': "SmilingWolf/wd-v1-4-convnextv2-tagger-v2"}
# 請求服務
response = ai_service_api.multi_label_image_v2(image_url, model_name, configure)
# 請求流水號
request_id = response.request_id
# 請求狀態
code = response.code
# 請求狀態具體資訊
message = response.message
# 模型傳回值
data = response.data
# 列印返回結果
print(response)參數說明如下:
參數名稱 | 參數說明 | 類型 | 是否必須 |
image_url | 圖片URL,建議大小不大於5 M,解析度不低於 240*240。 | STRING | 是 |
model_name | 模型名稱,輸入 | STRING | 是 |
configure | 模型返回配置 | Dict | 是 |
返回結果樣本如下:
{
"data": {
"caption": "sensitive, 1girl, solo, long hair, looking at viewer, smile, black hair, brown eyes, scarf, lips, realistic",
"probs": [1.1920928955078125e-07, ............, 3.5762786865234375e-07, 4.76837158203125e-07],
}
"request_id": "12***",
"code": "OK",
"message": "success"
}返回欄位 | 參數說明 | 類型 |
request_id | 請求流水號。 | STRING |
code | 請求狀態代碼。 | STRING |
message | 請求狀態具體資訊,樣本:
| STRING |
data | 模型返回內容。內部欄位說明,請參見data內部欄位說明。 | Dict |
人像身材修改
提供人像身材修改能力,上傳人像照片,根據degree參數控制人像胖身或瘦身(degree > 0代表瘦身)
該模型屬於定製模型,您需要提供AppId給您的商務經理或相關介面人,進行後台配置後才可以調用。
請求程式碼範例如下:
from ai_service_python_sdk.client.api.ai_service_image_api import AiServiceImageApi
# 請求圖片URL
image_url = 'https://your_image_url.jpg'
ai_service_api = AiServiceImageApi(client)
# 人身修改的模型名稱
model_name = 'body_reshaping'
# 大碼化需求下,degree 建議 [-2.5, -1.5]
configure = {'degree': -1.5}
# 請求服務
response = ai_service_api.multi_label_image_v2(image_url, model_name, configure)
# 請求流水號
request_id = response.request_id
# 請求狀態
code = response.code
# 請求狀態具體資訊
message = response.message
# 模型傳回值
data = response.data
# 列印返回結果
print(response)
請求參數說明:
參數名稱 | 參數說明 | 類型 | 是否必須 |
image_url | 圖片URL,建議大小不大於5 M,解析度不低於 240*240。 | STRING | 是 |
model_name | 模型名稱,填寫 | STRING | 是 |
configure | 模型返回配置 | Dict | 是 |
返回結果樣本如下:
{
"code":"OK",
"data":"imByev+I3vrryTGN****",
"message":"success",
"request_id":"1d4572a1-2800-4213-9e9c-33********"
}返回欄位說明如下:
返回欄位 | 參數說明 | 類型 |
request_id | 請求流水號。 | STRING |
code | 請求狀態代碼。 | STRING |
message | 請求狀態具體資訊,樣本:
| STRING |
data | 模型推理返回的圖片base64。 | STRING |
映像去浮水印
傳入帶浮水印的映像,返回無浮水印映像,主要針對常見視頻、社交平台等浮水印。
該模型屬於定製模型,您需要提供AppId給您的商務經理或相關介面人,進行後台配置後才可以調用。
請求程式碼範例如下:
from ai_service_python_sdk.client.api.ai_service_image_api import AiServiceImageApi
# 請求圖片URL
image_url = 'https://your_image_url.jpg'
ai_service_api = AiServiceImageApi(client)
# 定製模型名稱
model_name = 'watermark_remover'
# 傳入空字典即可
configure = {}
# 請求服務
response = ai_service_api.multi_label_image_v2(image_url, model_name, configure)
# 請求流水號
request_id = response.request_id
# 請求狀態
code = response.code
# 請求狀態具體資訊
message = response.message
# 模型傳回值
data = response.data
# 列印返回結果
print(response)請求參數說明如下。
參數名稱 | 參數說明 | 類型 | 是否必須 |
image_url | 圖片URL,建議大小不大於 5M,解析度不低於 240*240。 | STRING | 是 |
model_name | 模型名稱,填寫 | STRING | 是 |
configure | 模型返回配置 | Dict | 是 |
返回結果樣本如下:
{
"code":"OK",
"data":"imByev+I3vr****",
"message":"success",
"request_id":"1d4572a****"
}結果欄位說明:
返回欄位 | 參數說明 | 類型 |
request_id | 請求流水號。 | STRING |
code | 請求狀態代碼。 | STRING |
message | 請求狀態具體資訊,樣本:
| STRING |
data | 模型推理返回圖片的base64。 | STRING |
圖文視頻動態分類打標
為包含多模態內容的動態或文章提供分類打標服務,支援使用文本+圖片或文本+視頻的組合進行分類打標,並支援返回高維特徵Embedding。
由於該模型屬於定製模型,您需要提供AppId給您的商務經理或相關介面人,進行後台配置後才可以調用。
請求程式碼範例如下:
from ai_service_python_sdk.client.api.ai_service_video_api import AiServiceVideoApi
ai_service_api = AiServiceVideoApi(client)
# 多模態打標模型名稱
model_name = 'multi_modal_tag'
# 視頻URL,若沒有則傳入Null 字元串
video_url = 'https://YOUR_VIDEO.mp4'
# 圖片URL集,若沒有則傳入空數組
images = [
'https://YOUR_IMAGE_0.jpg',
'https://YOUR_IMAGE_1.jpg',
'https://YOUR_IMAGE_2.jpg'
]
# 常值內容
text = '常值內容'
# 模型返回配置
configure = {
'output_classification': True,
'classification_top_k': 1,
'output_tag': True,
'tag_top_k': 5,
'output_embedding': True
}
# 請求服務
response = ai_service_api.multimodal_classify(video_url, images, text, model_name, configure)
# 請求流水號
request_id = response.request_id
# 請求狀態
code = response.code
# 請求狀態具體資訊
message = response.message
# 請求返回內容
data = response.data
# job id
job_id = response.data['job_id']
# 列印返回結果
print(response)參數說明如下:
參數 | 類型 | 是否必選 | 描述 |
video_url | STRING | 是 | 視頻的URL地址,如果沒有視頻則傳入Null 字元串。 |
images | List[STRING] | 是 | 圖片的URL集合,如果沒有圖片則傳入空數組。多個圖片URL地址使用半形逗號(,)分隔。 |
text | STRING | 是 | 常值內容,使用標題與簡介進行拼接。 |
model_name | STRING | 是 | 模型名稱。 |
configure | Dict | 是 | 模型額外配置,Dict類型。內部參數說明,請參見configure內部參數。 |
返回結果樣本如下:
{'code': 'OK',
'data': {'job_id': 1134***},
'message': 'success',
'request_id': '49b0c9c2-06be-4f30-9b9f-f04baecf4577'}從上述返回結果中擷取job_id,並使用以下代碼進行結果查詢。
from ai_service_python_sdk.client.api.ai_service_job_api import AiServiceJobApi
ai_service_job_api = AiServiceJobApi(client)
# 結果查詢
result = ai_service_job_api.get_async_job(<YOUR-JOB-ID>)
# 列印返回結果
print(result)其中:<YOUR-JOB-ID>需要替換為請求服務時返回的job_id。
返回結果樣本如下:
任務執行中的返回結果樣本如下:
{'code': 'OK', 'data': {'job': {'Result': '', 'app_id': 'YOUR_APPID', 'create_time': '2023-10-18T14:32:42.619+08:00', 'id': 1134206, 'message': 'video downloading', 'state': 1}}, 'message': 'success', 'request_id': '49b0c9c2-06be-4f30-9b9f-f04baecf4577'}任務執行完成後的返回結果樣本如下:
{ 'code': 'OK', 'data': {'job': {'Result': '{"classification_result":[{"class":"旅遊","score":0.67}], "duration":15.16, "embedding_result":"0.915,0.882,0.943,0.978,1.027,1.181,1.066,1.029,0.866,0.716,0.628,1.203,0.689,0.533,0.734,1.038,0.98,0.613,0.96,0.88,0.586,0.702,1.515,0.697,0.987,0.699,1.179,4.274,0.757,0.89,0.805,0.901", "tag_result":[{"score":0.56,"tag":"有字幕"},{"score":0.456,"tag":"航拍"},{"score":0.453,"tag":"西藏"},{"score":0.437,"tag":"交通工具"},{"score":0.429,"tag":"機械"}], "video_height":918, "video_width":552}', 'app_id': '202211140827340****', 'create_time': '2023-10-18T14:32:42.619+08:00', 'id': 113****, 'message': 'success', 'model_id': 0, 'request_id': '', 'state': 2, 'type': 'Video' } }, 'message': 'success', 'request_id': '139a40ad-fdf6-45de-b760-161c52ff3f3c' }
返回欄位說明如下:
返回欄位 | 類型 | 參數說明 |
request_id | STRING | 請求流水號。 |
code | STRING | 請求狀態代碼。 |
message | STRING | 請求狀態具體資訊,可能值為:
|
data | Dict | 模型返回內容。內部欄位說明,詳情請參見data內部欄位說明。 |
視頻品質評分
提供短視頻品質評估能力,返回[0,100]的浮點品質分。支援以下兩種請求方式:
單次請求介面,請求程式碼範例如下。
from ai_service_python_sdk.client.api.ai_service_video_api import AiServiceVideoApi video_url = 'https://your_video_url.mp4' ai_service_api = AiServiceVideoApi(client) # 定製模型名稱。 model_name = '' # 視頻標題。 video_title = '' # 模型返回配置。 configure = {} # 請求服務。 response = ai_service_api.video_qa(video_url, model_name, video_title, configure) # 請求流水號。 request_id = response.request_id # 請求狀態。 code = response.code # 請求狀態具體資訊。 message = response.message # 請求返回內容。 data = response.data # job id。 job_id = response.data['job_id'] # 列印返回結果。 print(response)參數說明如下。
參數
類型
是否必選
描述
video_url
STRING
是
視頻URL,建議視頻大小不大於100 MB,解析度不低於320 * 240。
video_title
STRING
是
視頻標題,該模型不會用到標題,所以傳入Null 字元串即可。
model_name
STRING
是
預設輸入Null 字元串,表示調用通用模型。
如果通用模型不能滿足您的業務需求,您可以聯絡您的商務經理,為您提供定製模型。傳入定製模型名稱,即可調用定製的模型結果。
configure
Dict
是
模型返回配置,該模型服務輸入空字典即可。
返回結果樣本如下。
{'code': 'OK', 'data': {'job_id': 10**}, 'message': 'success', 'request_id': '228235a6-db4f-466a-b20b-a4453f81****'}從上述返回結果中擷取job_id,並使用以下代碼進行結果查詢。
from ai_service_python_sdk.client.api.ai_service_job_api import AiServiceJobApi ai_service_job_api = AiServiceJobApi(client) # 結果查詢。 result = ai_service_job_api.get_async_job(<YOUR-JOB-ID>) # 列印返回結果。 print(result)其中:<YOUR-JOB-ID>:需要替換為請求服務時返回的job_id,INT類型。
任務執行中時,返回結果樣本如下。
{'code': 'OK', 'data': {'job': {'Result': '', 'app_id': '202209070402410****', 'create_time': '2022-09-07T14:03:33.8+08:00', 'id': 1012, 'message': 'video downloading', 'state': 1}}, 'message': 'success', 'request_id': '5259ec57-e55c-4772-b01e-3deafd74****'}任務執行完成後,返回結果樣本如下。
{'code': 'OK', 'data': {'job': {'Result': '{"avg_fps":30,"duration":14,"height":1920,"single_img":0.74072265625,"video_score":20.57750291278764,"width":1080}', 'app_id': '202209290847310****', 'create_time': '2022-10-12T10:51:30.015+08:00', 'id': 1012, 'message': 'success', 'state': 2}}, 'message': 'success', 'request_id': '0b4f658f-cd96-4606-8d81-d2fe0a6d****'}
返回欄位說明如下。
參數
類型
描述
request_id
STRING
請求流水號,STRING類型。
code
STRING
請求狀態代碼,STRING類型。
message
STRING
請求狀態具體資訊,STRING類型。返回樣本如下:
successInvalid Input - video data error - load video failedInvalid Input - json format error - json parse runtime exception
更多請求狀態,詳情請參見返回錯誤碼說明。
data
Dict
模型返回內容,Dict類型。具體返回參數說明,詳情請參見data內部欄位。
表 4. data內部欄位
參數
描述
id
任務ID,即job_id,INT類型。
app_id
您的AppId,STRING類型。
state
任務狀態代碼,INT類型。取值如下:
0:任務初始化。
1:任務執行中。
2:任務完成。
3:任務失敗。
message
任務執行資訊,STRING類型。取值如下:
successvideo downloading
create_time
任務建立時間,STRING類型。
Result
模型返回結果,STRING類型。具體返回參數說明,詳情請參見Result內部欄位。
表 5. Result內部欄位
參數
描述
video_score
品質分,FLOAT類型,取值範圍為[0,100]。
avg_fps
視頻的平均幀率,INT類型。
duration
視頻時間長度,單位:秒,INT類型。
single_img
視頻裡映像間的差異度,FLOAT類型。取值範圍為[0,1]。值越小表示映像間的差異越小,越接近靜態圖產生的視頻。
height
視頻映像的高,INT類型。
width
視頻映像的寬,INT類型。
批量請求介面,請求程式碼範例如下。
from ai_service_python_sdk.client.api.ai_service_video_api import AiServiceVideoApi from ai_service_python_sdk.client.models.batch_video_request_videos import BatchVideoRequestVideos ai_service_api = AiServiceVideoApi(client) # 構建批量請求(視頻URL + 視頻標題)。 videos = [ BatchVideoRequestVideos('https://your_video_1_url.mp4', ''), BatchVideoRequestVideos('https://your_video_2_url.mp4', '') ] # 定製模型名稱。 model_name = '' # 模型返回配置。 configure = {} # 請求服務。 response = ai_service_api.batch_video_qa(videos, model_name, configure) # 請求流水號。 request_id = response.request_id # 請求狀態。 code = response.code # 請求狀態具體資訊。 message = response.message # 請求返回內容。 data = response.data # batch id。 batch_id = response.data['batch_id'] # 列印返回結果。 print(response)返回結果樣本如下。
{'code': 'OK', 'data': {'batch_id': 14}, 'message': 'success', 'request_id': '6d5ef1b5-c01f-4e63-9eec-150ddde9****'}從上述返回結果中擷取batch_id,並使用以下代碼進行結果查詢。
from ai_service_python_sdk.client.api.ai_service_job_api import AiServiceJobApi ai_service_job_api = AiServiceJobApi(client) # 結果查詢。 result = ai_service_job_api.get_batch_job_with_id(<YOUR-BATCH-ID>) # 列印返回結果。 print(result)其中:<YOUR-BATCH-ID>:需要替換為請求服務時返回的batch_id,INT類型。
查詢結果樣本如下。
{'code': 'OK', 'data': {'jobs': [{'Result': '{"avg_fps":30,"duration":14.633333333333333,"height":1280,"single_img":0.486328125,"video_score":55.3773279862801,"width":720}', 'app_id': '202209290847310****', 'batch_id': 14, 'create_time': '2022-10-26T19:44:47.501+08:00', 'id': 44**, 'message': 'success', 'object': 'https://your_video_1_url.mp4', 'state': 2}, {'Result': '{"avg_fps":30,"duration":18.2,"height":568,"single_img":0.5791015625,"video_score":67.21071975649835,"width":320}', 'app_id': '202209290847310****', 'batch_id': 14, 'create_time': '2022-10-26T19:44:47.501+08:00', 'id': 4484, 'message': 'success', 'object': 'https://your_video_2_url.mp4', 'state': 2}]}, 'message': 'success', 'request_id': 'e99697ff-7d42-4c0a-a0a0-c6a0c0ba****'}批量請求返回的data['jobs']為數組形式,具體欄位說明如下。
參數
描述
id
批量任務中的單條資料ID,INT類型。
batch_id
批量任務ID,INT類型。
app_id
您的AppId,STRING類型。
state
任務狀態代碼,INT類型,取值如下:
0:任務初始化。
1:任務執行中。
2:任務完成。
3:任務失敗。
message
任務執行資訊,STRING類型。取值如下:
successvideo downloading
create_time
任務建立時間,STRING類型。
object
請求視頻的URL,STRING類型。
Result
模型返回結果,STRING類型。
說明與單次請求介面返回的Result內部欄位相同。
視頻分類打標
提供短視頻分類打標能力,返回短視頻類別和機率較高的Top K個標籤及對應機率,也支援輸出視頻的高維特徵。支援以下兩種請求方式:
單次請求介面,請求程式碼範例如下。
from ai_service_python_sdk.client.api.ai_service_video_api import AiServiceVideoApi video_url = 'https://your_video_url.mp4' ai_service_api = AiServiceVideoApi(client) # 定製模型名稱。 model_name = '' # 視頻標題。 video_title = 'your_video_title' # 模型返回配置。 configure = { 'output_classification': True, 'classification_top_k': 1, 'output_tag': True, 'tag_top_k': 5, 'output_embedding': True } # 請求服務。 response = ai_service_api.classify_label_video(video_url, video_title, model_name, configure) # 請求流水號。 request_id = response.request_id # 請求狀態。 code = response.code # 請求狀態具體資訊。 message = response.message # 請求返回內容。 data = response.data # job id。 job_id = response.data['job_id'] # 列印返回結果。 print(response)參數說明如下。
參數
類型
是否必選
描述
video_url
STRING
是
視頻URL,建議視頻大小不大於100 MB,解析度不低於320 * 240。
video_title
STRING
是
視頻標題,如果沒有標題,可以傳入Null 字元串。
model_name
STRING
是
預設輸入Null 字元串,表示調用通用模型。
如果通用模型不能滿足您的業務需求,您可以聯絡阿里雲機器學習支援小組,為您提供定製模型。傳入定製模型名稱,即可調用定製的模型結果。
configure
Dict
是
模型返回配置,預設輸入
None。具體參數配置,詳情請參見configure內部參數。說明當configure為None時,configure內部參數取預設值。
表 6. configure內部參數
參數
類型
是否必選
描述
output_classification
BOOL
否
是否輸出視頻分類結果,取值如下:
True(預設值)
False
classification_top_k
INT
否
輸出TopK的分類結果,取值範圍為:[1,10],預設為1。
output_tag
BOOL
否
是否輸出視頻標籤結果,取值如下:
True(預設值)
False
tag_top_k
INT
否
輸出TopK的標籤結果,取值範圍為:[1,10],預設為5。
output_embedding
BOOL
否
是否輸出64維的視頻embedding,取值如下:
True(預設值)
False
返回結果樣本如下。
{'code': 'OK', 'data': {'job_id': 5}, 'message': 'success', 'request_id': '4f6caecb-e3d6-4997-89fe-26ac7536****'}從上述返回結果中擷取job_id,並使用以下代碼進行結果查詢。
from ai_service_python_sdk.client.api.ai_service_job_api import AiServiceJobApi ai_service_job_api = AiServiceJobApi(client) # 結果查詢。 result = ai_service_job_api.get_async_job(<YOUR-JOB-ID>) # 列印返回結果。 print(result)其中:<YOUR-JOB-ID>:需要替換為請求服務時返回的job_id,INT類型。
任務執行中時,返回結果樣本如下。
{'code': 'OK', 'data': {'job': {'Result': '', 'app_id': '202209070402410****', 'create_time': '2022-09-07T14:03:33.8+08:00', 'id': 5, 'message': 'video downloading', 'state': 1}}, 'message': 'success', 'request_id': '5259ec57-e55c-4772-b01e-3deafd74****'}任務執行完成後,返回結果樣本如下。
{'code': 'OK', 'data': {'job': {'Result': '{"classification_result":[ {"class":"三農","score":0.997} ], "duration":14.633333333333333, "embedding_result":"-0.162,0.483,0.881,0.686,0.319,-1.569,0.266,0.227,-1.352,1.157,-0.784,-1.016,-0.987,-1.214,-0.493,-1.182,0.85,1.473,-1.27,-3.391,3.394,-0.471,-0.434,0.256,2.146,0.787,0.348,1.67,0.229,-0.878,0.299,0.392,-2.161,-0.756,-3.438,-0.158,0.713,-5.812,-1.248,0.253,-1.111,-0.165,2.644,-2.368,-1.636,-0.533,0.468,1.2,-1.431,-1.151,-1.276,-1.954,1.167,-0.938,-0.111,-2.636,-1.248,4.662,1.892,5.485,-1.137,1.589,-1.935,1.018", "tag_result":[ {"score":0.728,"tag":"盆栽"}, {"score":0.576,"tag":"植物"}, {"score":0.539,"tag":"種植技術"}, {"score":0.466,"tag":"農業技術"}, {"score":0.458,"tag":"種植"} ], "video_height":1280, "video_width":720}\n', 'app_id': '202209070402410****', 'create_time': '2022-09-07T14:03:33.8+08:00', 'id': 5, 'message': 'success', 'state': 2}}, 'message': 'success', 'request_id': '9283066a-f414-40fd-8fd3-0f77c1ef****'}
返回欄位說明如下。
參數
描述
request_id
請求流水號,STRING類型。
code
請求狀態代碼,STRING類型。
message
請求狀態具體資訊,STRING類型。返回樣本如下:
successInvalid Input - video data error - load video failedInvalid Input - json format error - json parse runtime exception
更多請求狀態,詳情請參見返回錯誤碼說明。
data
模型返回內容,Dict類型。具體返回欄位說明,詳情請參見data['job']內部欄位。
表 7. data['job']內部欄位
參數
描述
id
任務ID,即job_id,INT類型。
app_id
您的AppId,STRING類型。
state
任務狀態代碼,INT類型,取值如下:
0:任務初始化。
1:任務執行中。
2:任務完成。
3:任務失敗。
message
任務執行資訊,STRING類型。取值如下:
successvideo downloading
create_time
任務建立時間,STRING類型。
Result
模型返回結果,STRING類型。具體返回欄位說明,詳情請參見Result內部欄位。
表 8. Result內部欄位
參數
描述
classification_result
分類結果,LIST類型,按score(機率)降序排列。
列長度由classification_top_k決定。
僅當output_classification為True時,存在該欄位。
tag_result
標籤結果,按score(機率)降序排列。
列長度由tag_top_k決定。
僅當output_tag為True時,存在該欄位。
score
標籤機率,FLOAT類型,精度精確到小數點後三位。
class
類別名,STRING類型。
tag
標籤名,STRING類型。
embedding_result
64維視頻特徵,半形逗號(,)分隔,STRING類型。
僅當output_embedding為True時,存在該欄位。
video_height
視頻像素高度,INT類型。
video_width
視頻像素寬度,INT類型。
duration
視頻時間長度,FLOAT類型。
批量請求介面,請求程式碼範例如下
from ai_service_python_sdk.client.api.ai_service_video_api import AiServiceVideoApi from ai_service_python_sdk.client.models.batch_video_request_videos import BatchVideoRequestVideos ai_service_api = AiServiceVideoApi(client) # 模型返回配置。 configure = { 'output_classification': True, 'classification_top_k': 1, 'output_tag': True, 'tag_top_k': 5, 'output_embedding': True } # 構建批量請求(視頻URL + 視頻標題)。 videos = [ BatchVideoRequestVideos('https://your_video_1_url.mp4', 'your_video_title_1'), BatchVideoRequestVideos('https://your_video_2_url.mp4', 'your_video_title_2') ] # 定製模型名稱。 model_name = '' # 請求服務。 response = ai_service_api.batch_classify_label_video(videos, model_name, configure) # 請求流水號。 request_id = response.request_id # 請求狀態。 code = response.code # 請求狀態具體資訊。 message = response.message # 請求返回內容。 data = response.data # batch id batch_id = response.data['batch_id'] # 列印返回結果。 print(response)返回結果樣本如下。
{'code': 'OK', 'data': {'batch_id': 1}, 'message': 'success', 'request_id': 'c59eb912-9df4-4afe-8129-23f7b6dc****'}從上述返回結果中擷取batch_id,並使用以下代碼進行結果查詢。
from ai_service_python_sdk.client.api.ai_service_job_api import AiServiceJobApi ai_service_job_api = AiServiceJobApi(client) # 結果查詢。 result = ai_service_job_api.get_batch_job_with_id(<YOUR-BATCH-ID>) # 列印返回結果。 print(result)其中:<YOUR-BATCH-ID>:需要替換為請求服務時返回的batch_id,INT類型。
查詢結果樣本如下。
{'code': 'OK', 'data': {'jobs': [{'Result': '{"classification_result":[{"class":"生活","score":0.998}],"duration":14.633333333333333,"embedding_result":"0.998,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.002","tag_result":[{"score":0.917,"tag":"盆栽"},{"score":0.777,"tag":"植物"},{"score":0.693,"tag":"園藝"},{"score":0.58,"tag":"幸福樹"},{"score":0.509,"tag":"有字幕"}],"video_height":1280,"video_width":720}', 'app_id': '202209290847310****', 'batch_id': 13, 'create_time': '2022-10-26T18:13:20.928+08:00', 'id': 4090, 'message': 'success', 'object': 'https://your_video_1_url.mp4', 'state': 2}, {'Result': '{"classification_result":[{"class":"體育","score":0.998}],"duration":18.2,"embedding_result":"0.0,0.0,0.0,0.998,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.001,0.0,0.0,0.0,0.0,0.001,0.0,0.0,0.0,0.0","tag_result":[{"score":0.981,"tag":"全運會"},{"score":0.901,"tag":"乒乓球"},{"score":0.798,"tag":"運動"},{"score":0.583,"tag":"有字幕"},{"score":0.498,"tag":"乒乓球比賽"}],"video_height":568,"video_width":320}', 'app_id': '202209290847310****', 'batch_id': 13, 'create_time': '2022-10-26T18:13:20.928+08:00', 'id': 4091, 'message': 'success', 'object': 'https://your_video_2_url.mp4', 'state': 2}]}, 'message': 'success', 'request_id': '73e4b48e-42b8-4347-9cb4-7a49c1f8****'}批量請求返回的data['jobs']為數組形式,具體欄位說明如下。
參數
描述
id
批量任務中的單條資料ID,INT類型。
batch_id
批量任務ID,INT類型。
app_id
您的AppId,STRING類型。
state
任務狀態代碼,INT類型,取值如下:
0:任務初始化。
1:任務執行中。
2:任務完成。
3:任務失敗。
message
任務執行資訊,STRING類型。取值如下:
successvideo downloading
create_time
任務建立時間,STRING類型。
object
請求視頻的URL,STRING類型。
Result
模型返回結果,STRING類型。
說明與單次請求介面返回的Result內部欄位相同。
返回錯誤碼說明
使用Python SDK發送服務要求,返回的錯誤碼及說明如下。
映像分析服務
請求服務錯誤。
HTTP狀態代碼 | code | message | 說明 |
400 | PARAMETER_ERROR |
| 請求圖片為空白。 |
| AppId填寫錯誤。 | ||
| image參數類型錯誤。 | ||
401 | PARAMETER_ERROR |
| TOKEN填寫錯誤。 |
404 | PARAMETER_ERROR |
| 對應模型服務未部署。 |
422 | SERVER_ERROR | 以具體報錯資訊為準。 | 模型服務報錯,具體原因,請參見message內容。 |
視頻分析服務
請求服務錯誤
HTTP狀態代碼
code
message
說明
400
PARAMETER_ERROR
not found appidAppId填寫錯誤。
401
PARAMETER_ERROR
sign errorTOKEN填寫錯誤。
404
PARAMETER_ERROR
model not found對應模型服務未部署。
結果查詢錯誤
state
message
說明
3
failed to download video, err=fetch resource failed\tcode = 404視頻URL下載失敗。
3
以具體報錯資訊為準。
模型服務報錯,具體原因見message內容。