Amazon Web Services ブログ

Amazon Bedrock で Amazon Titan Image Generator v2 が利用可能に

8月6日、新機能を備えた Amazon Titan Image Generator v2 モデルAmazon Bedrock での一般提供が発表されました。Amazon Titan Image Generator v2 を使用すると、参照画像を用いた画像生成のガイド、既存のビジュアルの編集、背景の削除、画像バリエーションの生成を行うだけでなく、モデルをセキュアにカスタマイズして、ブランドスタイルやサブジェクトの一貫性を維持するようにすることもできます。この強力なツールは、ワークフローを合理化し、生産性を向上させ、クリエイティブなビジョンに命を吹き込みます。

Amazon Titan Image Generator v2 には、Amazon Titan Image Generator v1 のすべての機能に加えて、以下を含めた新機能が多数追加されています。

  • 画像コンディショニング – テキストプロンプトとともに参照画像を提供すると、ユーザー提供の参照画像のレイアウトと構造に従った出力が提供されます。
  • カラーパレットによる画像ガイダンス – テキストプロンプトとともに 16 進コードのリストを提供することで、生成される画像のカラーパレットを正確に制御します。
  • 背景の削除 – 複数のオブジェクトが含まれる画像から、背景を自動的に削除します。
  • サブジェクトの一貫性 – 生成された画像内にある特定のサブジェクト (特定の犬、靴、ハンドバッグなど) を維持するようにモデルをファインチューニングします。

Amazon Titan Image Generator v2 の新機能
Amazon Titan モデルを初めて使用する場合は、使用を開始する前に Amazon Bedrock コンソールにアクセスして、左下のペインで [モデルアクセス] を選択してください。Amazon からの最新 Amazon Titan モデルにアクセスするには、Amazon Titan Image Generator G1 v2 へのアクセスを別途リクエストしてください。

以下は、Amazon Bedrock の Amazon Titan Image Generator v2 に関する詳細です。

画像コンディショニング
画像コンディショニング機能を使用して、作品を正確かつ意図的に形作ることができます。参照画像 (つまり、コンディショニング画像) を提供することで、エッジ、オブジェクトのアウトライン、および構造要素などの特定の視覚的特性、または参照画像内にある固有の領域やオブジェクトを定義するセグメンテーションマップに着目するようにモデルに指示することができます。

AWS では、Canny エッジとセグメンテーションの 2 つのタイプの画像コンディショニングをサポートしています。

  • Canny エッジアルゴリズムは、参照画像内にある顕著なエッジを抽出するために使用され、Amazon Titan Image Generator が生成プロセスをガイドするために使用できるマップを作成します。生成したい画像の基礎を「描く」と、モデルがガイダンスに基づいて詳細部分、テクスチャ、および最終的な美的特性を追加します。
  • セグメンテーションは、さらにきめ細かなレベルの制御を実現します。参照画像を提供することで、画像内にある特定の領域またはオブジェクトを定義し、これらの定義された領域に即したコンテンツを生成するように Amazon Titan Image Generator に指示できます。キャラクター、オブジェクト、およびその他主要要素の配置とレンダリングを正確に制御できます。

以下は、画像コンディショニングを使用した生成の例です。

画像コンディショニング機能を使用するには、Amazon Bedrock APIAWS SDK、または AWS コマンドラインインターフェイス (AWS CLI) を使用して、参照画像とともに、textToImageParamscontrolModeCANNY_EDGE または SEGMENTATION を選択できます。

	"taskType": "TEXT_IMAGE",
	"textToImageParams": {
 		"text": "a cartoon deer in a fairy world.",
        "conditionImage": input_image, # Optional
        "controlMode": "CANNY_EDGE" # Optional: CANNY_EDGE | SEGMENTATION
        "controlStrength": 0.7 # Optional: weight given to the condition image.Default: 0.7
     }

AWS SDK for Python (Boto3) を使用した次の Python コード例は、画像コンディショニングを使用するために Amazon Bedrock で Amazon Titan Image Generator v2 を呼び出す方法を示しています。

import base64
import io
import json
import logging
import boto3
from PIL import Image
from botocore.exceptions import ClientError

def main():
    """
    Entrypoint for Amazon Titan Image Generator V2 example.
    """
    try:
        logging.basicConfig(level=logging.INFO,
                            format="%(levelname)s: %(message)s")

        model_id = 'amazon.titan-image-generator-v2:0'

        # Read image from file and encode it as base64 string.
        with open("/path/to/image", "rb") as image_file:
            input_image = base64.b64encode(image_file.read()).decode('utf8')

        body = json.dumps({
            "taskType": "TEXT_IMAGE",
            "textToImageParams": {
                "text": "a cartoon deer in a fairy world",
                "conditionImage": input_image,
                "controlMode": "CANNY_EDGE",
                "controlStrength": 0.7
            },
            "imageGenerationConfig": {
                "numberOfImages": 1,
                "height": 512,
                "width": 512,
                "cfgScale": 8.0
            }
        })

        image_bytes = generate_image(model_id=model_id,
                                     body=body)
        image = Image.open(io.BytesIO(image_bytes))
        image.show()

    except ClientError as err:
        message = err.response["Error"]["Message"]
        logger.error("A client error occurred: %s", message)
        print("A client error occured: " +
              format(message))
    except ImageError as err:
        logger.error(err.message)
        print(err.message)

    else:
        print(
            f"Finished generating image with Amazon Titan Image Generator V2 model {model_id}.")

def generate_image(model_id, body):
    """
    Generate an image using Amazon Titan Image Generator V2 model on demand.
    Args:
        model_id (str): The model ID to use.
        body (str) : The request body to use.
    Returns:
        image_bytes (bytes): The image generated by the model.
    """

    logger.info(
        "Generating image with Amazon Titan Image Generator V2 model %s", model_id)

    bedrock = boto3.client(service_name='bedrock-runtime')

    accept = "application/json"
    content_type = "application/json"

    response = bedrock.invoke_model(
        body=body, modelId=model_id, accept=accept, contentType=content_type
    )
    response_body = json.loads(response.get("body").read())

    base64_image = response_body.get("images")[0]
    base64_bytes = base64_image.encode('ascii')
    image_bytes = base64.b64decode(base64_bytes)

    finish_reason = response_body.get("error")

    if finish_reason is not None:
        raise ImageError(f"Image generation error.Error is {finish_reason}")

    logger.info(
        "Successfully generated image with Amazon Titan Image Generator V2 model %s", model_id)

    return image_bytes
	
class ImageError(Exception):
    "Custom exception for errors returned by Amazon Titan Image Generator V2"

    def __init__(self, message):
        self.message = message

logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)

if __name__ == "__main__":
    main()

カラーコンディショニング
ほとんどのデザイナーは、カラーブランディングガイドラインに従って画像を生成することを希望しているため、生成された画像のカラーパレットを制御したいと考えています。

Amazon Titan Image Generator v2 では、カラーパレット (カラーブランドガイドラインに従って、入力の一部として提供される 16 進色のリスト) に基づいてカラーコンディショニングされた画像を生成できます。また、参照画像を入力として提供することで (オプション)、参照画像のスタイルを継承しながら、提供された 16 進色を用いて画像を生成することもできます。

この例では、プロンプトが以下を描写しています。
a jar of salad dressing in a rustic kitchen surrounded by fresh vegetables with studio lighting (スタジオライトを使用した飾り気のないキッチンにある、新鮮な野菜が周りに置かれたサラダドレッシングの瓶)

生成された画像には、テキストプロンプトのコンテンツと、ブランドのカラーガイドラインに合わせて指定されたカラースキームの両方が反映されています。

カラーコンディショニング機能を使用するには、プロンプトおよび 16 進コードとともに、taskTypeCOLOR_GUIDED_GENERATION に設定できます。

       "taskType": "COLOR_GUIDED_GENERATION",
       "colorGuidedGenerationParam": {
             "text": "a jar of salad dressing in a rustic kitchen surrounded by fresh vegetables with studio lighting",                         
	         "colors": ['#ff8080', '#ffb280', '#ffe680', '#e5ff80'], # Optional: list of color hex codes 
             "referenceImage": input_image, #Optional
        }

背景の削除
単色の背景の上に画像を合成しようとしているか、別のシーンの上に重ねようとしているかにかかわらず、背景をクリーンかつ正確に削除する機能は、クリエイティブワークフローに欠かせないツールです。単一のステップを使用して、画像から背景を瞬時に削除できます。Amazon Titan Image Generator v2 は、複数の前景オブジェクトをインテリジェントに検出してセグメント化できるため、要素が重なり合う複雑なシーンでさえも、クリーンな分離を確実に行えます。

この例は、森の中の木に座っているイグアナの画像です。モデルはイグアナを主要オブジェクトとして識別し、森の背景を削除して、透明な背景に置き換えることができました。そうすることで、周囲にある邪魔な森がなくなり、イグアナがくっきりと浮かび上がります。

背景削除機能を使用するには、入力画像とともに、taskTypeBACKGROUND_REMOVAL に設定できます。

    "taskType": "BACKGROUND_REMOVAL",
    "backgroundRemovalParams": {
 		"image": input_image,
    }

ファインチューニングによるサブジェクトの一貫性
特定のサブジェクトを、視覚的な魅力があるシーンにシームレスに組み込むことができるようになりました。サブジェクトがブランドの製品、会社のロゴ、または家族の愛らしいペットであるかを問わず、参照画像を使用して Amazon Titan モデルをファインチューニングし、選択したサブジェクトのユニークな特徴を学ばせることができます。

モデルがファインチューニングされたら、テキストプロンプトを入力するだけで Amazon Titan Generator がサブジェクトの一貫的な描写を維持する画像を生成し、想像力に富んださまざまなコンテキスト内に自然な形で配置します。これにより、マーケティング、広告、およびビジュアルストーリーテリングの可能性の世界がさらに広がります。

例えば、ファインチューニング中に Ron the dog (犬のロン) というキャプション付きの画像を使用して、ファインチューニングされたモデルを用いた推論中に Ron the dog wearing a superhero cape (スーパーヒーローのマントを身に付けた犬のロン) をプロンプトとして提供すると、その応答としてユニークな画像が提供されます。

詳細については、AWS ドキュメントで Amazon Titan Image Generator 向けのモデル推論パラメータとコード例をご覧ください。

今すぐご利用いただけます
Amazon Titan Generator v2 モデルは、本日から米国東部 (バージニア北部) および米国西部 (オレゴン) リージョンの Amazon Bedrock で利用可能になります。今後の更新については、全リージョンのリストを確認してください。詳細については、Amazon Titan 製品ページと、Amazon Bedrock の料金ページを参照してください。

今すぐ Amazon Bedrock で Amazon Titan Image Generator v2 を試して、AWS re:Post for Amazon Bedrock 宛てに、または通常の AWS サポート連絡先を通じてフィードバックをお寄せください。

community.aws サイトにアクセスして、深く掘り下げた技術コンテンツを検索し、ビルダーコミュニティがソリューションで Amazon Bedrock を使用する方法を見出しましょう。

Channy

原文はこちらです。