[速報] Amazon Titan から 画像の生成・編集が可能な Amazon Titan Image Generator のプレビューでの提供が発表されました #AWSreInvent

画像の生成・編集が可能な Amazon Titan Image Generator のプレビュー提供が発表されました
2023.11.30

こんにちは、AWS事業本部の森田です。

本日、Swami Sivasubramanian氏のキーノートで Amazon Titan Image Generator のプレビューでの提供が発表されました。

Amazon Titan Image Generatorとは

Amazon Titan Image Generator は、Amazon Titan 製の画像生成モデルです。

Amazon Titan Image Generator へテキストプロンプトを入力することで、プロンプトに応じた画像の生成を行います。

さらに、独自のデータを使用してモデルの fine-tuning が可能なため、ブランドガイドラインといった詳細な要件が求められる画像に対しても生成できるようになります。

Amazon Titan Image Generator によって生成された画像には、目に見えない透かしが含まれており、誤った情報の拡散を軽減するように設計されています。

また、 Amazon Titan Image Generator では、画像生成と合わせて、画像編集機能も利用可能です。

画像編集機能では、画像とテキストプロンプトを入力することで、テキストプロンプトに従った編集を画像に対して行うことが可能となります。

実際に試してみた

利用可能なリージョン

現在は、以下のリージョンでプレビューで利用可能です。

  • バージニア北部(us-east-1)
  • オレゴン(us-west-1)

Model access

まずは、Model access から Titan Image Generator G1 が利用できるように有効化します。

Playground で試してみる

Playground であれば、すぐにモデルを試すことが可能です。

Playgrounds → Image から Select model でモデルの選択を行います。

すると、以下のような画面が開きます。

Configurations として、以下の設定ができます。

  • Mode
    • 画像生成または、画像編集の選択
  • Negative Prompt
    • モデルに生成を行って欲しくない情報(例:漫画や暴力など)
  • Reference Image
    • 画像を生成・編集する場合に参考にする画像
  • Response Image
    • 生成する画像の設定(クオリティ、サイズなど)
  • Advanced Configurations
    • モデルに渡す推論パラメータ

画像生成

Configurationsは、Mode を Generate(画像生成) でテキストを white beautiful cat(白い美しい猫) として生成した画像が以下となります。

期待した通り、白い美しい猫の画像が生成されました!

画像編集

今度は、先ほどの生成した画像の編集をやってみます。

Configurationsは以下のように設定します。

  • Mode
    • Edit(画像編集)
  • Text
    • black hair cat

また、以下のように、編集する箇所をバウンディングボックスで選択します。

生成した画像が以下となります。

耳が若干おかしいですが、毛の色が白から黒に変更されております。

Python SDK で試してみる

画像生成

generate_img.py

import boto3
import json
import base64
from PIL import Image
from io import BytesIO

bedrock_runtime = boto3.client(
    service_name="bedrock-runtime",
    region_name="us-east-1"
)
# 生成する画像の説明
text = "black dog"
image_num = 1

body = json.dumps(
    {
        "taskType": "TEXT_IMAGE",
        "textToImageParams": {
            "text": text,   # Required
#           "negativeText": "<text>"  # Optional
        },
        "imageGenerationConfig": {
            "numberOfImages": image_num,   # Range: 1 to 5 
            "quality": "premium",  # Options: standard or premium
            "height": 768,         # Supported height list in the docs 
            "width": 1280,         # Supported width list in the docs
            "cfgScale": 7.5,       # Range: 1.0 (exclusive) to 10.0
            "seed": 42             # Range: 0 to 214783647
        }
    }
)

response = bedrock_runtime.invoke_model(
    body=body, 
    modelId="amazon.titan-image-generator-v1",
    accept="application/json", 
    contentType="application/json"
)


response_body = json.loads(response.get("body").read())
images = [Image.open(BytesIO(base64.b64decode(base64_image))) for base64_image in response_body.get("images")]

for idx, img in enumerate(images):
    img.save(f"{text}_{idx}.png", quality=100)

上記実行後、以下が保存された画像となります。

最後に

Amazon Titan でもついに画像生成モデルが発表されました!!

昨日のキーノートの中でもあがった responsible use of AI として目に見えない透かしが含まれていたりと、実際に利用するユーザのことまでを考えている設計となっており、とても良いサービスだと感じました。

まだ、プレビューでの提供ですが、今後のGAが待ち遠しいですね。