Platform for AI(PAI)が提供する Python 向けマルチメディア分析 SDK を使用して、さまざまなアルゴリズムを搭載したサービスを呼び出すことができます。このトピックでは、Python 向けマルチメディア分析 SDK を使用してさまざまなモデルサービスを呼び出す方法について説明します。また、リクエストとレスポンスの例も示します。
ステップ 1:Python 向けマルチメディア分析 SDK をインストールする
環境は Python 3 以降に依存します。次のコマンドを実行して、Python 向けマルチメディア分析 SDK をインストールします。
pip install ai-service-python-sdk==1.1.5ステップ 2:クライアントを初期化する
次のコマンドを実行して、環境を初期化します。
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)
# リクエストの ID。
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 | はい | デフォルトでは、汎用モデルを呼び出すために空の文字列が指定されています。 汎用モデルがビジネス要件を満たせない場合は、アカウントマネージャーに連絡してカスタムモデルを入手してください。カスタムモデルの名前を指定して、カスタムモデルを呼び出すことができます。 |
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 | リクエスト 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)
# リクエストの ID。
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 | はい | デフォルトでは、汎用モデルを呼び出すために空の文字列が指定されています。 汎用モデルがビジネス要件を満たせない場合は、アカウントマネージャーに連絡してカスタムモデルを入手してください。カスタムモデルの名前を指定して、カスタムモデルを呼び出すことができます。 |
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 | リクエスト ID。STRING 型です。 |
code | リクエストステータスコード。STRING 型です。 |
message | リクエストに関する詳細なステータス情報。STRING 型です。出力例:
詳細については、「エラーコード」をご参照ください。 |
Data | モデルサービスから返されたコンテンツ。DICT 型です。レスポンスパラメーターの詳細については、「データパラメーター」をご参照ください。 |
表 1. データパラメーター
パラメーター | 説明 |
attr | 画像の属性コンテンツ。LIST 型です。リストの各要素は、1 つの顔属性を示します。 説明 リストが空の場合、顔は検出されません。 |
FaceShape | 顔の形。DICT 型です。 |
FemaleHairStyle | 女性の髪型。DICT 型です。 |
BangsType | 女性の刘海のタイプ。DICT 型です。 |
FemaleCurlyHairType | 女性の髪の毛のカールタイプ。DICT 型です。 FemaleHairType パラメーターが巻き毛の髪型に設定されている可能性が最も高い場合は、このパラメーターの値が読み取られます。 |
FemaleHairType | 女性の髪質。DICT 型です。 |
FemaleLongShortHair | 女性の髪の毛の長さ。DICT 型です。 |
Tied hair | 女性の髪が結ばれているかどうかを指定します。値は FLOAT 型です。 このパラメーターの値が 0.5 以上の場合、髪は結ばれています。 |
Braided hair | 女性の髪が編まれているかどうかを指定します。値は FLOAT 型です。 このパラメーターの値が 0.5 以上の場合、髪は編まれています。 |
HairColor | 髪の色。DICT 型です。 |
MaleHairStyle | 男性の髪型。DICT 型です。 |
bbox | 顔が含まれる四角形のセクション。LIST 型です。値は |
index | 画像内の顔の ID。値は 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)
# リクエストの ID。
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 | リクエスト ID。STRING 型です。 |
code | リクエストステータスコード。STRING 型です。 |
message | リクエストに関する詳細なステータス情報。STRING 型です。出力例:
|
data | モデルサービスから返されたコンテンツ。DICT 型です。レスポンスパラメーター。
|
複数画像ラベル
画像に複数のラベルを追加できます。モデルサービスは、確率が最も高い上位 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)
# リクエストの ID。
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 | はい | デフォルトでは、汎用モデルを呼び出すために空の文字列が指定されています。 汎用モデルが要件を満たせない場合は、PAI のテクニカルサポートに連絡してカスタムモデルを入手できます。カスタムモデルの名前を指定して、カスタムモデルを呼び出すことができます。 |
configure | Dict | はい | モデルのレスポンス設定。デフォルト値は 説明 configure が None に設定されている場合、configure リストのパラメーターはデフォルト設定を使用します。 |
パラメーターの構成
パラメーター | タイプ | 必須 | 説明 |
tag_top_k | INT | いいえ | 上位 K 個のラベル。K の有効値:1 ~ 10。デフォルト値:10。 |
output_embedding | BOOL | いいえ | 画像の埋め込みを返すかどうかを指定します。有効値:
|
出力例。技術的な理由により、一部のパラメーターには翻訳されていない中国語のテキストが含まれていることに注意してください。
{'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 | リクエスト ID。STRING 型です。 |
code | リクエストステータスコード。STRING 型です。 |
message | リクエストに関する詳細なステータス情報。STRING 型です。出力例:
詳細については、「エラーコード」をご参照ください。 |
data | モデルサービスから返されたコンテンツ。DICT 型です。レスポンスパラメーターの詳細については、「データパラメーター」をご参照ください。 |
表 3. データパラメーター
パラメーター | 説明 |
tag_result | ラベル付け結果。LIST 型です。ラベルは、スコア(確率)の降順にソートされます。 リストの長さは、tag_top_k の値によって異なります。 |
score | ラベルの確率。FLOAT 型です。値は小数点以下 3 桁までです。 |
tag | ラベルの名前。STRING 型です。 |
embedding_result | 画像の 512 次元特徴。STRING 型です。特徴はコンマ(,)で区切られます。 このパラメーターは、output_embedding が True に設定されている場合にのみ返されます。 |
image_height | 画像の高さをピクセル単位で指定します。データ型は INT 型です。 |
image_width | 画像の幅(ピクセル単位)。INT 型です。 |
AI 絵画のラベル付け
Stable Diffusion モデルによって生成されたさまざまな種類の画像に複数のラベルを追加して、画像生成のトレーニングパフォーマンスを向上させることができます。出力は、合成されたキャプションと、元のラベルセットに関連するスコアです。
このモデルはカスタムモデルです。モデルを使用する場合は、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)
# リクエストの ID。
request_id = response.request_id
# リクエストのステータス。
code = response.code
# リクエストに関する詳細なステータス情報。
message = response.message
# 戻り値。
data = response.data
# 戻り値を表示します。
print(response)次の表に、主要なパラメーターを示します。
パラメーター | 説明 | タイプ | 必須 |
image_url | 画像の URL。画像のサイズは 5 MB 以下、解像度は 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 | リクエストの ID。 | STRING |
code | リクエストステータスコード。 | STRING |
message | リクエストに関する詳細なステータス情報。例:
| STRING |
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)
# リクエストの ID。
request_id = response.request_id
# リクエストのステータス。
code = response.code
# リクエストに関する詳細なステータス情報。
message = response.message
# 戻り値。
data = response.data
# 戻り値を表示します。
print(response)
次の表に、リクエストパラメーターを示します。
パラメーター | 説明 | タイプ | 必須 |
image_url | 画像の URL。画像のサイズは 5 MB 以下、解像度は 240 × 240 以上にすることをお勧めします。 | STRING | はい |
model_name | モデルの名前。値を | STRING | はい |
configure | モデルのレスポンス設定。デフォルトは | Dict | はい |
レスポンス例:
{
"code":"OK",
"data":"imByev+I3vrryTGN****",
"message":"success",
"request_id":"1d4572a1-2800-4213-9e9c-33********"
}次の表に、レスポンスパラメーターを示します。
パラメーター | 説明 | タイプ |
request_id | リクエストの 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)
# リクエストの ID。
request_id = response.request_id
# リクエストのステータス。
code = response.code
# リクエストに関する詳細なステータス情報。
message = response.message
# 戻り値。
data = response.data
# 戻り値を表示します。
print(response)次の表に、パラメーターを示します。
パラメーター | 説明 | タイプ | 必須 |
image_url | 画像の URL。画像のサイズは 5 MB 以下、解像度は 240 × 240 以上にすることをお勧めします。 | STRING | はい |
model_name | モデルの名前。値を | STRING | はい |
configure | モデルのレスポンス設定。デフォルトは | Dict | はい |
レスポンス例:
{
"code":"OK",
"data":"imByev+I3vr****",
"message":"success",
"request_id":"1d4572a****"
}次の表に、返されるパラメーターを示します。
パラメーター | 説明 | タイプ |
request_id | リクエストの ID。 | STRING |
code | リクエストステータスコード。 | STRING |
message | リクエストに関する詳細なステータス情報。例:
| STRING |
data | モデルサービスから返された Base64 エンコードされた画像。 | STRING |
投稿の分類とラベル付け
マルチモーダルコンテンツを含む投稿にラベルを付けることができます。たとえば、テキストと画像、またはテキストと動画で構成されるコンテンツを分類およびラベル付けして、ラベル付けの精度を高めることができます。モデルサービスは、高次元特徴の埋め込み結果も返します。
このモデルはカスタムモデルです。モデルを使用する場合は、アカウントマネージャーに連絡して 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。動画の URL がない場合は、空の文字列を指定します。
video_url = 'https://YOUR_VIDEO.mp4'
# 画像の URL。画像の URL がない場合は、空の配列を指定します。
images = [
'https://YOUR_IMAGE_0.jpg',
'https://YOUR_IMAGE_1.jpg',
'https://YOUR_IMAGE_2.jpg'
]
# テキストコンテンツ。
text ='Text content'
# モデルのレスポンス設定。
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)
# リクエストの ID。
request_id = response.request_id
# リクエストのステータス。
code = response.code
# リクエストに関する詳細なステータス情報。
message = response.message
# リクエストから返されたコンテンツ。
data = response.data
# タスク ID
job_id = response.data['job_id']
# 戻り値を表示します。
print(response)次の表に、主要なパラメーターを示します。
パラメーター | タイプ | 必須 | 説明 |
video_url | STRING | はい | 動画の URL。動画の URL がない場合は、空の文字列を指定します。 |
images | List[STRING] | はい | 画像の URL。画像の URL がない場合は、空の配列を指定します。複数の画像の URL はコンマ(,)で区切ります。 |
text | STRING | はい | テキストコンテンツ。タイトルと概要で構成されます。 |
model_name | STRING | はい | 使用するモデルの名前。 |
configure | Dict | はい | モデルの追加構成。DICT 型です。詳細については、「パラメーターの構成」をご参照ください。 |
レスポンス例:
{'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 | リクエストの ID。 |
code | STRING | リクエストステータスコード。 |
message | STRING | リクエストに関する詳細なステータス情報。使用可能な値:
|
data | Dict | モデルサービスから返されたコンテンツ。詳細については、「データパラメーター」をご参照ください。 |
動画品質評価
動画の品質を評価できます。モデルサービスは、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) # リクエストの ID。 request_id = response.request_id # リクエストのステータス。 code = response.code # リクエストに関する詳細なステータス情報。 message = response.message # モデルサービスから返されたコンテンツ。 data = response.data # タスクの ID。 job_id = response.data['job_id'] # 戻り値を表示します。 print(response)次の表に、上記の文のパラメーターを示します。
パラメーター
タイプ
必須
説明
video_url
STRING
はい
動画の URL。動画のサイズは 100 MB 以下、解像度は 320 × 240 以上にすることをお勧めします。
video_title
STRING
はい
動画のタイトル。モデルサービスでは動画のタイトルを指定する必要がないため、空の文字列を指定します。
model_name
STRING
はい
デフォルトでは、汎用モデルを呼び出すために空の文字列が指定されています。
汎用モデルがビジネス要件を満たせない場合は、アカウントマネージャーに連絡してカスタムモデルを入手してください。カスタムモデルの名前を指定して、カスタムモデルを呼び出すことができます。
configure
Dict
はい
モデルのレスポンス設定。モデルサービスには空の辞書を指定します。
出力例:
{'code': 'OK', 'data': {'job_id': 10**}, 'message': 'success', 'request_id': '228235a6-db4f-466a-b20b-a4453f81****'}上記の返されたレスポンスから job_id を取得し、次のコードでタスク 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
リクエスト ID。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 型です。レスポンスパラメーターの詳細については、「データパラメーター」をご参照ください。
表 4. データパラメーター
パラメーター
説明
id
タスクの ID(job_id)。INT 型です。
app_id
AppId。INT 型です。
state
タスクのステータスコード。INT 型です。有効値:
0: タスクは初期化中です。
1: タスクは実行中です。
2: タスクは完了しました。
3: タスクは失敗しました。
message
タスクの実行情報。STRING 型です。有効値:
successvideo downloading
create_time
タスクが作成された時刻。STRING 型です。
Result
モデルサービスから返された結果。STRING 型です。詳細については、「結果パラメーター」をご参照ください。
表 5. 結果パラメーター
パラメーター
説明
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) # リクエストの ID。 request_id = response.request_id # リクエストのステータス。 code = response.code # リクエストに関する詳細なステータス情報。 message = response.message # モデルサービスから返されたコンテンツ。 data = response.data # バッチタスクの 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 を取得し、次のコードでバッチ 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。INT 型です。
state
タスクのステータスコード。INT 型です。有効値:
0: タスクは初期化中です。
1: タスクは実行中です。
2: タスクは完了しました。
3: タスクは失敗しました。
message
タスクの実行情報。STRING 型です。有効値:
successvideo downloading
create_time
タスクが作成された時刻。STRING 型です。
object
動画の URL。STRING 型です。
Result
モデルサービスから返された結果。STRING 型です。
説明Result パラメーターは、単一の動画の品質を評価するために使用されるモデルサービスから返される Result パラメーターと同じです。
ラベルによる動画分類
動画にラベルを追加することで、短い動画を分類できます。モードサービスは、動画のクラス、確率が最も高い上位 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) # リクエストの ID。 request_id = response.request_id # リクエストのステータス。 code = response.code # リクエストに関する詳細なステータス情報。 message = response.message # モデルサービスから返されたコンテンツ。 data = response.data # タスクの ID。 job_id = response.data['job_id'] # 戻り値を表示します。 print(response)次の表に、上記の文のパラメーターを示します。
パラメーター
タイプ
必須
説明
video_url
STRING
はい
動画の URL。動画のサイズは 100 MB 以下、解像度は 320 × 240 以上にすることをお勧めします。
video_title
STRING
はい
動画のタイトル。動画にタイトルがない場合は、空の文字列を指定します。
model_name
STRING
はい
デフォルトでは、汎用モデルを呼び出すために空の文字列が指定されています。
汎用モデルが要件を満たせない場合は、PAI のテクニカルサポートに連絡してカスタムモデルを入手できます。カスタムモデルの名前を指定して、カスタムモデルを呼び出すことができます。
configure
Dict
はい
モデルのレスポンス設定。デフォルト値は
Noneです。詳細については、「パラメーターの構成」をご参照ください。説明configure が None に設定されている場合、configure リストのパラメーターはデフォルト設定を使用します。
表 6. パラメーターの構成
パラメーター
タイプ
必須
説明
output_classification
BOOL
いいえ
動画の分類結果を返すかどうかを指定します。有効値:
True(デフォルト)
False
classification_top_k
INT
いいえ
動画の上位 K 個のクラス。K の有効値:1 ~ 10。デフォルト値:1。
output_tag
BOOL
いいえ
動画のラベルを返すかどうかを指定します。有効値:
True(デフォルト)
False
tag_top_k
INT
いいえ
動画の上位 K 個のラベル。K の有効値:1 ~ 10。デフォルト値:5。
output_embedding
BOOL
いいえ
64 次元の動画の埋め込みを返すかどうかを指定します。有効値:
True(デフォルト)
False
出力例:
{'code': 'OK', 'data': {'job_id': 5}, 'message': 'success', 'request_id': '4f6caecb-e3d6-4997-89fe-26ac7536****'}上記の返されたレスポンスから job_id を取得し、次のコードでタスク 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
リクエスト ID。STRING 型です。
code
リクエストステータスコード。STRING 型です。
message
リクエストに関する詳細なステータス情報。STRING 型です。出力例:
successInvalid Input - video data error - load video failedInvalid Input - json format error - json parse runtime exception
詳細については、「エラーコード」をご参照ください。
data
モデルサービスから返されたコンテンツ。DICT 型です。詳細については、「データ ['job'] パラメーター」をご参照ください。
表 7. データ ['job'] パラメーター
パラメーター
説明
id
タスクの ID(job_id)。INT 型です。
app_id
AppId。INT 型です。
state
タスクのステータスコード。INT 型です。有効値:
0: タスクは初期化中です。
1: タスクは実行中です。
2: タスクは完了しました。
3: タスクは失敗しました。
message
タスクの実行情報。STRING 型です。有効値:
successvideo downloading
create_time
タスクが作成された時刻。STRING 型です。
Result
モデルサービスから返された結果。STRING 型です。詳細については、「結果パラメーター」をご参照ください。
表 8. 結果パラメーター
パラメーター
説明
classification_result
分類結果。LIST 型です。クラスは、スコア(確率)の降順にソートされます。
リストの長さは、classification_top_k によって異なります。
このパラメーターは、output_classification が True に設定されている場合にのみ返されます。
tag_result
動画のラベル。スコア(確率)の降順にソートされます。
リストの長さは、tag_top_k によって異なります。
このパラメーターは、output_tag が True に設定されている場合にのみ返されます。
score
ラベルの確率。FLOAT 型です。値は小数点以下 3 桁までです。
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) # リクエストの ID。 request_id = response.request_id # リクエストのステータス。 code = response.code # リクエストに関する詳細なステータス情報。 message = response.message # モデルサービスから返されたコンテンツ。 data = response.data # バッチ 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 を取得し、次のコードでバッチ 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。INT 型です。
state
タスクのステータスコード。INT 型です。有効値:
0: タスクは初期化中です。
1: タスクは実行中です。
2: タスクは完了しました。
3: タスクは失敗しました。
message
タスクの実行情報。STRING 型です。有効値:
successvideo downloading
create_time
タスクが作成された時刻。STRING 型です。
object
動画の URL。STRING 型です。
Result
モデルサービスから返された結果。STRING 型です。
説明Result パラメーターは、単一の動画の品質を評価するために使用されるモデルサービスから返される Result パラメーターと同じです。
エラーコード
次の表に、Python 向けマルチメディア分析 SDK から返されるエラーコードを示します。
画像分析サービス
リクエストエラー
HTTP ステータスコード | code | message | 操作 |
400 | PARAMETER_ERROR |
| リクエストに画像が指定されていません。 |
| AppId が無効です。 | ||
| image パラメーターのデータ型が無効です。 | ||
401 | PARAMETER_ERROR |
| トークンが無効です。 |
404 | PARAMETER_ERROR |
| リクエストされたモデルサービスがデプロイされていません。 |
422 | SERVER_ERROR | 返されたエラーメッセージを参照してください。 | モデルサービスでエラーが発生しました。返された message の内容を参照してください。 |
動画分析サービス
リクエストエラー
HTTP ステータスコード
code
message
操作
400
PARAMETER_ERROR
not found appidAppId が無効です。
401
PARAMETER_ERROR
sign errorトークンが無効です。
404
PARAMETER_ERROR
model not foundリクエストされたモデルサービスがデプロイされていません。
結果クエリエラー
state
message
操作
3
failed to download video, err=fetch resource failed\tcode = 404システムが指定された URL から動画をダウンロードできませんでした。
3
返されたエラーメッセージを参照してください。
モデルサービスでエラーが発生しました。返された message の内容を参照してください。