Amazon Web Services ブログ

Amazon Titan イメージジェネレータとウォーターマーク検出 API が Amazon Bedrock で利用できるようになりました

AWS re:Invent 2023 では、 Amazon Titan イメージジェネレータ のプレビューを発表しました。これは、生成 AI (Generative AI) の基盤モデル (FM) で、英語の自然言語プロンプトを使用してリアルでスタジオ品質の画像をすばやく作成および調整できます。

Amazon Titan イメージジェネレータが Amazon Bedrock で一般的に利用できるようになったことを嬉しく思います。これにより、画像の即時カスタマイズなど、新しい画像生成および画像編集機能を使用して、生成 AI アプリケーションを簡単に構築およびスケールできるようになりました。

前回の記事で、Titan イメージジェネレータによって生成されたすべての画像には、デフォルトで目に見えないウォーターマークが含まれていることにも触れました。これは、AI によって生成された画像を識別するメカニズムを提供することにより、誤った情報の拡散を減らすのに役立つように設計されています。

Titan イメージジェネレータのウォーターマーク検出が Amazon Bedrock コンソールで一般的に利用できるようになったことを発表できることを嬉しく思います。本日は、Amazon Bedrock に新しい DetectGeneratedContent API (プレビュー) も導入します。この API は、このウォーターマークの存在をチェックし、画像が Titan 画像ジェネレーターによって生成されたかどうかを確認するのに役立ちます。

これらの新機能をどのように使い始めるかを説明しましょう。

Amazon Titan イメージジェネレータを使用してイメージを瞬時にカスタマイズ
最大 5 つの参照画像を提供することで、被写体の新しい画像を生成できるようになりました。被写体の主な特徴はそのままに、さまざまなシーンで被写体を作成したり、参照画像から新しい画像にスタイルを転送したり、複数の参照画像のスタイルを組み合わせたりすることができます。これらはすべて、追加のプロンプトエンジニアリングやモデルの微調整なしに行うことができます。

このデモでは、「バナナを食べるオウム」の画像を作成するように Titan イメージジェネレータに依頼します。 最初の試みでは、参照画像を提供せずに Titan イメージジェネレータを使用してこの新しい画像を作成します。

次のコード例では、AWS SDK for Python (Boto3) を使用して Amazon Bedrock を操作します。C#/.NET、Go、Java、PHP のその他のコード例については、 Bedrock ユーザーガイドをご覧ください。

import boto3
import json

bedrock_runtime = boto3.client(service_name="bedrock-runtime")

body = json.dumps(
    {
        "taskType": "TEXT_IMAGE",
        "textToImageParams": {
            "text": "parrot eating a banana",  
        },
        "imageGenerationConfig": {
            "numberOfImages": 1,  
            "quality": "premium",
            "height": 768,
            "width": 1280,
            "cfgScale": 10,
            "seed": 42
        }
    }
)
response = bedrock_runtime.invoke_model(
    body=body,
    modelId="amazon.titan-image-generator-v1"
    accept="application/json",
    contentType="application/json"
)

生成されたイメージは、次のコードを使用して表示できます。

import io
import base64
from PIL import Image

response_body = json.loads(response.get("body").read())

images = [
    Image.open(io.BytesIO(base64.b64decode(base64_image)))
    for base64_image in response_body.get("images")
]

for img in images:
    display(img)

生成された画像は次のとおりです。

Amazon Titan イメージジェネレータで生成されたバナナを食べるオウムの画像

次に、同じプロンプトで新しいインスタントイメージカスタマイズ機能を使用しますが、今度は次の 2 つの参照イメージも提供します。比較しやすいように、画像のサイズを変更し、キャプションを追加し、並べてプロットしました。

Amazon Titan イメージジェネレータの参照イメージ

これがコードです…新しいインスタントカスタマイズは、 IMAGE_VARIATION タスクで実行できます。

# Import reference images
image_path_1 = "parrot-cartoon.png"
image_path_2 = "bird-sketch.png"

with open(image_path_1, "rb") as image_file:
    input_image_1 = base64.b64encode(image_file.read()).decode("utf8")

with open(image_path_2, "rb") as image_file:
    input_image_2 = base64.b64encode(image_file.read()).decode("utf8")

# ImageVariationParams options:
#   text: Prompt to guide the model on how to generate variations
#   images: Base64 string representation of a reference image, up to 5 images are supported
#   similarityStrength: Parameter you can tune to control similarity with reference image(s)

body = json.dumps(
    {
        "taskType": "IMAGE_VARIATION",
        "imageVariationParams": {
            "text": "parrot eating a banana",  # Required
            "images": [input_image_1, input_image_2],  # Required 1 to 5 images
            "similarityStrength": 0.7,  # Range: 0.2 to 1.0
        },
        "imageGenerationConfig": {
            "numberOfImages": 1,
            "quality": "premium",
            "height": 768,
            "width": 1280,
            "cfgScale": 10,
            "seed": 42
        }
    }
)

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

また、生成された画像のサイズを変更し、キャプションを追加し、最初に生成された画像と並べてプロットしました。Amazon Titan イメージジェネレータインスタンスのカスタマイズ結果

インスタント画像カスタマイズ機能を使用して生成された 2 番目の画像のオウムが、提供された参照画像の組み合わせとどのように似ているかがわかります。

Amazon Titan イメージジェネレータのウォーターマーク検出
すべての Amazon Titan FM は、責任ある AI を念頭に置いて構築されています。データから有害なコンテンツを検出して削除し、不適切なユーザー入力を拒否し、モデル出力をフィルタリングします。コンテンツクリエーターが AI を使用してリアルな画像を作成する場合、このテクノロジーの責任ある開発を促進し、誤った情報の拡散を減らすことが重要です。そのため、Titan イメージジェネレータによって生成されるすべての画像には、デフォルトで不可視のウォーターマークが含まれています。ウォーターマーク検出は革新的なテクノロジーであり、Amazon Web Services(AWS)は、AI 画像出力用の組み込みウォーターマークを広くリリースした最初の主要なクラウドプロバイダーの1つです。

Titan イメージジェネレータの新しいウォーターマーク検出機能は、Amazon Titan によって生成された画像を識別できるメカニズムです。これらのウォーターマークは改ざんされにくいように設計されており、これらの機能が進化し続けるにつれて、AI が生成したコンテンツの透明性を高めるのに役立ちます。

コンソールを使用したウォーターマーク検出
ウォーターマーク検出は、通常 Amazon Bedrock コンソールで利用できます。画像をアップロードして、基本モデルやカスタマイズバージョンで生成された画像を含め、Titan イメージジェネレータで作成された画像に埋め込まれた透かしを検出できます。Titan イメージジェネレータで作成されていない画像をアップロードすると、透かしが検出されなかったことがモデルに表示されます。

ウォーターマーク検出機能には信頼スコアも付属しています。信頼スコアは、ウォーターマーク検出の信頼度を表します。場合によっては、元の画像が変更されていると、検出の信頼性が低くなることがあります。この新機能により、コンテンツ作成者、報道機関、リスクアナリスト、不正検知チームなどは、誤解を招くような AI 生成コンテンツをより適切に特定して軽減できるようになり、組織全体での透明性と責任ある AI 導入が促進されます。

API を使用したウォーターマーク検出 (プレビュー)
コンソールを使用した透かしの検出に加えて、Amazon Bedrock に新しい DetectGeneratedContent API (プレビュー) を導入します。この API は、この透かしの存在をチェックし、画像が Titan イメージジェネレータによって生成されたかどうかを確認するのに役立ちます。これがどのように機能するか見てみましょう。

このデモでは、 Titan イメージジェネレータのプレビュー投稿で見せた緑のイグアナの画像が実際にモデルによって生成されたかどうかを確認しましょう

Amazon Titan イメージジェネレータで生成されたグリーンイグアナ

インポートを定義し、Amazon Bedrock boto3 ランタイムクライアントをセットアップし、イメージを base64 でエンコードします。次に、基盤モデルを指定し、エンコードされたイメージを提供して、 DetectGeneratedContent API を呼び出します。

import boto3
import json
import base64

bedrock_runtime = boto3.client(service_name="bedrock-runtime")

image_path = "green-iguana.png"

with open(image_path, "rb") as image_file:
    input_image_iguana = image_file.read()

response = bedrock_runtime.detect_generated_content(
    foundationModelId = "amazon.titan-image-generator-v1",
    content = {
        "imageContent": { "bytes": input_image_iguana }
    }
)

応答を確認しましょう。

response.get("detectionResult")
'GENERATED'
response.get("confidenceLevel")
'HIGH'

信頼度が HIGH で生成された応答は、Amazon Bedrock が Titan イメージジェネレーターによって生成されたウォーターマークを検出したことを確認するものです。

それでは、Amazon Bedrock のステーブル・ディフュージョン XL 1.0を使用して生成した別の画像を確認してみましょう。この場合は「夕日に面したミーアキャット」です。

夕日に面したミーアキャット

今度はミーアキャットの画像で API を再度呼び出します。

image_path = "meerkat.png"

with open(image_path, "rb") as image_file:
    input_image_meerkat = image_file.read()

response = bedrock_runtime.detect_generated_content(
    foundationModelId = "amazon.titan-image-generator-v1",
    content = {
        "imageContent": { "bytes": input_image_meerkat }
    }
)

response.get("detectionResult")
'NOT_GENERATED'

実際、 NOT_GENERATED という応答を見ると、Titan イメージジェネレータによるウォーターマークは検出されなかったため、画像はモデルによって生成されなかった可能性が高いことがわかります。

Amazon Titan イメージジェネレーターとウォーターマーク検出をコンソールで使用する
これは、同僚の Nirbhay Agarwal がまとめた、Titan Image Generator と Amazon Bedrock コンソールの新しいウォーターマーク検出機能の使い始める方法の短いデモです。

利用可能なリージョン
Amazon Titan イメージジェネレータ、新しいインスタントカスタマイズ機能、Amazon Bedrock コンソールのウォーターマーク検出は、本日、米国東部 (バージニア北部) と米国西部 (オレゴン) の AWS リージョンで利用できるようになりました。今後の更新については、地域リスト全体を確認してください。Amazon Bedrock の新しい DetectGeneratedContent API は、本日、米国東部(バージニア北部)と米国西部(オレゴン)の AWS リージョンでパブリックプレビューが可能になりました。

Amazon Titan イメージ・ジェネレーター、PartyRock でもご利用いただけるようになりました
Titan イメージジェネレーターは、Amazon Bedrock のプレイグラウンドである PartyRock でも利用できるようになりました。PartyRock は、クレジットカードを必要としない、コード不要の AI を活用したアプリ構築体験を提供します。PartyRock を使用すると、 Stability AI と Amazon の画像生成モデルを選択することで、数秒で画像を生成するアプリを作成できます。

その他リソース:
Amazon Titan ファミリーのモデルについて詳しくは、 Amazon Titan 製品ページをご覧ください。 価格の詳細については、 Amazon Bedrock の料金表をご覧ください

PartyRock で Amazon Titan イメージジェネレーターを試してみたり、 Amazon Bedrock コンソールでモデルの高度なイメージ生成および編集機能を試してみてください。フィードバックは、AWS re:Post for Amazon Bedrock にご送信いただくか、または通常の AWS の担当者を通じてお寄せください。

より詳細な技術コンテンツや生成 AI Builder コミュニティへの参加については、community.aws の生成 AI スペースをご覧ください。

– Antje

原文はこちらです。