释放创造力:如何利用生成式人工智能和Amazon SageMaker帮助企业在AWS上为营销活动生成广告创意

利用生成式人工智能和Amazon SageMaker,企业在AWS上为营销活动生成广告创意,释放创造力

广告机构可以使用生成式人工智能和文本到图像基础模型来创建创新的广告创意和内容。在本篇文章中,我们演示了如何使用Amazon SageMaker从现有的基础图像生成新的图像。Amazon SageMaker是一个完全托管的服务,用于构建、训练和部署大规模机器学习模型。通过这个解决方案,无论企业大小,都可以比以往更快速、更低成本地开发新的广告创意。这使您能够以低成本、快速的速度为您的业务开发新的定制广告创意内容。

解决方案概述

考虑以下情景:一家全球汽车公司需要为他们即将发布的新车设计生成新的营销材料,并聘请了一家以为品牌价值强大的客户提供广告解决方案而闻名的创意机构。汽车制造商正在寻找低成本的广告创意,展示车型在不同的位置、颜色、视角和角度中的多样性,同时保持汽车制造商的品牌身份。借助先进技术的力量,创意机构可以在其安全的AWS环境中使用生成式人工智能模型来支持他们的客户。

该解决方案是在Amazon SageMaker中使用生成式人工智能和文本到图像模型开发的。SageMaker是一个完全托管的机器学习(ML)服务,通过完全托管的基础设施、工具和工作流程,使构建、训练和部署任何用例的ML模型变得简单。Stable Diffusion是来自Stability AI的一个文本到图像基础模型,它驱动图像生成过程。Diffusers是使用Stable Diffusion的预训练模型,它们可以使用现有的图像根据提示生成新的图像。将Stable Diffusion与ControlNet等Diffusers结合使用,可以使用现有的品牌特定内容开发出令人惊叹的版本。在AWS和Amazon SageMaker中开发解决方案的关键优势包括:

  • 隐私 – 将数据存储在Amazon Simple Storage Service(Amazon S3)中,并使用SageMaker来托管模型,可以在您的AWS账户中遵守安全最佳实践,同时不公开资产。
  • 可扩展性 – Stable Diffusion模型在部署为SageMaker端点时,通过允许您配置实例大小和实例数量来实现可扩展性。SageMaker端点还具有自动缩放功能,并且具有高可用性。
  • 灵活性 – 在创建和部署端点时,SageMaker提供了选择GPU实例类型的灵活性。此外,SageMaker端点后面的实例可以在业务需求变化时轻松更改。AWS还开发了使用AWS Inferentia2的硬件和芯片,以实现生成式人工智能推理的高性能和最低成本。
  • 快速创新 – 生成式人工智能是一个快速发展的领域,新的方法和模型正在不断开发和发布。Amazon SageMaker JumpStart定期引入新模型和基础模型。
  • 端到端集成 – AWS允许您将创意过程与任何AWS服务集成,并使用通过AWS Identity and Access Management(IAM)的细粒度访问控制、通过Amazon Simple Notification Service(Amazon SNS)的通知以及通过事件驱动计算服务AWS Lambda的后处理开发端到端流程。
  • 分发 – 当生成新创意时,AWS允许使用Amazon CloudFront将内容分发到多个地区的全球渠道。

在本文中,我们使用以下GitHub示例,该示例使用Amazon SageMaker Studio与基础模型(Stable Diffusion)、提示、计算机视觉技术和SageMaker端点从现有图像生成新图像。以下图表说明了解决方案架构。

工作流程包含以下步骤:

  1. 我们将现有内容(图像、品牌风格等)安全地存储在S3存储桶中。
  2. 在SageMaker Studio笔记本中,使用计算机视觉技术将原始图像数据转换为图像,这样可以保留产品(汽车模型)的形状,去除颜色和背景,并生成中间的单色图像。
  3. 中间图像作为Stable Diffusion与ControlNet的控制图像。
  4. 我们使用SageMaker Jumpstart中的Stable Diffusion文本到图像基础模型和ControlNet在首选的基于GPU的实例大小上部署SageMaker端点。
  5. 使用描述新背景和汽车颜色的提示以及中间单色图像来调用SageMaker端点,生成新图像。
  6. 生成的新图像存储在S3存储桶中。

在SageMaker端点上部署ControlNet

要将模型部署到SageMaker端点上,我们必须为每个单独的技术模型工件以及稳定扩散权重、推理脚本和NVIDIA Triton配置文件创建一个压缩文件。

在以下代码中,我们将不同的ControlNet技术模型权重和稳定扩散1.5下载到本地目录作为tar.gz文件:

if ids =="runwayml/stable-diffusion-v1-5":
    snapshot_download(ids, local_dir=str(model_tar_dir), local_dir_use_symlinks=False,ignore_patterns=unwanted_files_sd)

elif ids =="lllyasviel/sd-controlnet-canny":
    snapshot_download(ids, local_dir=str(model_tar_dir), local_dir_use_symlinks=False)  

为了创建模型管道,我们定义了一个inference.py脚本,SageMaker实时端点将使用该脚本来加载和托管稳定扩散和ControlNet的tar.gz文件。以下是inference.py的片段,显示了如何加载模型以及如何调用Canny技术:

controlnet = ControlNetModel.from_pretrained(
        f"{model_dir}/{control_net}",
        torch_dtype=torch.float16 if torch.cuda.is_available() else torch.float32)

pipe = StableDiffusionControlNetPipeline.from_pretrained(
        f"{model_dir}/sd-v1-5",
        controlnet=controlnet,
        torch_dtype=torch.float16 if torch.cuda.is_available() else torch.float32)

# 为Canny定义技术函数
image = cv2.Canny(image, low_threshold, high_threshold)

我们使用所需的实例大小(GPU类型)从模型URI部署SageMaker端点:

huggingface_model = HuggingFaceModel(
        model_data=model_s3_uri,  # 指向训练后的Sagemaker模型的路径
        role=role, # 具有创建端点权限的IAM角色
        py_version="py39", # DLC的Python版本
        image_uri=image_uri,
)

# 将模型部署为SageMaker端点
predictor = huggingface_model.deploy(
        initial_instance_count=1,
        instance_type="ml.p3.2xlarge",
)

生成新图像

现在在SageMaker端点上部署了端点,我们可以传递我们的提示和我们想要用作基准的原始图像。

为了定义提示,我们创建了一个正面提示p_p,用于指定新图像中我们要寻找的内容,以及一个负面提示n_p,用于指定要避免的内容:

p_p="金属橙色汽车,完整的汽车,彩色照片,户外在宜人的景观中,逼真,高质量"

n_p="剪裁,超出边框,最差质量,低质量,JPEG伪影,丑陋,模糊,不良解剖,不良比例"

最后,我们使用提示和源图像调用我们的端点来生成新图像:

request={"prompt":p_p, 
        "negative_prompt":n_p, 
        "image_uri":'s3://<bucker>/sportscar.jpeg', #现有内容
        "scale": 0.5,
        "steps":20, 
        "low_threshold":100, 
        "high_threshold":200, 
        "seed": 123, 
        "output":"output"}
response=predictor.predict(request)

不同的ControlNet技术

在本节中,我们比较了不同的ControlNet技术及其对生成图像的影响。我们使用以下原始图像,使用Amazon SageMaker中的稳定扩散和Control-net生成新内容。

下表显示了技术输出对应于原始图像的部分。

技术名称 技术类型 技术输出 提示 稳定扩散与ControlNet
canny 黑色背景上的白色边缘的单色图像。 金属橙色汽车,完整的汽车,彩色照片,户外在宜人的景观中,逼真,高质量
depth 黑色代表深区域,白色代表浅区域的灰度图像。 金属红色汽车,完整的汽车,彩色照片,户外在宜人的海滩上,逼真,高质量
hed 黑色背景上的白色软边缘的单色图像。 金属白色汽车,完整的汽车,彩色照片,城市中的夜晚,逼真,高质量
scribble 黑色背景上的白色轮廓的手绘单色图像。 <img src="https://d2908q01vomqb2.cloudfront.net/f1f836cb4ea6efb2a0b1b99f41ad8b103eff4b59/2023/07/22/Picture7-3-150×150

清理

在使用生成式人工智能生成新的广告创意后,清理掉不再使用的资源。删除Amazon S3中的数据,并停止任何SageMaker Studio的笔记本实例,以免产生进一步的费用。如果您使用SageMaker JumpStart将稳定扩散部署为SageMaker实时终端节点,则可以通过SageMaker控制台或SageMaker Studio删除该终端节点。

结论

在本文中,我们使用SageMaker上的基础模型从存储在Amazon S3中的现有图像创建新的内容图像。借助这些技术,营销、广告和其他创意机构可以使用生成式人工智能工具来增强其广告创意流程。要深入了解本演示中展示的解决方案和代码,请查看GitHub存储库。

此外,还可以参考Amazon Bedrock上关于生成式人工智能、基础模型和文本到图像模型的使用案例。