Titan Image Generator 水印检测

发布时间:2024 年 5 月 6 日
机器学习
生成式 AI
视频
教程
亚马逊云科技
Olawale Olaleye
亚马逊云科技使用经验
100 - 初级
完成所需时间
10 分钟
上次更新时间
2024 年 5 月 6 日
相关产品

Titan Image Generator 水印检测功能可以检查水印是否存在,并帮助您确认图像是否是 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)

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

代码如下。新的即时自定义功能可通过 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 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 生成的。下面来看看它的工作原理。

在本次演示中,展示绿色鬣蜥图像是否确实是由该模型生成的。

定义导入,设置 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、新的即时自定义功能和 Amazon Bedrock 控制台中的水印检测功能在 AWS 区域美国东部(弗吉尼亚州北部)和美国西部(俄勒冈州)可用。查看 完整区域列表 以了解将来的更新。Amazon Bedrock 中的新 DetectGeneratedContent API 公开预览版在 AWS 区域美国东部(弗吉尼亚州北部)和美国西部(俄勒冈州)可用。

更多资源

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