亚马逊AWS官方博客

Amazon Titan 图像生成器 v2 现已在 Amazon Bedrock 中推出

今天,我们宣布 Amazon Titan 图像生成器 v2 模型正式推出,该模型在 Amazon Bedrock 中具有新功能。借助 Amazon Titan 图像生成器 v2,您可以使用参考图像指导图像创作、编辑现有视觉效果、移除背景、生成图像变体,以及安全地自定义模型以保持品牌风格和主题的一致性。这个强大的工具可以简化工作流,提高工作效率,并将创造性愿景变为现实。

除了 Amazon Titan 图像生成器 v1 的所有功能外,Amazon Titan 图像生成器 v2 还带来了许多新功能,包括:

  • 图像调节 – 提供参考图像和文本提示,使输出遵循用户所提供参考的布局和结构。
  • 使用调色板进行图像指导 – 通过提供十六进制代码列表和文本提示,精确控制所生成图像的调色板。
  • 背景移除 – 自动从包含多个对象的图像中移除背景。
  • 主题一致性 – 微调模型以保留所生成图像中的特定主题(例如,特定的狗、鞋子或手提包)。

Amazon Titan 图像生成器 v2 的新功能
开始使用之前,如果您是第一次使用 Amazon Titan 模型,请前往 Amazon Bedrock 控制台,然后在左下方窗格中选择模型访问权限。要从 Amazon 访问最新的 Amazon Titan 模型,请单独请求 Amazon Titan 图像生成器 G1 v2 的访问权限。

以下是 Amazon Bedrock 中的 Amazon Titan 图像生成器 v2 的详细信息:

图像调节
您可以使用图像调节功能精确而有意地塑造您的作品。通过提供参考图像(即调节图像),您可以指示模型关注特定的视觉特征,例如边缘、对象轮廓和结构元素,或定义参考图像中不同区域和对象的分割图。

我们支持两种类型的图像调节:Canny 边缘和分割。

  • Canny 边缘算法用于提取参考图像中的突出边缘,创建地图,然后 Amazon Titan 图像生成器可用来指导生成过程。您可以“绘制”所需图像的基础,然后模型将根据您的指导填写详细信息、纹理和最终美感。
  • 分割提供更精细的控制级别。通过提供参考图像,您可以在图像中定义特定的区域或对象,并指示 Amazon Titan 图像生成器生成与这些定义区域一致的内容。您可以精确控制角色、对象和其他关键元素的放置和渲染。

以下是使用图像调节的生成示例。

要使用图像调节功能,您可以使用 Amazon Bedrock APIAWS SDKAWS 命令行界面(AWS CLI),并通过参考图像为 textToImageParamscontrolMode 选择 CANNY_EDGESEGMENTATION

	"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
     }

以下使用适用于 Python 的 Amazon SDK(Boto3)的 Python 代码示例显示了如何在 Amazon Bedrock 上调用 Amazon Titan 图像生成器 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 图像生成器 v2,您可以根据调色板生成经过颜色调节的图像,调色板是根据颜色品牌指南作为输入的一部分提供的十六进制颜色列表。您还可以提供参考图像作为输入(可选),以生成具有所提供十六进制颜色的图像,同时继承参考图像的样式。

在此示例中,提示描述了:
在乡村厨房里放一罐沙拉酱,周围环绕着带有工作室照明的新鲜蔬菜

生成的图像既反映了文字提示的内容,也反映了指定的颜色方案,以符合品牌的颜色指南。

要使用颜色调节功能,您可以使用提示和十六进制代码将 taskType 设置为 COLOR_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 图像生成器 v2 可以智能地检测并分割多个前景对象,从而确保即使是具有重叠元素的复杂场景也能被干净地隔离。

该示例显示了一只鬣蜥坐在森林中树上的图像。该模型能够将鬣蜥识别为主要对象并移除森林背景,将其替换为透明背景。这样可以让鬣蜥清晰可见,周围没有分散注意力的森林。

要使用背景移除功能,可以在输入图像中将 taskType 设置为 BACKGROUND_REMOVAL

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

通过微调保持主题一致性
现在,您可以将特定主题无缝整合到视觉上引人入胜的场景中。无论是品牌的产品、公司徽标还是心爱的家庭宠物,您都可以使用参考图像微调 Amazon Titan 模型,了解所选主题的独特特征。

对模型进行微调后,您只需提供文本提示,Amazon Titan 生成器就会生成保持主题描述一致性的图像,将其自然地放置在多样化、富有想象力的背景中。这为营销、广告和视觉故事讲述开辟了一个充满可能性的世界。

例如,在微调期间,您可以使用标题为 Ron the dog 的图像,在推理微调模型时给出 Ron the dog wearing a superhero cape 的提示,然后得到一张独特的图像作为响应。

要了解更多信息,请访问 AWS 文档中的 Amazon Titan 图像生成器的模型推理参数和代码示例

现已推出
Amazon Titan 生成器 v2 模型现已在美国东部(弗吉尼亚州北部)和美国西部(俄勒冈州)区域的 Amazon Bedrock 中推出。查看完整区域列表以了解将来的更新。要了解更多信息,请查看 Amazon Titan 产品页面Amazon Bedrock 定价页面。

立即在 Amazon Bedrock 中试用 Amazon Titan 图像生成器 v2,然后将反馈发送至 Amazon Bedrock AWS re:Post 或通过您常用的 AWS Support 联系方式发送。

请访问我们的 community.aws 网站,查找深入的技术内容,并了解我们的构建者社区如何在其解决方案中使用 Amazon Bedrock。

Channy


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您了解行业前沿技术和发展海外业务选择推介该服务。