すべてのプロダクト
Search
ドキュメントセンター

Platform For AI:Python 用 AI Portrait SDK の使用

最終更新日:Apr 11, 2025

Platform for AI (PAI) は、AI Portrait サービスのアルゴリズムサービス操作を呼び出して、モデルのトレーニングとポートレートの作成を行うことができる Python 用 AI Portrait SDK を提供しています。 SDK を使用すると、カスタム LoRA モデルを設定し、テンプレート画像に基づいてポートレートを作成できます。 このトピックでは、Python 用 AI Portrait SDK を使用して関連操作を呼び出す前に完了する必要がある準備について説明します。 また、操作の呼び出し例も示します。

前提条件

  • Python 環境が準備されていること。 Python 3.4 以降がサポートされています。

  • モデルのトレーニングとポートレートの作成のために、5 ~ 20 枚のトレーニング画像と 1 枚のテンプレート画像が準備されていること。 次の画像形式がサポートされています。.jpg.jpeg.png。 各画像のサイズが 512 × 512 ピクセル以上であることを確認してください。

    • 単一人物ポートレート: テンプレート画像には人物の顔が含まれている必要があります。 複数のトレーニング画像の顔は同じ人物に属しています。

    • 複数人物ポートレート: テンプレート画像には複数の顔が含まれている必要があり、顔の数はモデルのトレーニングに指定された model_id パラメーターの値と同じである必要があります。

準備

  1. 次のコマンドを実行して、Python SDK をインストールします。

    wget https://ai-service-data.oss-cn-beijing.aliyuncs.com/python-sdk/ai_service_python_sdk-1.1.3-py3-none-any.whl
    pip install ai_service_python_sdk-1.1.3-py3-none-any.whl
  2. クライアントを初期化します。

    次のコマンドを実行して、環境を初期化します。

    from ai_service_python_sdk.client.api_client import ApiClient
    client = ApiClient('<HOST>', '<YOUR-APPID>', '<YOUR-TOKEN>')

    ビジネス要件に基づいて、次のパラメーターを変更します。

    パラメーター

    説明

    <HOST>

    サーバーアドレス。 例: http://ai-service.ce8cc13b6421545749e7b4605f3d02607.cn-hangzhou.alicontainer.com

    <YOUR-APPID>

    アプリケーション ID。 AI Portrait をアクティブ化すると、[AI Portrait] ページでアプリケーション ID を確認できます。

    <YOUR-TOKEN>

    トークン。 AI Portrait をアクティブ化すると、[AI Portrait] ページでトークンを確認できます。

サンプルコード

AI Portrait はリソースを大量に消費するサービスであり、モデルのトレーニングとポートレートの作成プロセスが含まれます。 モデルのトレーニングには通常数分かかりますが、ポートレートの作成には数十秒しかかかりません。 次の図は、API 操作を呼び出して AI ポートレートを作成するプロセスを示しています。

以下のセクションでは、関連する API 操作のサンプルリクエストとサンプルレスポンス、およびエンドツーエンドプロセスのサンプルコードを示します。

チェックリクエスト (aigc_images_check)

  • サンプルリクエスト:

    from ai_service_python_sdk.client.api_client import ApiClient
    from ai_service_python_sdk.client.api.ai_service_aigc_images_api import AIGCImagesApi
    
    host = 'http://ai-service.ce8cc13b6421545749e7b4605f3d02607.cn-hangzhou.alicontainer.com'
    appId = 'YOUR-APPID'
    token = 'YOUR-TOKEN'
    
    client  = ApiClient(host, appId, token)
    api    = AIGCImagesApi(client)  # noqa: E501
    
    # URL 形式のトレーニング画像。
    images = [
        'https://xxx/0.jpg',
        'https://xxx/1.jpg'
    ]
    response = api.aigc_images_check(images, <model_name>, <configure>)
    
    # リクエストの ID。
    request_id = response.request_id
    # リクエストのステータス。
    code = response.code
    # リクエストステータスの詳細。
    message = response.message
    # モデルサービスから返されたコンテンツ。
    data = response.data
    # 戻り値を表示します。
    print(response)

    次の表に、主要なパラメーターを示します。

    パラメーター

    説明

    appId

    アプリケーション ID。 AI Portrait サービスをアクティブ化すると、[AI Portrait] ページでアプリケーション ID を確認できます。

    token

    トークン。 AI Portrait サービスをアクティブ化すると、[AI Portrait] ページでトークンを確認できます。

    images

    チェックする画像の URL。 複数の URL はカンマ (,) で区切ります。

    response

    レスポンスパラメーターには、次のフィールドが含まれています。

    • <model_name>: モデルの名前。 デフォルトでは、空の文字列が使用されます。 例: ''

    • <configure>: 返される設定項目。 デフォルト値: None。 追加の設定項目は指定されていません。

  • サンプルレスポンス:

    {
        "request_id":"07988c97-caa4-4512-a2b2-e9173c1a03c6",
        "code":"OK",
        "message":"success",
        "data":{
            "check_results":[
                {
                    "code":1,
                    "frontal":true,
                    "message":"success",
                    "url":"https://xxx/0.jpg"
                },{
                    "code":1,
                    "frontal":false,
                    "message":"success",
                    "url":"https://xxx/1.jpg"
                }
            ],
            "cost_time":0.47095775604248047,
            "images":["https://xxx/0.jpg","https://xxx/1.jpg"],
            "request_id":"07988c97-caa4-4512-a2b2-e9173c1a03c6"}}

    次の表に、レスポンスパラメーターを示します。

    パラメーター

    説明

    request_id

    リクエスト ID。 STRING 型です。

    code

    リクエストのステータスコード。 STRING 型です。 有効な値:

    • OK: リクエストは成功しました。

    • error: リクエストは失敗しました。

    message

    リクエストステータスの詳細。 リクエストが成功した場合、success が返されます。 他のシナリオでは、別のメッセージが返されます。

    data

    返されたデータの詳細。 JSON Object 型です。 パラメーター:

    • check_results: 各入力画像の検出結果。 各画像は、url、message、frontal のキーを含む辞書に対応します。

    • cost_time: サーバーが API を呼び出すのに必要な時間。

    • images: チェックされる画像の URL。 値は LIST 型です。

    • request_id: リクエストの ID。 値は STRING 型です。

    check_results の message フィールドの有効な値

    有効な値

    ステータスコード

    説明

    success

    1

    画像は準拠しています。

    Image decode error

    2

    画像をダウンロードまたはデコードできません。

    Number of face is not 1

    3

    顔の数が 1 つではありません。

    Image detect error

    4

    顔認識でエラーが発生しました。

    Image encoding error

    5

    顔を特徴ベクトルにエンコードしているときにエラーが発生しました。これは、顔が認識できないことを示します。

    This photo is not the same person in photos

    6

    このエラーのみが報告された場合、複数の画像の顔は同じ人物に属していません。

モデルトレーニングの開始 (aigc_images_train)

  • サンプルリクエスト:

    from ai_service_python_sdk.client.api_client import ApiClient
    from ai_service_python_sdk.client.api.ai_service_aigc_images_api import AIGCImagesApi
    
    host = 'http://ai-service.ce8cc13b6421545749e7b4605f3d02607.cn-hangzhou.alicontainer.com'
    appId = 'YOUR-APPID'
    token = 'YOUR-TOKEN'
    
    client  = ApiClient(host, appId, token)
    api     = AIGCImagesApi(client)  # noqa: E501
    
    # URL 形式のトレーニング画像。
    images = [
        'https://xxx/0.jpg',
        'https://xxx/1.jpg',
        'https://xxx/2.jpg',
        'https://xxx/3.jpg',
        'https://xxx/4.jpg',
        'https://xxx/5.jpg'
    ]
    response = api.aigc_images_train(images, <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']
    # モデル ID
    model_id = response.data['model_id']
    # 戻り値を表示します。
    print(response)

    次の表に、主要なパラメーターを示します。

    パラメーター

    説明

    appId

    アプリケーション ID。 AI Portrait サービスをアクティブ化すると、[AI Portrait] ページでアプリケーション ID を確認できます。

    token

    トークン。 AI Portrait サービスをアクティブ化すると、[AI Portrait] ページでトークンを確認できます。

    images

    トレーニング画像の URL。 複数の URL はカンマ (,) で区切ります。

    response

    レスポンスパラメーターには、次のフィールドが含まれています。

    • <model_name>: モデルの名前。 デフォルトでは、空の文字列が使用されます。 例: ''

    • <configure>: 返される設定項目。 デフォルト値: None。 追加の設定項目は指定されていません。

  • サンプルレスポンス:

    {'code': 'OK',
     'data': {'job_id': 11***, 'model_id': 'fa4ba43a-df55-45a4-9c31-bb0dc1e5****'},
     'message': 'success',
     'request_id': 'de314ef5-114d-4db1-b54a-332d5300780b'}

    次の表に、パラメーターを示します。

    パラメーター

    説明

    request_id

    リクエスト ID。 STRING 型です。

    code

    リクエストのステータスコード。 STRING 型です。 有効な値:

    • OK: リクエストは成功しました。

    • error: リクエストは失敗しました。

    message

    リクエストステータスの詳細。 リクエストが成功した場合、success が返されます。 他のシナリオでは、別のメッセージが返されます。

    data

    返されたデータの詳細。 JSON Object 型です。 パラメーター:

    • job_id: タスクの ID。 値は INT 型です。

    • model_id: トレーニングで使用されるモデルの ID。 ID は長さ 36 文字の文字列です。

    上記のレスポンスの job_id パラメーターと model_id パラメーターをオンプレミスデバイスに保存します。 トレーニング結果をクエリするには job_id を、ポートレート作成のリクエストを送信するには model_id を使用する必要があります。

トレーニング結果のクエリ (get_async_job)

  • サンプルリクエスト:

    from ai_service_python_sdk.client.api_client import ApiClient
    from ai_service_python_sdk.client.api.ai_service_job_api import AiServiceJobApi
    
    host = 'http://ai-service.ce8cc13b6421545749e7b4605f3d02607.cn-hangzhou.alicontainer.com'
    appId = 'YOUR-APPID'
    token = 'YOUR-TOKEN'
    client = ApiClient(host, appId, token)
    ai_service_job_api = AiServiceJobApi(client)
    # 結果をクエリします。
    result = ai_service_job_api.get_async_job(<YOUR-JOB-ID>)
    # 戻り値を表示します。
    print(result)

    次の表に、主要なパラメーターを示します。

    パラメーター

    説明

    appId

    アプリケーション ID。 AI Portrait サービスをアクティブ化すると、[AI Portrait] ページでアプリケーション ID を確認できます。

    token

    トークン。 AI Portrait サービスをアクティブ化すると、[AI Portrait] ページでトークンを確認できます。

    result

    <YOUR-JOB-ID> パラメーターを、aigc_images_train 操作から返された job_id に置き換えます。

  • サンプルレスポンス:

    • 次のコードブロックは、モデルトレーニングが完了していない場合のサンプルレスポンスを示しています。

      {'code': 'OK',
       'data': {'job': {'Result': '',
                        'app_id': '2******6',
                        'create_time': '2023-08-22T16:43:35.36+08:00',
                        'id': 11***,
                        'message': 'model requesting',
                        'state': 1,
                        'type': 'Image'}},
       'message': 'success',
       'request_id': '8639143a-e147-4107-8e25-fcdeae24b0c5'}
    • 次のコードブロックは、モデルトレーニングが完了した場合のサンプルレスポンスを示しています。

      {'code': 'OK',
       'data': {'job': {'Result': '{"cost_time":1589.0886301994324, "states": [{"code":1,"frontal":false,"message":"success","url":"xxx.jpg"}],"model_id":"fa4ba43a-df55-45a4-9c31-bb0dc1e5****"}',
                        'app_id': '2******6',
                        'create_time': '2023-08-22T15:54:41.046+08:00',
                        'id': 11***,
                        'message': 'success',
                        'state': 2,
                        'type': 'Image'}},
       'message': 'success',
       'request_id': '93b77f4b-56cb-4120-b45b-f5c88941bff5'}

    次の表に、レスポンスパラメーターを示します。

    パラメーター

    説明

    request_id

    リクエスト ID。 STRING 型です。

    code

    リクエストのステータスコード。 STRING 型です。 有効な値:

    • OK: リクエストは成功しました。

    • error: リクエストは失敗しました。

    message

    リクエストステータスの詳細。 リクエストが成功した場合、success が返されます。 他のシナリオでは、別のメッセージが返されます。

    data

    返されたデータの詳細。 JSON Object 型です。 内部フィールドについては、このトピックの以下のセクションを参照してください。

    job フィールドのパラメーター

    パラメーター

    説明

    id

    ジョブの ID。

    app_id

    ユーザーのアプリケーション ID。

    state

    ジョブのステータスコード。 INT 型です。 有効な値:

    • 0: ジョブは初期化中です。

    • 1: ジョブは実行中です。

    • 2: ジョブは正常に実行されました。

    • 3: ジョブは失敗しました。

    message

    ジョブの実行情報。

    create_time

    ジョブが作成された時刻。

    Result

    モデルから返された結果。

    result フィールドのパラメーター

    パラメーター

    説明

    cost_time

    このトレーニングセッションに必要な時間。

    states

    各入力画像の検出結果。

    model_id

    返されたモデルの ID。

    states フィールドのパラメーター

    パラメーター

    説明

    code

    ステータスコード。 INT 型です。 有効な値:

    • 0: ジョブは完了していません。

    • 1: ジョブは完了しています。

    frontal

    画像の顔が正面を向いているかどうかを示します。 値は bool 型です。

    message

    画像検出の結果。 値は STRING 型です。

    url

    画像の URL。 値は STRING 型です。

  • 関連エラーコードの説明

    • リクエストエラーコード

      HTTP ステータスコード

      code

      message

      説明

      400

      PARAMETER_ERROR

      not found appid

      アプリケーション ID が無効です。

      EXCEEDED_QUOTA_ERROR

      exceeded quota

      アカウントのサービス呼び出しのクォータが使い果たされました。

      401

      PARAMETER_ERROR

      sign error

      トークンが無効です。

      404

      PARAMETER_ERROR

      model not found

      リクエストされたモデルサービスはデプロイされていません。

    • レスポンスエラーコード

      HTTP ステータスコード

      code

      message

      説明

      462

      error

      Invalid input data

      入力データの解析中にエラーが発生しました。

      Image not provided

      トレーニング用の画像が提供されていません。

      Make dir in oss Error

      Object Storage Service フォルダーの作成に失敗しました。 OSS がマウントされているかどうかを確認してください。

      Image process error

      画像の前処理中にエラーが発生しました。

      469

      error

      Training - Not get best template image

      トレーニングがクラッシュし、テンプレート画像が生成されませんでした。

      Training - Not get lora weight

      トレーニングがクラッシュし、LoRA ウェイトが生成されませんでした。

ポートレートの作成

  • サンプルリクエスト:

    ソロポートレートの作成 (aigc_images_create)

    import base64
    
    import cv2
    import numpy as np
    from ai_service_python_sdk.client.api.ai_service_aigc_images_api import \
        AIGCImagesApi  # noqa: E501
    from ai_service_python_sdk.client.api_client import ApiClient
    
    def decode_image_from_base64jpeg(base64_image):
        image_bytes = base64.b64decode(base64_image)
        np_arr = np.frombuffer(image_bytes, np.uint8)
        image = cv2.imdecode(np_arr, cv2.IMREAD_COLOR)
        return image
    
    host    = "http://ai-service.ce8cc13b6421545749e7b4605f3d02607.cn-hangzhou.alicontainer.com"
    appId 	= 'YOUR-APPID'
    token 	= 'YOUR-TOKEN'
    
    client  = ApiClient(host, appId, token)
    api     = AIGCImagesApi(client)  # noqa: E501
    
    response = api.aigc_images_create(
        '<Your-Model-ID>',
        '<url>',
        '<model_name>', <configure>
    )
    # リクエストの ID。
    request_id = response.request_id
    # リクエストのステータス。
    code = response.code
    # リクエストステータスの詳細。
    message = response.message
    # モデルサービスから返されたコンテンツ。
    data = response.data
    print(response)
    image = data['image']
    image = decode_image_from_base64jpeg(image)
    cv2.imwrite("1.jpg", image)
    print(data['cost_time'])

    次の表に、パラメーターを示します。

    パラメーター

    説明

    appId

    アプリケーション ID。 AI Portrait サービスをアクティブ化すると、[AI Portrait] ページでアプリケーション ID を確認できます。

    token

    トークン。 AI Portrait サービスをアクティブ化すると、[AI Portrait] ページでトークンを確認できます。

    response

    レスポンスパラメーターには、次のフィールドが含まれています。

    • <Your-Model-ID>: 値を、aigc_images_train 操作から返されたモデル ID に置き換えます。

    • <url>: 値を、単一の顔を含むテンプレート画像の URL に置き換えます。 例: https://xxx/single_template.jpg

    • <model_name>: モデルの名前。 デフォルトでは、空の文字列が使用されます。 例: ''

    • <configure>: 返される設定項目。 デフォルト値: None。 内部フィールドについては、「configure フィールドのパラメーター」を参照してください。

    configure フィールドのパラメーター

    パラメーター

    必須

    説明

    lora_weights

    FLOAT

    いいえ

    LoRA の重み。 有効な値: 0.5 ~ 1.0。 デフォルト値: 0.9。

    値が大きいほど、生成される画像は目的の人物によく似ています。 ただし、値が大きすぎると、画像が歪む可能性があります。

    first_diffusion_steps

    INT

    いいえ

    Stable Diffusion を使用した最初の画像生成のステップ数。 有効な値: 20 ~ 50。 デフォルト値: 50。

    パラメーター値は変更しないことをお勧めします。 大幅に減らすと、画像が歪む可能性があります。

    first_denoising_strength

    FLOAT

    いいえ

    最初の画像再構成の強度。これは、顔の再構成強度です。 有効な値: 0.0 ~ 1.0。 デフォルト値: 0.45。

    値が大きいほど、顔の再構成の強度が高くなります。 強度が高いほど、生成される画像は目的の人物によく似ています。 ただし、値が大きいと、画像が歪む可能性があります。

    second_diffusion_steps

    INT

    いいえ

    Stable Diffusion を使用した 2 番目の画像生成のステップ数。 有効な値: 20 ~ 50。 デフォルト値: 30。

    パラメーター値は変更しないことをお勧めします。 大幅に減らすと、画像が歪む可能性があります。

    second_denoising_strength

    FLOAT

    いいえ

    2 番目の画像再構成の強度。これは、顔の縁の再構成強度です。 有効な値: 0.0 ~ 1.0。 デフォルト値: 0.30。

    値が大きすぎると、画像が不自然になる可能性があります。

    more_like_me

    FLOAT

    いいえ

    画像が目的の人物に似ている度合い。 有効な値: 0.0 ~ 1.0。 デフォルト値: 0.50。

    値が大きいほど、生成される画像は目的の人物によく似ています。 ただし、値が大きすぎると、画像が不自然に見える可能性があります。

    crop_face_preprocess

    BOOL

    いいえ

    画像を切り取ってから再構成するかどうかを指定します。

    • True

    • False

    apply_face_fusion_before

    BOOL

    いいえ

    最初のポートレートマージを実行するかどうかを指定します。 デフォルト値: True。

    • パラメーターを True に設定すると、システムはポートレートマージを実行します。

    • パラメーターを False に設定すると、類似度は低下します。

    apply_face_fusion_after

    BOOL

    いいえ

    2 番目のポートレートマージを実行するかどうかを指定します。 デフォルト値: True。

    • パラメーターを True に設定すると、システムはポートレートマージを実行します。

    • パラメーターを False に設定すると、類似度は低下します。

    color_shift_middle

    BOOL

    いいえ

    最初の色補正を実行するかどうかを指定します。 デフォルト値: True。

    • パラメーターを True に設定すると、システムは色補正を実行して、生成される画像の肌の色とテンプレートの肌の色の類似度を高めます。

    • パラメーターを False に設定すると、システムは色を補正せず、色の歪みが発生する可能性があります。

    color_shift_last

    BOOL

    No

    2 番目の色補正を実行するかどうかを指定します。 デフォルト値: True。

    • パラメーターを True に設定すると、システムは色補正を実行して、生成される画像の肌の色とテンプレートの肌の色の類似度を高めます。

    • パラメーターを False に設定すると、システムは色を補正せず、色の歪みが発生する可能性があります。

    background_restore

    BOOL

    いいえ

    背景を再構成するかどうかを指定します。 デフォルト値: False。

    • パラメーターを True に設定すると、背景が再構成されてより自然になります。 ただし、この機能は画像の背景を変更し、消費時間を増加させます。

    • パラメーターを False に設定すると、システムは背景を再構成しません。

    skin_retouching_bool

    BOOL

    いいえ

    肌のスムージングを実行するかどうかを指定します。 デフォルト値: False。

    • パラメーターを True に設定すると、システムは肌を滑らかにし、明るくします。 ほとんどの場合、これにより画像がより魅力的になりますが、肌が過度に明るくなる可能性があります。

    • パラメーターを False に設定すると、肌の質感を向上させることができます。

    photo_enhancement_bool

    BOOL

    いいえ

    ポートレートを強調するかどうかを指定します。 デフォルト値: True。

    • パラメーターを True に設定すると、システムはポートレートを復元するか、画像の解像度を上げて画質を向上させます。

    • パラメーターを False に設定すると、システムはポートレートを強調しません。

    photo_enhancement_method

    STR

    いいえ

    ポートレートの強調に使用されるメソッド。 デフォルト値: photo_fix。 有効な値:

    • photo_fix は、特定の欠陥を修正することで画像を復元するために使用されます。歪みによって肌の質感が失われる可能性があります。

    • super_resolution は、画像の解像度を向上させるために使用され、元の詳細が多く保持されます。

    makeup_transfer

    BOOL

    いいえ

    メイク転送を実行するかどうかを指定します。 デフォルト値: False。

    • パラメーターを True に設定すると、システムはメイク転送を実行して、画像がプレーンになりすぎるのを防ぎます。 ただし、これにより、画像が目的の人物に似ていない可能性があります。

    • パラメーターを False に設定すると、システムはメイク転送を無効にします。

    makeup_transfer_ratio

    FLOAT

    いいえ

    メイク転送の強度。 有効な値: 0.0 ~ 1.0。 デフォルト値: 0.5。

    値が大きいほど、メイク転送の割合が高くなり、結果のメイクはテンプレートによく似ています。 これにより、画像が目的の人物に似ていない可能性もあります。

    face_shape_match

    BOOL

    いいえ

    顔の形の適応を実行するかどうかを指定します。 デフォルト値: False。

    • パラメーターを True に設定すると、顔の形と肌の質感が目的の人物によく似ています。

    • パラメーターを False に設定すると、システムは顔の形の適応を無効にします。

    ipa_control

    BOOL

    いいえ

    IP-Adapter を使用するかどうかを指定します。 デフォルト値: False。

    • パラメーターを True に設定すると、生成されるポートレートは参照画像によく似ています。

    • パラメーターを False に設定すると、システムは IP-Adapter を無効にします。

    ipa_weight

    FLOAT

    いいえ

    IP-Adapter の重み。 有効な値: 0.0 ~ 1.0。 デフォルト値: 0.5。 値が大きいほど、生成される画像は目的の人物によく似ています。 ただし、値が大きすぎると、画像が歪む可能性があります。

    style_name

    STRING

    いいえ

    作成されるポートレートのスタイル。 デフォルト値: Realistic。 有効な値:

    • Realistic

    • Anime

    lcm_accelerate

    BOOL

    いいえ

    潜在コード操作 (LCM) アクセラレーションを実行するかどうかを指定します。 デフォルト値: False。 有効な値:

    • False: LCM アクセラレーションを実行しません。

    • True: LCM アクセラレーションを実行します。

    sharp_ratio

    FLOAT

    いいえ

    シャープネスレベル。 有効な値: 0.0 ~ 1.0。 デフォルト値: 0.15。 このパラメーターを設定して、鮮明度を向上させることができます。 値が大きすぎると、画像が歪む可能性があります。

    複数人物ポートレートの作成 (aigc_images_create_by_multi_model_ids)

    import base64
    import cv2
    import numpy as np
    from ai_service_python_sdk.client.api.ai_service_aigc_images_api import \
        AIGCImagesApi  # noqa: E501
    from ai_service_python_sdk.client.api_client import ApiClient
    
    def decode_image_from_base64jpeg(base64_image):
        image_bytes = base64.b64decode(base64_image)
        np_arr = np.frombuffer(image_bytes, np.uint8)
        image = cv2.imdecode(np_arr, cv2.IMREAD_COLOR)
        return image
    
    host    = "http://ai-service.ce8cc13b6421545749e7b4605f3d02607.cn-hangzhou.alicontainer.com"
    appId 	= 'YOUR-APPID'
    token 	= 'YOUR-TOKEN'
    
    client  = ApiClient(host, appId, token)
    api     = AIGCImagesApi(client)  # noqa: E501
    
    response = api.aigc_images_create_by_multi_model_ids(
        ['<Your-Model-ID1>', '<Your-Model-ID2>'],
        '<url>',
        '<model_name>', <configure>
    )
    # リクエストの ID。
    request_id = response.request_id
    # リクエストのステータス。
    code = response.code
    # リクエストステータスの詳細。
    message = response.message
    # モデルサービスから返されたコンテンツ。
    data = response.data
    print(response)
    image = data['image']
    image = decode_image_from_base64jpeg(image)
    cv2.imwrite("1.jpg", image)
    print(data['cost_time'])

    次の表に、パラメーターを示します。

    パラメーター

    説明

    appId

    アプリケーション ID。 AI Portrait サービスをアクティブ化すると、[AI Portrait] ページでアプリケーション ID を確認できます。

    token

    トークン。 AI Portrait サービスをアクティブ化すると、[AI Portrait] ページでトークンを確認できます。

    response

    レスポンスパラメーターには、次のフィールドが含まれています。

    • <Your-Model-ID1><Your-Model-ID2>: 値を、aigc_images_train 操作から返されたモデル ID に置き換えます。

    • <url>: 値を、複数の顔を含むテンプレート画像の URL に置き換えます。 画像内の顔の数は、モデルトレーニングに指定された model_id パラメーターの値と同じである必要があります。 例: http://xxx/multi_template.jpg

    • <model_name>: モデルの名前。 デフォルトでは、空の文字列が使用されます。 例: ''

    • <configure>: 返される設定項目。 デフォルト値: None。 内部フィールドについては、「configure フィールドのパラメーター」を参照してください。

    configure フィールドのパラメーター

    パラメーター

    必須

    説明

    lora_weights

    FLOAT

    いいえ

    LoRA の重み。 有効な値: 0.5 ~ 1.0。 デフォルト値: 0.9。

    値が大きいほど、生成される画像は目的の人物によく似ています。 ただし、値が大きすぎると、画像が歪む可能性があります。

    first_diffusion_steps

    INT

    いいえ

    Stable Diffusion を使用した最初の画像生成のステップ数。 有効な値: 20 ~ 50。 デフォルト値: 50。

    パラメーター値は変更しないことをお勧めします。 大幅に減らすと、画像が歪む可能性があります。

    first_denoising_strength

    FLOAT

    いいえ

    最初の画像再構成の強度。これは、顔の再構成強度です。 有効な値: 0.0 ~ 1.0。 デフォルト値: 0.45。

    値が大きいほど、顔の再構成の強度が高くなります。 強度が高いほど、生成される画像は目的の人物によく似ています。 ただし、値が大きすぎると、画像が歪む可能性があります。

    second_diffusion_steps

    INT

    いいえ

    Stable Diffusion を使用した 2 番目の画像生成のステップ数。 有効な値: 20 ~ 50。 デフォルト値: 30。

    パラメーター値は変更しないことをお勧めします。 大幅に減らすと、画像が歪む可能性があります。

    second_denoising_strength

    FLOAT

    いいえ

    2 番目の画像再構成の強度。これは、顔の縁の再構成強度です。 有効な値: 0.0 ~ 1.0。 デフォルト値: 0.30。

    値が大きすぎると、画像が不自然になる可能性があります。

    more_like_me

    FLOAT

    いいえ

    画像が目的の人物に似ている度合い。 有効な値: 0.0 ~ 1.0。 デフォルト値: 0.50。

    値が大きいほど、生成される画像は目的の人物によく似ています。 ただし、値が大きすぎると、画像が不自然に見える可能性があります。

    crop_face_preprocess

    BOOL

    いいえ

    画像を切り取ってから再構成するかどうかを指定します。 デフォルト値: True。

    • True

    • False

    apply_face_fusion_before

    BOOL

    いいえ

    最初のポートレートマージを実行するかどうかを指定します。 デフォルト値: True。

    • パラメーターを True に設定すると、システムはポートレートマージを実行します。

    • パラメーターを False に設定すると、類似度は低下します。

    apply_face_fusion_after

    BOOL

    いいえ

    2 番目のポートレートマージを実行するかどうかを指定します。 デフォルト値: True。

    • パラメーターを True に設定すると、システムはポートレートマージを実行します。

    • パラメーターを False に設定すると、類似度は低下します。

    color_shift_middle

    BOOL

    いいえ

    最初の色補正を実行するかどうかを指定します。 デフォルト値: True。

    • パラメーターを True に設定すると、システムは色補正を実行して、生成される画像の肌の色とテンプレートの肌の色の類似度を高めます。

    • パラメーターを False に設定すると、システムは色を補正せず、色の歪みが発生する可能性があります。

    color_shift_last

    BOOL

    いいえ

    2 番目の色補正を実行するかどうかを指定します。 デフォルト値: True。

    • パラメーターを True に設定すると、システムは色補正を実行して、生成される画像の肌の色とテンプレートの肌の色の類似度を高めます。

    • パラメーターを False に設定すると、システムは色を補正せず、色の歪みが発生する可能性があります。

    background_restore

    BOOL

    いいえ

    背景を再構成するかどうかを指定します。 デフォルト値: False。

    • パラメーターを True に設定すると、背景が再構成されてより自然になります。 ただし、この機能は画像の背景を変更し、消費時間を増加させます。

    • パラメーターを False に設定すると、システムは背景を再構成しません。

    skin_retouching_bool

    BOOL

    いいえ

    肌のスムージングを実行するかどうかを指定します。 デフォルト値: False。

    • パラメーターを True に設定すると、システムは肌を滑らかにし、明るくします。 ほとんどの場合、これにより画像がより魅力的になりますが、肌が過度に明るくなる可能性があります。

    • パラメーターを False に設定すると、肌の質感を向上させることができます。

    photo_enhancement_bool

    BOOL

    いいえ

    ポートレートを強調するかどうかを指定します。 デフォルト値: True。

    • パラメーターを True に設定すると、システムはポートレートを復元するか、画像の解像度を上げて画質を向上させます。

    • パラメーターを False に設定すると、システムはポートレートを強調しません。

    photo_enhancement_method

    STR

    いいえ

    ポートレートの強調に使用されるメソッド。 デフォルト値: photo_fix。 有効な値:

    • photo_fix は、特定の欠陥を修正することで画像を復元するために使用されます。歪みによって肌の質感が失われる可能性があります。

    • super_resolution は、画像の解像度を向上させるために使用され、元の詳細が多く保持されます。

    makeup_transfer

    BOOL

    いいえ

    メイク転送を実行するかどうかを指定します。 デフォルト値: False。

    • パラメーターを True に設定すると、システムはメイク転送を実行して、画像がプレーンになりすぎるのを防ぎます。 ただし、これにより、画像が目的の人物に似ていない可能性があります。

    • パラメーターを False に設定すると、システムはメイク転送を無効にします。

    makeup_transfer_ratio

    FLOAT

    いいえ

    メイク転送の強度。 有効な値: 0.0 ~ 1.0。 デフォルト値: 0.5。

    値が大きいほど、メイク転送の割合が高くなり、結果のメイクはテンプレートによく似ています。 これにより、画像が目的の人物に似ていない可能性もあります。

    face_shape_match

    BOOL

    いいえ

    顔の形の適応を実行するかどうかを指定します。 デフォルト値: False。

    • パラメーターを True に設定すると、顔の形と肌の質感が目的の人物によく似ています。

    • パラメーターを False に設定すると、システムは顔の形の適応を無効にします。

    ipa_control

    BOOL

    いいえ

    IPA コントロールを実行するかどうか:

    • True: このスイッチをオンにすると、ポートレートの類似度は向上しますが、画像は参照画像の影響を受けやすくなります。

    • パラメーターを False に設定すると、システムは IP-Adapter を無効にします。

    ipa_weight

    FLOAT

    いいえ

    IP-Adapter の重み。 有効な値: 0.0 ~ 1.0。 デフォルト値: 0.5。 値が大きいほど、生成される画像は目的の人物によく似ています。 ただし、値が大きすぎると、画像が歪む可能性があります。

    style_name

    STRING

    いいえ

    作成される画像のスタイル。 有効な値:

    • Realistic

    • Anime

    lcm_accelerate

    BOOL

    いいえ

    LCM アクセラレーションを実行するかどうか。 デフォルト値: False。

    • False: LCM アクセラレーションを実行しません。

    • True: LCM アクセラレーションを実行します。

    sharp_ratio

    FLOAT

    いいえ

    シャープニングの度合い。 有効な値: 0.0 ~ 1.0。 デフォルト値: 0.15。 このパラメーターを設定して、鮮明度を向上させることができます。 値が大きすぎると、画像が歪む可能性があります。

  • サンプルレスポンス:

    {
      'code': 'OK',
      'data': {
          'cost_time': 21.705406427383423,
          'image': '/9j/4AAQSkZJRgABAQAAAQABAAD/.............2wBDAAgGBgcGBQgHBwcJCQgK',
      		'model_id': 'fa4ba43a-df55-45a4-9c31-bb0dc1e5****'
      },
      'message': 'success',
      'request_id': 'df5454ca-07ec-4a15-be50-7beaba42f36b'
    }

    次の表に、パラメーターを示します。

    パラメーター

    説明

    request_id

    リクエスト ID。 STRING 型です。

    code

    リクエストのステータスコード。 有効な値:

    • OK: リクエストは成功しました。

    • error: リクエストは失敗しました。

    message

    リクエストステータスの詳細。 リクエストが成功した場合、success が返されます。 他のシナリオでは、別のメッセージが返されます。

    data

    返されたデータの詳細。 JSON Object 型です。 パラメーター:

    • model_id: ユーザーのモデル ID。

    • image: AI ポートレートの生成に使用されるテンプレート画像。 Base64 エンコードされています。

    • cost_time: ポートレートの作成に必要な時間。 値は FLOAT 型です。

  • エラーコード

    • リクエストエラーコード

      HTTP ステータスコード

      code

      message

      説明

      400

      PARAMETER_ERROR

      not found appid

      アプリケーション ID が無効です。

      EXCEEDED_QUOTA_ERROR

      exceeded quota

      アカウントのサービス呼び出しのクォータが使い果たされました。

      401

      PARAMETER_ERROR

      sign error

      トークンが無効です。

      404

      PARAMETER_ERROR

      model not found

      リクエストされたモデルサービスはデプロイされていません。

    • レスポンスエラーコード

      HTTP ステータスコード

      code

      message

      説明

      462

      error

      Invalid input data. Please check the input dict.

      入力データの解析中にエラーが発生しました。

      mage not provided. Please check the template_image.

      ポートレートの作成に使用されるテンプレート画像が提供されていません。

      Prompts get error. Please check the model_id.

      モデル ID の形式が無効です。

      Roop image decord error. Pleace check the user's lora is trained or not.

      Roop 画像が存在しません。 モデルがトレーニングされているかどうかを確認してください。

      Template image decord error. Please Give a new template.

      テンプレート画像のデコード中にエラーが発生しました。 新しいテンプレート画像を提供してください。

      There is not face in template. Please Give a new template.

      テンプレート画像に顔がありません。 新しいテンプレート画像を提供してください。

      Template image process error. Please Give a new template.

      テンプレート画像の前処理中にエラーが発生しました。 新しいテンプレート画像を提供してください。

      469

      error

      First Face Fusion Error, Can't get face in template image.

      最初のポートレートマージ中にエラーが発生しました。

      First Stable Diffusion Process error. Check the webui status.

      Stable Diffusion を使用した最初の画像生成中にエラーが発生しました。

      Second Face Fusion Error, Can't get face in template image.

      2 番目のポートレートマージ中にエラーが発生しました。

      Second Stable Diffusion Process error. Check the webui status.

      Stable Diffusion を使用した 2 番目の画像生成中にエラーが発生しました。

      Please confirm if the number of faces in the template corresponds to the user ID.

      指定したユーザー ID の数が顔の数と一致しません。

      Third Stable Diffusion Process error. Check the webui status.

      背景の前処理中にエラーが発生しました。 新しいテンプレート画像を提供してください。

      500

      error

      Face id image decord error. Pleace check the user's lora is trained or not.

      アップロードされた画像のデコード中にエラーが発生しました。 モデルがトレーニングされているかどうかを確認してください。

エンドツーエンドのポートレート作成プロセスのサンプルコード

次のコードブロックは、エンドツーエンドのポートレート作成プロセスのサンプルを示しています。 コードを実行すると、現在のディレクトリに AI ポートレートが作成されます。

from ai_service_python_sdk.client.api_client import ApiClient
from ai_service_python_sdk.client.api.ai_service_aigc_images_api import AIGCImagesApi
from ai_service_python_sdk.client.api.ai_service_job_api import AiServiceJobApi
import logging
import sys
import time
import base64
import cv2
import numpy as np

host    = "http://ai-service.ce8cc13b6421545749e7b4605f3d02607.cn-hangzhou.alicontainer.com"
appId 	= 'YOUR-APPID'
token 	= 'YOUR-TOKEN'

def decode_image_from_base64jpeg(base64_image):
    image_bytes = base64.b64decode(base64_image)
    np_arr = np.frombuffer(image_bytes, np.uint8)
    image = cv2.imdecode(np_arr, cv2.IMREAD_COLOR)
    return image

# 中略... 後ほど翻訳を再開します


def CreateMulti(model_ids, template_image):
    response = api.aigc_images_create_by_multi_model_ids(
        model_ids,
        template_image,
        '', None
    )
    # リクエストの ID。
    request_id = response.request_id
    # リクエストのステータス。
    code = response.code
    # リクエストステータスの詳細。
    message = response.message
    # モデルサービスから返されたコンテンツ。
    data = response.data
    if code != "OK":
        logging.error(f"aigc_images_create_by_multi_model_ids failed, model_id is {model_id}")
        sys.exit(-1)
    else:
        image = data['image']
        image = decode_image_from_base64jpeg(image)
        cv2.imwrite("multi_out.jpg", image)
        logging.info(f"multi create cost time {data['cost_time']}")

if __name__ == "__main__":
    client = ApiClient(host, appId, token)

    api = AIGCImagesApi(client)  # noqa: E501
    logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')

    # URL 形式のトレーニング画像。
    images = [
        'https://xxx/0.jpg',
        'https://xxx/1.jpg',
        'https://xxx/2.jpeg',
        'https://xxx/3.jpeg',
    ]
    # チェック
    Check(client, images)
    
    model_id = Train(client, images)
    
    template_image = 'https://xxx/single_template.jpg'
    Create(model_id, template_image)
    # single_out.jpg 画像を読み込みます

    
    model_ids = [model_id, model_id]
    multi_template_image = 'https://xxx/multi_template.jpg'
    CreateMulti(model_ids, multi_template_image)
    # multi_out.jpg 画像を読み込みます

次の表に、パラメーターを示します。

パラメーター

説明

appId

アプリケーション ID。 AI Portrait サービスをアクティブ化すると、 [AI Portrait] ページでアプリケーション ID を確認できます。

token

トークン。 AI Portrait サービスをアクティブ化すると、[AI Portrait] ページでトークンを確認できます。

images

トレーニング画像の URL。 複数の URL はカンマ (,) で区切ります。

template_image

単一の顔を含むテンプレート画像の URL。 テンプレート画像は、単一人物ポートレートを生成するために使用されます。

multi_template_image

複数の顔を含むテンプレート画像の URL。 顔の数は、指定するモデル ID の数と同じである必要があります。 テンプレート画像は、複数人物ポートレートを生成するために使用されます。