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

Platform For AI:AI ポートレート SDK for Python の使用

最終更新日:Sep 10, 2026

Platform for AI (PAI) は、AI ポートレートサービスのアルゴリズムサービスオペレーションを呼び出してモデルをトレーニングし、ポートレートを生成するための AI ポートレート SDK for Python を提供します。この SDK を使用して、カスタム LoRA モデルを設定し、テンプレートイメージに基づいてポートレートを生成できます。このトピックでは、AI ポートレート SDK for Python を使用して関連するオペレーションを呼び出す前に完了する必要がある準備について説明します。また、オペレーションの呼び出し方法に関する例も提供します。

前提条件

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

  • モデルトレーニングとポートレート生成のために、5〜20 枚のトレーニングイメージと 1 枚のテンプレートイメージが準備されていること。サポートされているイメージフォーマットは、.jpg、.jpeg、.png です。各イメージのサイズが 512 x 512 ピクセル以上であることを確認してください。

    • 単独ポートレート:テンプレートイメージには 1 人の顔が含まれている必要があります。複数のトレーニングイメージの顔は、同じ人物のものである必要があります。

    • 複数人ポートレート:テンプレートイメージには複数の顔が含まれている必要があり、顔の数はモデルトレーニングで指定された `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 ポートレートをアクティブ化した後、[AI ポートレート] ページでアプリケーション ID を表示できます。

    <YOUR-TOKEN>

    トークン。AI ポートレートをアクティブ化した後、[AI ポートレート] ページでトークンを表示できます。

サンプルコード

AI ポートレートはリソースを大量に消費するサービスであり、モデルトレーニングとポートレート生成のプロセスが含まれます。モデルトレーニングには通常数分かかりますが、ポートレート生成には数十秒しかかかりません。次の図は、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 ポートレートサービスをアクティブ化した後、[AI ポートレート] ページでアプリケーション ID を表示できます。

    token

    トークン。AI ポートレートサービスをアクティブ化した後、[AI ポートレート] ページでトークンを表示できます。

    images

    チェックしたいイメージの URL。複数の URL はコンマ (,) で区切ります。

    response

    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 オブジェクト型です。パラメーター:

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

      • url:イメージの URL。

      • message:イメージの検出詳細。指定できる値の詳細については、「check_results の 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
    # job id
    job_id = response.data['job_id']
    # model_id
    model_id = response.data['model_id']
    # 戻り値を表示
    print(response)

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

    パラメーター

    説明

    appId

    アプリケーション ID。AI ポートレートサービスをアクティブ化した後、[AI ポートレート] ページでアプリケーション ID を表示できます。

    token

    トークン。AI ポートレートサービスをアクティブ化した後、[AI ポートレート] ページでトークンを表示できます。

    images

    トレーニングイメージの URL。複数の URL はコンマ (,) で区切ります。

    response

    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 オブジェクト型です。パラメーター:

    • 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 ポートレートサービスをアクティブ化した後、[AI ポートレート] ページでアプリケーション ID を表示できます。

    token

    トークン。AI ポートレートサービスをアクティブ化した後、[AI ポートレート] ページでトークンを表示できます。

    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 オブジェクト型です。内部フィールドの詳細については、このトピックの次のセクションをご参照ください:

    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) フォルダの作成に失敗しました。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 ポートレートサービスをアクティブ化した後、[AI ポートレート] ページでアプリケーション ID を表示できます。

    token

    トークン。AI ポートレートサービスをアクティブ化した後、[AI ポートレート] ページでトークンを表示できます。

    response

    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

    いいえ

    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 ポートレートサービスをアクティブ化した後、[AI ポートレート] ページでアプリケーション ID を表示できます。

    token

    トークン。AI ポートレートサービスをアクティブ化した後、[AI ポートレート] ページでトークンを表示できます。

    response

    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 オブジェクト型です。パラメーター:

    • 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 Check(client, images):
    # リクエストをチェック
    response = api.aigc_images_check(images, '', None)
    # リクエストの ID
    request_id = response.request_id
    # リクエストの状態
    code = response.code
    # リクエスト状態の詳細
    message = response.message
    # モデルサービスから返されたコンテンツ
    data = response.data

    # 戻り値を表示
    if code != "OK":
        logging.error(f"aigc_images_check failed,request id is {request_id}")
        logging.error(message)
        sys.exit(-1)
    else:
        for check_result in data['check_results']:
            if check_result['code'] != 1:
                logging.error(f"check {check_result['url']} failed, message is {check_result['message']}")
                sys.exit(-1)
        logging.info("check images done")


def Train(client, images):
    # トレーニングリクエスト
    response = api.aigc_images_train(images, '', None)
    request_id = response.request_id
    code = response.code
    message = response.message
    data = response.data
    # 戻り値を表示
    if code != "OK":
        logging.error(f"aigc_images_train failed, request id is {request_id}")
        logging.error(message)
        sys.exit(-1)
    else:  
        # job id
        job_id = response.data['job_id']
        # model_id
        model_id = response.data['model_id']
        logging.info(f"train job_id is {job_id}")
        logging.info(f"train moded_id is {model_id}")

    if isinstance(job_id, int):
        while True:
            ai_service_job_api = AiServiceJobApi(client)
            response = ai_service_job_api.get_async_job(job_id)
            request_id = response.request_id
            code = response.code
            message = response.message
            data = response.data
            
            if code != "OK":
                logging.error(f"get_async_job failed, request id is {request_id}")
                logging.error(message)
                sys.exit(-1)
            else:
                state = data["job"]["state"]
                if state == 2:
                    logging.info(f"model {model_id} trained successfully")
                    break
                elif state != 3:
                    logging.info(f"training model {model_id}")
                    time.sleep(10)
                else:
                    logging.error(f"model {model_id} trained failed")
                    logging.error(f"message: {message}")
                    break
        if state != 2:
            sys.exit(-1)
    return model_id

def Create(model_id, template_image):
    # イメージを生成
    response = api.aigc_images_create(model_id, 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 failed, model_id is {model_id}")
        sys.exit(-1)
    else:
        image = data['image']
        image = decode_image_from_base64jpeg(image)
        cv2.imwrite("single_out.jpg", image)
        logging.info(f"single create {data['cost_time']}")

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
    Check(client, images)
    
    model_id = Train(client, images)
    
    template_image = 'https://xxx/single_template.jpg'
    Create(model_id, template_image)
    #read the image single_out.jpg
    
    model_ids = [model_id, model_id]
    multi_template_image = 'https://xxx/multi_template.jpg'
    CreateMulti(model_ids, multi_template_image)
    #read the image multi_out.jpg

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

パラメーター

説明

appId

アプリケーション ID。AI ポートレートサービスをアクティブ化した後、[AI ポートレート] ページでアプリケーション ID を表示できます。

token

トークン。AI ポートレートサービスをアクティブ化した後、[AI ポートレート] ページでトークンを表示できます。

images

トレーニングイメージの URL。複数の URL はコンマ (,) で区切ります。

template_image

単一の顔を含むテンプレートイメージの URL。このテンプレートイメージは、単独ポートレートの生成に使用されます。

multi_template_image

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