Stability AI Image Services - Amazon Bedrock

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

Stability AI Image Services

Amazon Bedrock で Stability AI Image Services を使用すると、専門的なクリエイティブワークフローを加速するために設計された 13 の特殊な画像編集ツールにアクセスできます。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 の編集または制御をサブスクライブすると、利用可能な 13 個の Stability AI Image Services すべてに自動的に登録されます。

リクエストとレスポンス

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

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

Stability AI Image Services を使用して、InvokeModel を呼び出す場合は、以下のような JSON オブジェクトを、body フィールドに入力します。

{ '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 を参照してください。

アップスケール

次のセクションでは、アップスケールの Stability AI Image Services について説明します。

Creative Upscale は 64 x 64 ~ 1 メガピクセルのイメージを取得し、4K 解像度にスケールアップします。このサービスでは、画質を維持して向上させながら、イメージを 20~40 回スケールアップできます。Creative Upscale は、非常にデグレードしたイメージに最も適しており、1 メガピクセル以上の写真には適していません。

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

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

  • image ‐ (文字列) スケールアップする Base64 イメージ。画像のすべての辺を 64 ピクセル以上にする必要があります。合計ピクセル数は 4,096~1,048,576 ピクセルである必要があります。サポートされている形式: jpeg、png、webp。

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

  • 創造性 ‐ (数値) イメージをアップスケーリングするときにモデルがどの程度創造的であるかを示します。値を大きくすると、アップスケーリング中にイメージに詳細が追加されます。範囲は 0.1~0.5 です。デフォルト 0.3

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

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

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

  • style_preset - 画像モデルを特定のスタイルに導きます。列挙型: 3d-model、analog-film、anime、cinematic、comic-book、digital-art、enhance、fantasy-art、isometric、line-art、low-poly、modeling-compound、neon-punk、origami、photographic、pixel-art、tile-texture。

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-creative-upscale-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": "This dreamlike digital art captures a vibrant, kaleidoscopic Big Ben in London", "creativity": 0.30 } 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-creative-upscale-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": "This dreamlike digital art captures a vibrant, kaleidoscopic Big Ben in London", "creativity": 0.30 } 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

Willemijn Doelman による「Iconic Big Ben Tower Against Cloudy Sky」。CC でライセンス付与

Conservative Upscale は 64 x 64 ~ 1 メガピクセルの画像を取得し、4K 解像度にスケールアップします。このサービスは、すべての側面を維持しながら、イメージを 20~40 倍アップスケールできます。保守的なアップスケールはイメージへの変更を最小限に抑えるため、イメージを再考するために使用しないでください。

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

  • 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。

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

  • 創造性 ‐ (数値) イメージをアップスケーリングするときにモデルがどの程度創造的であるかを示します。値を大きくすると、アップスケーリング中にイメージに詳細が追加されます。範囲は 0.1~0.5 です。デフォルト 0.35

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

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

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

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-conservative-upscale-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": "This dreamlike digital art captures a vibrant, kaleidoscopic Big Ben in London", "creativity": 0.30 } 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-conservative-upscale-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": "This dreamlike digital art captures a vibrant, kaleidoscopic Big Ben in London", "creativity": 0.30 } 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

Willemijn Doelman による「Iconic Big Ben Tower Against Cloudy Sky」。CC でライセンス付与

Fast Upscale は、予測 AI と生成 AI を使用して画像の解像度を 4 倍向上させます。この軽量で高速なサービスは、圧縮されたイメージの品質を高め、ソーシャルメディアの投稿やその他のアプリケーションに適しています。

高速アップスケールには、次の必須パラメータがあります。

  • image ‐ (文字列) スケールアップする Base64 イメージ。幅は 32~1,536 ピクセルである必要があります。高さは 32~1,536 ピクセルである必要があります。合計ピクセル数は 1,024~1,048,576 ピクセルである必要があります。サポートされている形式: 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.jpg" region = "us-east-1" model_id = "us.stability.stable-fast-upscale-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.jpg" region = "us-east-1" model_id = "us.stability.stable-fast-upscale-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

Willemijn Doelman による「Iconic Big Ben Tower Against Cloudy Sky」。CC でライセンス付与

編集

次のセクションでは、Stability AI Image Services の編集について説明します。

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

インペイントの必須パラメータは次のとおりです。

  • 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-model、analog-film、anime、cinematic、comic-book、digital-art、enhance、fantasy-art、isometric、line-art、low-poly、modeling-compound、neon-punk、origami、photographic、pixel-art、tile-texture。

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

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

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

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

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

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

  • 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 でライセンス付与

Outpaint は、任意の方向にスペースを埋めるために、イメージに追加のコンテンツを挿入します。Outpaint サービスは、イメージ内のコンテンツを拡張する他の自動または手動の試みと比較して、元のイメージが編集されたことを示す兆候を最小限に抑えます。

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

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

    注記

    少なくとも 1 つのアウトペイント方向 (左、右、上、下) に 0 以外の値を指定する必要があります。最高品質の結果を得るには、アウトペイント方向を選択するときに、元のイメージの構成とコンテンツを考慮してください。

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

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

  • style_preset — (文字列) 画像モデルを特定のスタイルに導きます。列挙型: 3d-model、analog-film、anime、cinematic、comic-book、digital-art、enhance、fantasy-art、isometric、line-art、low-poly、modeling-compound、neon-punk、origami、photographic、pixel-art、tile-texture。

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

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

  • 創造性 ‐ (数値) イメージをアウトペイントするときにモデルがどの程度創造的であるかを示します。値を大きくすると、アウトペイント中によりクリエイティブなコンテンツがイメージに追加されます。範囲は 0.1~1.0 です。デフォルトは 0.5 です。

  • left ‐ (整数) イメージの左側にアウトペイントするピクセル数。少なくとも 1 つのアウトペインティング方向には、ゼロ以外の値を指定する必要があります。範囲は 0~2000 です。Detault 0。

  • right ‐ (整数) イメージの右側にアウトペイントするピクセル数。少なくとも 1 つのアウトペインティング方向には、ゼロ以外の値を指定する必要があります。範囲は 0~2000 です。Detault 0。

  • up ‐ (整数) イメージの上部にアウトペイントするピクセル数。少なくとも 1 つのアウトペインティング方向には、ゼロ以外の値を指定する必要があります。範囲は 0~2000 です。Detault 0。

  • down ‐ (整数) イメージの下部にアウトペイントするピクセル数。少なくとも 1 つのアウトペインティング方向には、ゼロ以外の値を指定する必要があります。範囲は 0~2000 です。Detault 0。

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-outpaint-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, "left": 512, "right": 512, "up": 200, "down": 100 } 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-outpaint-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, "left": 512, "right": 512, "up": 200, "down": 100 } 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)

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

Input

Output

Willemijn Doelman による「Iconic Big Ben Tower Against Cloudy Sky」。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。

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

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

  • style_preset — (文字列) 画像モデルを特定のスタイルに導きます。列挙型: 3d-model、analog-film、anime、cinematic、comic-book、digital-art、enhance、fantasy-art、isometric、line-art、low-poly、modeling-compound、neon-punk、origami、photographic、pixel-art、tile-texture。

  • 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 でライセンス付与

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

検索および置換には、次の必須パラメータがあります。

  • 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-model、analog-film、anime、cinematic、comic-book、digital-art、enhance、fantasy-art、isometric、line-art、low-poly、modeling-compound、neon-punk、origami、photographic、pixel-art、tile-texture。

  • 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)

次の表は、「ジャケット」というプロンプトを使用した検索および置換オペレーションの入力画像と出力画像を示しています。

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 番目の画像または画像パラメータのアルファチャネルを介して、インペインティングプロセスの強度をピクセル単位で制御します。

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

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

  • 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 によって生成された「学生用デスク」。Sanwal Yousaf によるプロンプトと編集。CC BY 4.0 でライセンス付与

背景の削除を使用すると、被写体を背景から正確に分離できます。

背景の削除には、次の必須パラメータがあります。

  • 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 のコントロールについて説明します。

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

コントロールスケッチには、次の必須パラメータがあります。

  • 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-model、analog-film、anime、cinematic、comic-book、digital-art、enhance、fantasy-art、isometric、line-art、low-poly、modeling-compound、neon-punk、origami、photographic、pixel-art、tile-texture。

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-model、analog-film、anime、cinematic、comic-book、digital-art、enhance、fantasy-art、isometric、line-art、low-poly、modeling-compound、neon-punk、origami、photographic、pixel-art、tile-texture。

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-model、analog-film、anime、cinematic、comic-book、digital-art、enhance、fantasy-art、isometric、line-art、low-poly、modeling-compound、neon-punk、origami、photographic、pixel-art、tile-texture。

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 による「抽象画」。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 による「立っている女性の像」。CC でライセンス付与

Pixabay による「青くて明るい光」。CC0 でライセンス付与