安定性 AI イメージサービス - Amazon Bedrock

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

安定性 AI イメージサービス

Amazon Bedrock で Stability AI Image Services を使用すると、プロフェッショナルのクリエイティブワークフローを加速するために設計された 9 つの特殊な画像編集ツールにアクセスできます。Stability AI Image Services を使用すると、スケッチからイメージを生成したり、既存のイメージを再構築してスタイルを変更したり、イメージ内のオブジェクトを削除して置換したりできます。

このセクションでは、InvokeModel を使用して Stability AI Image Services に推論呼び出しを行う方法について説明します。このセクションでは、Python のコード例と Stability AI Image Services を使用する前後のイメージの例についても説明します。

Stability AI Image Services は、次のカテゴリで利用できます。

  • 編集 - マスク (生成フィル) や単語によるペイントなど、AI ベースの画像編集サービス。製品の配置と広告のためのツールと、背景の削除などの基本的なツールが含まれています。

  • コントロール - プロンプト、マップ、その他のガイドが表示される場合があります。これらのサービスは、ControlNets および Stable Diffusion モデル上に構築された同様のテクノロジーを活用します。

注記

Stability AI Image Service をサブスクライブすると、利用可能な 9 つの Stability AI Image Services すべてに自動的に登録されます。

リクエストとレスポンス

リクエスト本文は、InvokeModel へのリクエストの bodyフィールドに渡されます。

モデル呼び出しリクエストの body フィールド

Stability AI Image Services を使用して InvokeModel 呼び出しを行うときは、本文フィールドに次のような JSON オブジェクトを入力します。

{ 'prompt': 'Create an image of a panda' }

モデル呼び出しレスポンスの body フィールド

Stability AI Image Services を使用して InvokeModel 呼び出しを行うと、レスポンスは次のようになります。

{ 'seeds': [2130420379], 'finish_reasons': [null], 'images': ['...'] }
  • seeds – (文字列) モデルの画像生成に使用されるシードのリストです。

  • finish_reasons – リクエストがフィルタリングされたかどうかを示す列挙型です。null はリクエストが成功したことを示します。現在の可能な値: "Filter reason: prompt", "Filter reason: output image", "Filter reason: input image", "Inference error", null

  • images – base64 文字列形式で生成された画像のリストです。

詳細については、https://platform.us.stability.ai/docs/api-reference#tag/v1generation を参照してください。

編集

次のセクションでは、安定性 AI イメージサービスの編集について説明します。

インペイントは、マスクイメージの内容に基づいて、指定された領域を新しいコンテンツで入力または置き換えることで、イメージをインテリジェントに変更します。

Inpaint には次の必須パラメータがあります。

  • prompt - 出力イメージに表示する内容。要素、色、件名を明確に定義する強力でわかりやすいプロンプトは、より良い結果につながります。特定の単語の重みを制御するには、形式 (word:weight) を使用します。ここで、word は重みを制御する単語、weight は値です。値 0 と 1.0 は単語 を強調解除し、値 1.1 と 2 は単語 を強調しました。例えば、空はパリッとした (青:0.3) で、 (緑:1.8) は青と緑ですが、青よりも緑が多い空を伝えます。最小 0 文字、最大 10,000 文字。

  • image ‐ (文字列) インペイントする Base64 イメージ。イメージのすべての側面は 64 ピクセル以上である必要があります。合計ピクセル数は 9,437,184 ピクセルを超えることはできません。イメージのアスペクト比は 1:2.5 から 2.5:1 の間でなければなりません。サポートされている形式: jpeg、png、webp。

以下のパラメータはオプションです。

  • style_preset ‐ (文字列) イメージモデルを特定のスタイルに向けてガイドします。列挙型: 3d モデル、アナログフィルム、アニメーション、映像、コミックブック、デジタルアート、拡張、ファンタジーアート、等角、ラインアート、低ポリ、モデリング複合、ネオンパンク、折り紙、写真、ピクセルアート、タイルテクスチャ。

  • negative_prompt ‐ (文字列) 出力イメージに表示したくない内容を説明するテキストのぼかし。これはアドバンスド機能です。最大 10,000 文字。

  • seed ‐ (数値) 生成の「ランダム性」をガイドするために使用される特定の値。(このパラメータを省略するか、0 を渡してランダムシードを使用します)。範囲は 0~4294967294 です。デフォルトは 0 です。

  • output_format ‐ (文字列) 生成されたイメージのコンテンツタイプを指定します。列挙型: jpeg、png、webp。デフォルトの png。

  • mask ‐ (文字列) 2 番目のイメージ (このパラメータに渡される) またはイメージパラメータのアルファチャネルを介して、ピクセル単位でインペインティングプロセスの強度を制御します。

    • マスクを渡す - このパラメータに渡されるイメージは、任意のピクセルで、指定されたピクセルの暗さまたは明るさに基づいてインペイントの強度を表す白黒のイメージである必要があります。完全に黒いピクセルはインペイント強度を表し、完全に白いピクセルは最大強度を表します。マスクのサイズが画像パラメータと異なる場合、マスクは自動的にサイズ変更されます。

    • アルファチャネルサポート - 明示的なマスクを指定しない場合、マスクはイメージパラメータのアルファチャネルから取得されます。透明ピクセルはペイントされ、不透明ピクセルは保持されます。アルファチャネルを持つイメージがマスクとともに提供される場合、マスクが優先されます。

  • grow_mask - マスクのエッジを指定したピクセル数だけすべての方向に外側に移動します。マスクの周囲がぼやけて、ペイントされたコンテンツと元の画像間の遷移を滑らかにすることができます。範囲は 0~20 です。デフォルトは 5 です。ペイントされたコンテンツの周囲にシームや粗いエッジがある場合は、このパラメータを試してください。過剰な増加により、マスクの細かい詳細が不明瞭になったり、近くのマスクされた領域がマージされたりする場合があることに注意してください。

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.png" mask = "./content/mask.png" region = "us-east-1" model_id = "us.stability.stable-image-inpaint-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') with open(mask, "rb") as mask_file: mask_base64 = base64.b64encode(mask_file.read()).decode('utf-8') params = { "image": image_base64, "mask": mask_base64, "prompt": "artificer of time and space" } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.png" mask = "./content/mask.png" region = "us-east-1" model_id = "us.stability.stable-image-inpaint-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') with open(mask, "rb") as mask_file: mask_base64 = base64.b64encode(mask_file.read()).decode('utf-8') params = { "image": image_base64, "mask": mask_base64, "prompt": "artificer of time and space" } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

次の表は、インペイントオペレーションの入力イメージと出力イメージを示しています。

Input

マスク

Output

Stable Image Ultra によって生成された「大都市の人間」、Sanwal Yousaf によるプロンプトと編集。CC BY 4.0 でライセンス

検索と再色を使用すると、プロンプトを使用してイメージ内の特定のオブジェクトの色を変更できます。このサービスは、マスクを必要としない特定のバージョンのインペインティングです。オブジェクトを自動的にセグメント化し、プロンプトでリクエストされた色を使用して再色します。

検索と再色には、次の必須パラメータがあります。

  • prompt - 出力イメージに表示する内容。要素、色、件名を明確に定義する強力でわかりやすいプロンプトは、より良い結果につながります。特定の単語の重みを制御するには、形式 (word:weight) を使用します。ここで、word は重みを制御する単語、weight は値です。値 0 と 1.0 は単語 を強調解除し、値 1.1 と 2 は単語 を強調しました。例えば、空はパリッとした (青:0.3) で、 (緑:1.8) は青と緑ですが、青よりも緑が多い空を伝えます。最小 0 文字、最大 10,000 文字。

  • image ‐ (文字列) 再色する Base64 イメージ。イメージのすべての側面は 64 ピクセル以上である必要があります。合計ピクセル数は 9,437,184 ピクセルを超えることはできません。イメージのアスペクト比は 1:2.5 から 2.5:1 の間でなければなりません。サポートされている形式: jpeg、png、webp。

  • select_prompt ‐ (文字列) イメージ内で検索する内容の簡単な説明。最大 10,000 文字。

以下のパラメータはオプションです。

  • style_preset ‐ (文字列) イメージモデルを特定のスタイルに向けてガイドします。列挙型: 3d モデル、アナログフィルム、アニメーション、映像、コミックブック、デジタルアート、拡張、ファンタジーアート、等角、ラインアート、低ポリ、モデリング複合、ネオンパンク、折り紙、写真、ピクセルアート、タイルテクスチャ。

  • negative_prompt ‐ (文字列) 出力イメージに表示したくない内容を説明するテキストのぼかし。これはアドバンスド機能です。最大 10,000 文字。

  • seed ‐ (数値) 生成の「ランダム性」をガイドするために使用される特定の値。(このパラメータを省略するか、0 を渡してランダムシードを使用します)。範囲は 0~4294967294 です。デフォルトは 0 です。

  • output_format ‐ (文字列) 生成されたイメージのコンテンツタイプを切り捨てます。列挙型: jpeg、png、webp。デフォルトの png。

  • grow_mask - マスクのエッジを指定したピクセル数だけすべての方向に外側に移動します。マスクの周囲がぼやけて、ペイントされたコンテンツと元の画像間の遷移を滑らかにすることができます。範囲は 0~20 です。デフォルトは 5 です。ペイントされたコンテンツの周囲にシームや粗いエッジがある場合は、このパラメータを試してください。過剰な増加により、マスクの細かい詳細が不明瞭になったり、近くのマスクされた領域がマージされたりする場合があることに注意してください。

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.png" region = "us-east-1" model_id = "us.stability.stable-image-search-recolor-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "pink jacket", "select_prompt": "jacket" } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.png" region = "us-east-1" model_id = "us.stability.stable-image-search-recolor-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "pink jacket", "select_prompt": "jacket" } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

次の表は、ピンクのジャケットというプロンプトを使用した検索および再色オペレーションの入力イメージと出力イメージを示しています。

Input

Output

Stable Image Ultra、Sanwal Yousaf によるプロンプトと編集によって生成された「インポータージャケットを着用する男性」。CC BY 4.0 でライセンス

検索と置換では、検索プロンプトを使用して、置き換えるオブジェクトをシンプルな言語で識別できます。サービスは自動的にオブジェクトをセグメント化し、マスクを必要とせずにプロンプトでリクエストされたオブジェクトに置き換えます。

Search and Replace には次の必須パラメータがあります。

  • prompt - 出力イメージに表示する内容。要素、色、件名を明確に定義する強力でわかりやすいプロンプトは、より良い結果につながります。特定の単語の重みを制御するには、形式 (word:weight) を使用します。ここで、word は重みを制御する単語、weight は値です。値 0 と 1.0 は単語 を強調解除し、値 1.1 と 2 は単語 を強調しました。例えば、空はパリッとした (青:0.3) で、 (緑:1.8) は青と緑ですが、青よりも緑が多い空を伝えます。最小 0 文字、最大 10,000 文字。

  • image ‐ (文字列) 再色する Base64 イメージ。イメージのすべての側面は 64 ピクセル以上である必要があります。合計ピクセル数は 9,437,184 ピクセルを超えることはできません。イメージのアスペクト比は 1:2.5 から 2.5:1 の間でなければなりません。サポートされている形式: jpeg、png、webp。

  • search_prompt ‐ (文字列) イメージにペイントする内容の簡単な説明。最大 10,000 文字。

以下のパラメータはオプションです。

  • style_preset ‐ (文字列) イメージモデルを特定のスタイルに向けてガイドします。列挙型: 3d モデル、アナログフィルム、アニメーション、映像、コミックブック、デジタルアート、拡張、ファンタジーアート、等角、ラインアート、低ポリ、モデリング複合、ネオンパンク、折り紙、写真、ピクセルアート、タイルテクスチャ。

  • negative_prompt ‐ (文字列) 出力イメージに表示したくない内容を説明するテキストのぼかし。これはアドバンスド機能です。最大 10,000 文字。

  • seed ‐ (数値) 生成の「ランダム性」をガイドするために使用される特定の値。(このパラメータを省略するか、0 を渡してランダムシードを使用します)。範囲は 0~4294967294 です。デフォルトは 0 です。

  • output_format ‐ (文字列) 生成されたイメージのコンテンツタイプを切り捨てます。列挙型: jpeg、png、webp。デフォルトの png。

  • grow_mask - マスクのエッジを指定したピクセル数だけすべての方向に外側に移動します。マスクの周囲がぼやけて、ペイントされたコンテンツと元の画像間の遷移を滑らかにすることができます。範囲は 0~20 です。デフォルトは 5 です。ペイントされたコンテンツの周囲にシームや粗いエッジがある場合は、このパラメータを試してください。過剰な増加により、マスクの細かい詳細が不明瞭になったり、近くのマスクされた領域がマージされたりする場合があることに注意してください。

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.png" region = "us-east-1" model_id = "us.stability.stable-image-search-replace-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "jacket", "search_prompt": "sweater", } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.png" region = "us-east-1" model_id = "us.stability.stable-image-search-replace-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "jacket", "search_prompt": "sweater", } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

次の表は、次のプロンプトを使用した検索および置換オペレーションの入力イメージと出力イメージを示しています: jacket

Input

Output

Stable Image Ultra によって生成された「落下を着けた女性モデル」。Sanwal Yousaf によるプロンプトと編集。CC BY 4.0 でライセンス

消去を使用すると、バックグラウンドの一貫性をインテリジェントに維持しながら、イメージマスクを使用して不要な要素を削除できます。

消去には次の必須パラメータがあります。

  • image ‐ (文字列) 消去する Base64 イメージ。イメージのすべての側面は 64 ピクセル以上である必要があります。合計ピクセル数は 9,437,184 ピクセルを超えることはできません。イメージのアスペクト比は 1:2.5 から 2.5:1 の間でなければなりません。サポートされている形式: jpeg、png、webp。

以下のパラメータはオプションです。

  • seed ‐ (数値) 生成の「ランダム性」をガイドするために使用される特定の値。(このパラメータを省略するか、0 を渡してランダムシードを使用します)。範囲は 0~4294967294 です。デフォルトは 0 です。

  • output_format ‐ (文字列) 生成されたイメージのコンテンツタイプを切り捨てます。列挙型: jpeg、png、webp。デフォルトの png。

  • mask ‐ (文字列) 2 番目のイメージ (このパラメータに渡される) またはイメージパラメータのアルファチャネルを介して、ピクセル単位でインペインティングプロセスの強度を制御します。

    • マスクを渡す - このパラメータに渡されるイメージは、任意のピクセルで、指定されたピクセルの暗さまたは明るさに基づいてインペイントの強度を表す白黒のイメージである必要があります。完全に黒いピクセルはインペイント強度を表し、完全に白いピクセルは最大強度を表します。マスクのサイズが画像パラメータと異なる場合、マスクは自動的にサイズ変更されます。

    • アルファチャネルサポート - 明示的なマスクを指定しない場合、マスクはイメージパラメータのアルファチャネルから取得されます。透明ピクセルはペイントされ、不透明ピクセルは保持されます。アルファチャネルを持つイメージがマスクとともに提供される場合、マスクが優先されます。

  • grow_mask - マスクのエッジを指定したピクセル数だけすべての方向に外側に移動します。マスクの周囲がぼやけて、ペイントされたコンテンツと元の画像間の遷移を滑らかにすることができます。範囲は 0~20 です。デフォルトは 5 です。ペイントされたコンテンツの周囲にシームや粗いエッジがある場合は、このパラメータを試してください。過剰な増加により、マスクの細かい詳細が不明瞭になったり、近くのマスクされた領域がマージされたりする場合があることに注意してください。

注記

最適な消去結果を得るには、マスクが削除する領域を正確に定義していることを確認します。明示的なマスクが指定されていない場合、サービスは入力イメージのアルファチャネルを使用します。両方が指定されている場合、マスクが優先されます。

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.png" mask = "./content/mask.png" region = "us-east-1" model_id = "us.stability.stable-image-erase-object-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8'), with open(mask, "rb") as mask_file: mask_base64 = base64.b64encode(mask_file.read()).decode('utf-8') params = { "image": image_base64, "mask": mask_base64 } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.png" mask = "./content/mask.png" region = "us-east-1" model_id = "us.stability.stable-image-erase-object-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8'), with open(mask, "rb") as mask_file: mask_base64 = base64.b64encode(mask_file.read()).decode('utf-8') params = { "image": image_base64, "mask": mask_base64 } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

次の表は、消去オペレーションの入力イメージと出力イメージを示しています。

Input

マスク

Output

Stable Image Ultra によって生成された「Students Desk」。Sanwal Yousaf によるプロンプトと編集。CC BY 4.0 でライセンス

Remove Background を使用すると、被写体をバックグラウンドから正確に分離できます。

Remove Background には次の必須パラメータがあります。

  • image ‐ (文字列) 背景を削除する Base64 イメージ。イメージのすべての側面は 64 ピクセル以上である必要があります。合計ピクセル数は 9,437,184 ピクセルを超えることはできません。イメージのアスペクト比は 1:2.5 から 2.5:1 の間でなければなりません。サポートされている形式: jpeg、png、webp。

以下のパラメータはオプションです。

  • output_format ‐ (文字列) 生成されたイメージのコンテンツタイプを切り捨てます。列挙型: jpeg、png、webp。デフォルトの png。

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.png" region = "us-east-1" model_id = "us.stability.stable-image-remove-background-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.png" region = "us-east-1" model_id = "us.stability.stable-image-remove-background-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64 } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

次の表は、背景の削除オペレーションの入力イメージと出力イメージを示しています。

Input

Output

Stable Image Ultra が生成した「落下着く女性モデル」。Sanwal Yousaf によるプロンプトと編集。CC BY 4.0 でライセンス

コントロール

次のセクションでは、Stability AI Image Services のコントロールについて説明します。

手描きの大まかなスケッチを、正確な制御で洗練された出力にアップグレードします。スケッチ以外のイメージの場合、コントロールスケッチを使用すると、イメージ内の輪郭線とエッジを活用して、最終的な外観を詳細に操作できます。

Control Sketch には次の必須パラメータがあります。

  • prompt - 出力イメージに表示する内容。要素、色、件名を明確に定義する強力でわかりやすいプロンプトは、より良い結果につながります。特定の単語の重みを制御するには、形式 (word:weight) を使用します。ここで、word は重みを制御する単語、weight は値です。値 0 と 1.0 は単語 を強調解除し、値 1.1 と 2 は単語 を強調しました。例えば、空はパリッとした (青:0.3) で、 (緑:1.8) は青と緑ですが、青よりも緑が多い空を伝えます。最小 0 文字、最大 10,000 文字。

  • image ‐ (文字列) スケッチの Base64 イメージ。イメージのすべての側面は 64 ピクセル以上である必要があります。合計ピクセル数は 9,437,184 ピクセルを超えることはできません。イメージのアスペクト比は 1:2.5 から 2.5:1 の間でなければなりません。サポートされている形式: jpeg、png、webp。

以下のパラメータはオプションです。

  • control_strength ‐ (数値) イメージが生成に与える影響、または制御の程度。0 から 1 の間の浮動小数点として表されます。0 は最小の影響で、1 は最大の影響です。デフォルトは 0.7 です。

  • negative_prompt ‐ (文字列) 出力イメージに表示したくない内容を説明するテキストのぼかし。これはアドバンスド機能です。最大 10,000 文字。

  • seed ‐ (数値) 生成の「ランダム性」をガイドするために使用される特定の値。(このパラメータを省略するか、0 を渡してランダムシードを使用します)。範囲は 0~4294967294 です。デフォルトは 0 です。

  • output_format ‐ (文字列) 生成されたイメージのコンテンツタイプを切り捨てます。列挙型: jpeg、png、webp。デフォルトの png。

  • style_preset - イメージモデルを特定のスタイルに向けてガイドします。列挙型: 3d モデル、アナログフィルム、アニメーション、映像、コミックブック、デジタルアート、拡張、ファンタジーアート、等角、ラインアート、低ポリ、モデリング複合、ネオンパンク、折り紙、写真、ピクセルアート、タイルテクスチャ。

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-image-control-sketch-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "a house with background of mountains and river flowing nearby" } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-image-control-sketch-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "a house with background of mountains and river flowing nearby" } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

次の表は、近くの山と河川の背景を持つ家のプロンプトを使用したコントロールスケッチ呼び出しの入力イメージと出力イメージを示しています。

Input

Output

Sanwal Yousaf による「家、山、河川のスケッチ」。CC BY 4.0 でライセンスされる

コントロール構造を使用すると、入力イメージの構造を維持しながらイメージを生成できます。これは、シーンの再作成やモデルからのキャラクターのレンダリングなどの高度なコンテンツ作成シナリオに特に役立ちます。

コントロール構造には、次の必須パラメータがあります。

  • prompt - 出力イメージに表示する内容。要素、色、件名を明確に定義する強力でわかりやすいプロンプトは、より良い結果につながります。特定の単語の重みを制御するには、 形式 (word:weight) を使用します。ここで、word は重みを制御する単語、weight は値です。値 0 と 1.0 は単語の強調を解除し、値 1.1 から 2 は単語の強調を解除しました。例えば、空はパリッとした (青:0.3) で、 (緑:1.8) は青と緑ですが、青よりも緑が多い空を伝えます。最小 0 文字、最大 10,000 文字。

  • image ‐ (文字列) スケッチの Base64 イメージ。イメージのすべての側面は 64 ピクセル以上である必要があります。合計ピクセル数は 9,437,184 ピクセルを超えることはできません。イメージのアスペクト比は 1:2.5 から 2.5:1 の間でなければなりません。サポートされている形式: jpeg、png、webp。

以下のパラメータはオプションです。

  • control_strength ‐ (数値) イメージが生成に与える影響または制御の程度。0 から 1 の間の浮動小数点として表されます。0 は最小の影響、1 は最大の影響です。デフォルトは 0.7 です。

  • negative_prompt ‐ (文字列) 出力イメージに表示したくない内容を説明するテキストのぼかし。これはアドバンスド機能です。最大 10,000 文字。

  • seed ‐ (数値) 生成の「ランダム性」をガイドするために使用される特定の値。(このパラメータを省略するか、0 を渡してランダムシードを使用します)。範囲は 0~4294967294 です。デフォルトは 0 です。

  • output_format ‐ (文字列) 生成されたイメージのコンテンツタイプを切り捨てます。列挙型: jpeg、png、webp。デフォルトの png。

  • style_preset - イメージモデルを特定のスタイルに向けてガイドします。列挙型: 3d モデル、アナログフィルム、アニメーション、映像、コミックブック、デジタルアート、拡張、ファンタジーアート、等角、ラインアート、低ポリ、モデリング複合、ネオンパンク、折り紙、写真、ピクセルアート、タイルテクスチャ。

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-image-control-structure-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "surreal structure with motion generated sparks lighting the scene" } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-image-control-structure-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "surreal structure with motion generated sparks lighting the scene" } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

次の表は、次のプロンプトを使用したコントロール構造オペレーションの入力イメージと出力イメージを示しています。モーション生成のスパークを持つ超現実的構造がシーンを照らします。

Input

Output

Pawel L 「茶色の箱に座っている人」。 CC でライセンスされる

スタイルガイドを使用すると、入力イメージからスタイル要素を抽出し、プロンプトに基づいて出力イメージの作成をガイドできます。その結果、入力イメージと同じスタイルの新しいイメージが作成されます。

スタイルガイドには、次の必須パラメータがあります。

  • prompt - 出力イメージに表示する内容。要素、色、件名を明確に定義する強力でわかりやすいプロンプトは、より良い結果につながります。特定の単語の重みを制御するには、 形式 (word:weight) を使用します。ここで、word は重みを制御する単語、weight は値です。値 0 と 1.0 は単語の強調を解除し、値 1.1 から 2 は単語の強調を解除しました。例えば、空はパリッとした (青:0.3) で、 (緑:1.8) は青と緑ですが、青よりも緑が多い空を伝えます。最小 0 文字、最大 10,000 文字。

  • image ‐ (文字列) スケッチの Base64 イメージ。イメージのすべての側面は 64 ピクセル以上である必要があります。合計ピクセル数は 9,437,184 ピクセルを超えることはできません。イメージのアスペクト比は 1:2.5 から 2.5:1 の間でなければなりません。サポートされている形式: jpeg、png、webp。

以下のパラメータはオプションです。

  • aspect_ratio ‐ (文字列) 生成された画像のアスペクト比を制御します。このパラメータは、テキストからイメージへのリクエストにのみ有効です。デフォルトは 1:1 です。列挙型: 16:9、1:1、21:9、2:3、3:2、4:5、5:4、9:16、9:21。デフォルトは 1:1 です。

  • negative_prompt ‐ (文字列) 出力イメージに表示したくない内容を説明するテキストのぼかし。これはアドバンスド機能です。最大 10,000 文字。

  • seed ‐ (数値) 生成の「ランダム性」をガイドするために使用される特定の値。(このパラメータを省略するか、0 を渡してランダムシードを使用します)。範囲は 0~4294967294 です。デフォルトは 0 です。

  • output_format ‐ (文字列) 生成されたイメージのコンテンツタイプを切り捨てます。列挙型: jpeg、png、webp。デフォルトの png。

  • fidelity - (数値) 出力イメージのスタイルが入力イメージのスタイルとどの程度似ているか。範囲は 0~1 です。デフォルトは 0.5 です。

  • style_preset - イメージモデルを特定のスタイルに向けてガイドします。列挙型: 3d モデル、アナログフィルム、アニメーション、映像、コミックブック、デジタルアート、拡張、ファンタジーアート、等角、ラインアート、低ポリ、モデリング複合、ネオンパンク、折り紙、写真、ピクセルアート、タイルテクスチャ。

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-image-style-guide-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "wide shot of modern metropolis" } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/input.jpg" region = "us-east-1" model_id = "us.stability.stable-image-style-guide-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') params = { "image": image_base64, "prompt": "wide shot of modern metropolis" } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

次の表は、最新の大都市のワイドショットというプロンプトを使用したスタイルガイド呼び出しの入出力イメージを示しています。

Input

Output

Steven Johnson による「Abstract Painting」。CC でライセンスされる

スタイル転送を使用すると、参照スタイルイメージからターゲットイメージに視覚的特性を適用できます。スタイルガイドサービスは入力イメージからスタイル要素を抽出し、それらを使用してプロンプトに基づいて出力イメージの作成をガイドしますが、スタイル転送は元の構成を維持しながら既存のコンテンツを特別に変換します。このツールは、複数のアセット間で一貫したコンテンツを作成するのに役立ちます。

スタイル転送には、次の必須パラメータがあります。

  • init_image ‐ (文字列) スタイルを変更するサブジェクトを含む Base64 イメージ。イメージのすべての側面は 64 ピクセル以上である必要があります。合計ピクセル数は 9,437,184 ピクセルを超えることはできません。イメージのアスペクト比は 1:2.5 から 2.5:1 の間でなければなりません。サポートされている形式: jpeg、png、webp。

  • style_image ‐ (文字列) スタイルを変更するサブジェクトを含む Base64 イメージ。イメージのすべての側面は 64 ピクセル以上である必要があります。合計ピクセル数は 9,437,184 ピクセルを超えることはできません。イメージのアスペクト比は 1:2.5 から 2.5:1 の間でなければなりません。サポートされている形式: jpeg、png、webp。

以下のパラメータはオプションです。

  • prompt ‐ (文字列) 出力イメージに表示する内容。要素、色、件名を明確に定義する強力でわかりやすいプロンプトは、より良い結果につながります。特定の単語の重みを制御するには、 形式 (word:weight) を使用します。ここで、word は重みを制御する単語、weight は値です。値 0 と 1.0 は単語の強調を解除し、値 1.1 から 2 は単語の強調を解除しました。例えば、空はパリッとした (青:0.3) で、 (緑:1.8) は青と緑ですが、青よりも緑が多い空を伝えます。

  • negative_prompt ‐ (文字列) 出力イメージに表示したくない内容を説明するテキストのぼかし。これはアドバンスド機能です。最大 10,000 文字。

  • seed ‐ (数値) 生成の「ランダム性」をガイドするために使用される特定の値。(このパラメータを省略するか、0 を渡してランダムシードを使用します)。範囲は 0~4294967294 です。デフォルトは 0 です。

  • output_format ‐ (文字列) 生成されたイメージのコンテンツタイプを切り捨てます。列挙型: jpeg、png、webp。デフォルトの png。

  • composition_fidelity ‐ (数値) 出力イメージのスタイルが入力イメージのスタイルとどの程度似ているか。範囲は 0~1 です。デフォルトは 0.9 です。

  • style_strength ‐ (数値) ノイズ除去とも呼ばれ、このパラメータは style_image パラメータが生成されたイメージに与える影響を制御します。値が 0 の場合、入力と同じイメージが生成されます。値が 1 の場合、イメージを全く渡さないような動作を行います。範囲は 0~1 です。デフォルトは 1 です。

  • change_strength - (数値) 元のイメージを変更する量。範囲は 0.1~1 です。デフォルトは 0.9 です。

API
import base64 import json import requests import io import os from PIL import Image image = "./content/input.jpg" style_image = "./content/style.jpg" region = "us-east-1" model_id = "us.stability.stable-style-transfer-v1:0" url = f"https://bedrock-runtime.{region}.amazonaws.com/model/{model_id}/invoke" api_key = os.getenv("AWS_BEARER_TOKEN_BEDROCK") # https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-keys.html headers = { "Content-Type":"application/json", "Authorization":f"Bearer {api_key}" } try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') with open(style_image, "rb") as style_image_file: style_image_base64 = base64.b64encode(style_image_file.read()).decode('utf-8') params = { "init_image": image_base64, "style_image": style_image_base64, "prompt": "statue" } response = requests.request("POST", url, json=params, headers=headers) response.raise_for_status() model_response = json.loads(response.text) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)
Python
import boto3 import base64 import io import json from PIL import Image image = "./content/cat_statue_512x512.jpg" style_image = "./content/glowbot_style.jpg" region = "us-east-1" model_id = "us.stability.stable-style-transfer-v1:0" bedrock = boto3.client("bedrock-runtime", region_name=region) try: with open(image, "rb") as image_file: image_base64 = base64.b64encode(image_file.read()).decode('utf-8') with open(style_image, "rb") as style_image_file: style_image_base64 = base64.b64encode(style_image_file.read()).decode('utf-8') params = { "init_image": image_base64, "style_image": style_image_base64, "prompt": "statue" } request = json.dumps(params) response = bedrock.invoke_model(modelId=model_id, body=request) model_response = json.loads(response["body"].read()) base64_image_data = model_response["images"][0] if not base64_image_data: raise ValueError("No image data found in model response.") image_data = base64.b64decode(base64_image_data) image = Image.open(io.BytesIO(image_data)) image.save("image.png") print("Successfully saved image.") except Exception as e: print(e)

次の表は、スタイル転送呼び出しの入力イメージと出力イメージを示しています。

Input

[Style] (スタイル)

Output

Simon Berger による「Standing Woman Statue」。CC でライセンスされる

Pixabay による「Blue Bright Lights」。CC0 でライセンス