亚马逊AWS官方博客

Amazon Titan Image Generator 和水印检测 API 现已在 Amazon Bedrock 中推出



在 2023 年 AWS re:Invent 期间,我们宣布推出 Amazon Titan Image Generator 的预览版。Amazon Titan Image Generator 是一种生成式人工智能(生成式 AI)基础模型(FM),让您可以通过英语自然语言提示来快速创建和优化真实的、工作室质量的图像。

我很高兴地告诉大家,Amazon Titan Image Generator 现在已在 Amazon Bedrock 中正式推出,使您能够轻松构建和扩展具有新图像生成和图像编辑功能(包括即时自定义图像)的生成式人工智能应用程序。

之前的文章中,我还提到,默认情况下,Titan Image Generator 生成的所有图像都包含一个隐形水印,该水印旨在通过提供一种识别人工智能生成的图像的机制来帮助减少错误信息的传播。

我很高兴地宣布,Titan Image Generator 水印检测功能现已在 Amazon Bedrock 控制台中正式推出。今天,我们还在 Amazon Bedrock 中推出了新的 DetectGeneratedContent API(预览版),它可以检查该水印是否存在,并帮助您确认图像是否是 Titan Image Generator 生成的。

下面,我将展示如何开始使用这些新功能。

使用 Amazon Titan Image Generator 即时自定义图像
现在,您可以通过提供最多五张参考图像来生成某个主题的新图像。您可以在不同的场景中创建主题,同时保留其主要特征,将参考图像的风格转移到新图像,或者混合多个参考图像的风格。所有这些都可以在不对模型进行额外的提示工程设计或微调的情况下完成。

在本次演示中,我提示 Titan Image Generator 创建一张“parrot eating a banana”(鹦鹉吃香蕉)的图像。 在第一次尝试中,我使用 Titan Image Generator 在没有提供参考图像的情况下创建这张新图像。

注意:在以下代码示例中,我将使用适用于 Python 的 Amazon SDK(Boto3)与 Amazon Bedrock 进行交互。您可以在 Bedrock 用户指南中找到 C#/.NET、Go、Java 和 PHP 的其他代码示例

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 Image Generator 生成的鹦鹉吃香蕉的图像

然后,我使用新的即时图像自定义功能以及相同的提示重新生成图像,并且这次还提供了以下两张参考图像。为了便于比较,我调整了图像的大小,添加了标题,并将它们并排绘制。

向 Amazon Titan Image Generator 提供的参考图像

代码如下。新的即时自定义功能可通过 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 Image Generator 实例自定义结果

您可以看到使用即时图像自定义功能生成的第二张图像中的鹦鹉在风格上与提供的参考图像的组合有何相似之处。

Amazon Titan Image Generator 水印检测
所有 Amazon Titan FM 在构建时都会考虑到负责任的人工智能。它们会检测并删除数据中的有害内容,拒绝不当的用户输入,并过滤模型输出。当内容创作者使用人工智能创建逼真的图像时,促进这项技术负责任发展并减少错误信息传播非常重要。这就是为什么 Titan Image Generator 生成的所有图像在默认情况下都包含隐形水印的原因。水印检测是一项创新技术,Amazon Web Services(AWS)是首批广泛发布人工智能图像输出内置水印的主要云提供商之一。

Titan Image Generator 的全新水印检测功能是一种机制,让您能够识别 Amazon Titan 生成的图像。这些水印旨在防篡改,随着这些功能的不断发展,有助于提高人工智能生成内容的透明度。

使用控制台检测水印
通常可在 Amazon Bedrock 控制台中使用水印检测功能。您可以上传图像来检测 Titan Image Generator 创建的图像中嵌入的水印,包括由基础模型和任何自定义版本生成的水印。如果您上传的图像不是 Titan Image Generator 创建的,则模型将指示未检测到水印。

水印检测功能还带有置信度分数。置信度分数表示水印检测的可信度。在某些情况下,如果原始图像经过修改,则检测的置信度可能会较低。这项新功能使内容创作者、新闻机构、风险分析师、欺诈检测团队和其他人能够更好地识别和缓解人工智能生成的误导性内容,提高透明度,促进组织间负责任的人工智能部署。

使用 API 进行水印检测(预览版)
除了使用控制台检测水印外,我们还在 Amazon Bedrock 中推出了新的 DetectGeneratedContent API(预览版),用于检查该水印是否存在,并帮助您确认图像是否是 Titan Image Generator 生成的。下面来看看它的工作原理。

在本次演示中,让我们检查一下我在 Titan Image Generator 预览版帖子中展示的绿色鬣蜥图像是否确实是由该模型生成的。

由 Amazon Titan Image Generator 生成的绿鬣蜥图像

我定义导入,设置 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'

GENERATED 且置信度为 HIGH 的响应确认 Amazon Bedrock 检测到了 Titan Image Generator 生成的水印。

现在,让我们来看看我在 Amazon Bedrock 上使用 Stable Diffusion XL 1.0 生成的另一张图像。在本例中,使用的是“meerkat facing the sunset”(面对日落的猫鼬)。

面对日落的猫鼬

我再次调用 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 Image Generator 的水印,因此,该图像很可能不是由该模型生成的。

在控制台中使用 Amazon Titan Image Generator 和水印检测功能
以下是我的同事 Nirbhay Agarwal 整理的关于如何开始使用 Titan Image Generator 和 Amazon Bedrock 控制台中的全新水印检测功能的简短演示。

可用性
Amazon Titan Image Generator、新的即时自定义功能和 Amazon Bedrock 控制台中的水印检测功能现已在 AWS 区域美国东部(弗吉尼亚州北部)和美国西部(俄勒冈州)推出。查看完整区域列表以了解将来的更新。Amazon Bedrock 中的新 DetectGeneratedContent API 现已在 AWS 区域美国东部(弗吉尼亚州北部)和美国西部(俄勒冈州)推出公开预览版。

Amazon Titan Image Generator 现已在 PartyRock 中推出
Titan Image Generator 现已在 Amazon Bedrock 操场 PartyRock 中推出。PartyRock 为您提供了不需要信用卡的无代码,AI 驱动的应用程序构建体验。您可以使用 PartyRock 创建应用程序,从 Stability AIAmazon 的一系列图像生成模型中选择图像,从而生成图像。

更多资源
要了解有关 Amazon Titan 系列模型的更多信息,请访问 Amazon Titan 产品页面。 有关定价的详细信息,请查看 Amazon Bedrock 定价

PartyRock 中试用 Amazon Titan Image Generator,或者在 Amazon Bedrock 控制台中探索该模型的高级图像生成和编辑功能。请将反馈发送至 AWS re:Post for Amazon Bedrock 或通过您通常使用的 AWS Support 联系方式发送反馈。

要深入了解技术内容并与生成式人工智能生成器社区互动,请访问我们的生成式人工智能空间(网址为 community.aws)。

– Antje