生成式人工智能技术发展日新月异,现在已经能够根据文本输入生成文本和图像。Stable Diffusion 是一种文本转图像模型,可让您创建栩栩如生的图像应用。您可以通过 Amazon SageMaker JumpStart,使用 Stable Diffusion 模型轻松地从文本生成图像。
以下是输入文本示例,以及 Stable Diffusion 生成的对应输出图像。输入内容是"在桌子上跳舞的拳击手"、"沙滩上一位穿着水彩风格泳衣的女士"和"穿西装的狗"。
尽管生成式人工智能解决方案功能强大,应用广泛,但它们也很容易受到操纵和滥用。客户在使用它们生成图片时,应实施严格的审核程序,高度重视内容审核,以便保护其用户、平台和品牌,在创造安全和积极的用户体验的同时,确保平台和品牌的声誉不会受损。
在这篇文章中,我们将探讨如何使用亚马逊云科技人工智能服务 Amazon Rekognition 和 Amazon Comprehend 以及其他技术,近乎实时地有效审核 Stable Diffusion 模型生成的内容。要了解如何在亚马逊云科技上使用 Stable Diffusion 模型以及通过文本打开和生成图像,请参阅在 Amazon SageMaker JumpStart 上使用 Stable Diffusion 模型从文本生成图像(https://aws.amazon.com/blogs/machine-learning/generate-images-from-text-with-the-stable-diffusion-model-on-amazon-sagemaker-jumpstart)。
解决方案概览
Amazon Rekognition 和 Amazon Comprehend 是托管式人工智能服务,它们通过 API 接口提供预训练且可自定义的机器学习模型,无需机器学习(ML)专业知识。Amazon Rekognition Content Moderation 可自动完成图像和视频的审核,简化这一过程。Amazon Comprehend 利用机器学习来分析文本,发现有价值的洞察和关系。
以下参考资料介绍了如何创建 RESTful 代理 API,用于近乎实时地审核 Stable Diffusion 文本转图像模型生成的图像。在此解决方案中,我们使用 JumpStart 启动并部署了 Stable Diffusion 模型(基于 v2-1)。该解决方案使用负向提示、文本审核解决方案(例如 Amazon Comprehend)以及基于规则的筛选条件来审核输入提示。它还利用 Amazon Rekognition 来审核生成的图像。在检测到不安全信息时,RESTful API 会将生成的图像和审核警告返回给客户端。
此工作流中的步骤如下:
-
用户发送提示以生成图像。
-
Amazon Lambda 函数使用 Amazon Comprehend、JumpStart 和 Amazon Rekognition 协调图像的生成和审核:
-
将基于规则的条件应用到 Lambda 函数中的输入提示,使用禁用词检测强制执行内容审核。
-
使用 Amazon Comprehend 自定义分类器,分析提示文本以进行毒性分类。
-
通过 SageMaker 端点将提示发送到 Stable Diffusion 模型,传递提示作为用户输入,并传递预定义列表中的负向提示。
-
将从 SageMaker 端点返回的图像字节发送到 Amazon Rekognition DetectModerationLabel API 进行图片审核。
-
如果之前的步骤在提示或生成的图像中检测到任何不当信息,则会构造包含图像字节和警告的响应消息。
-
服务将响应发送回客户端。
以下屏幕截图显示了使用上述架构构建的示例应用程序。Web UI 将用户输入提示发送到 RESTful 代理 API,并显示从响应中收到的图像和所有审核警告。如果实际生成的图像包含不安全的内容,则演示应用程序会对内容进行模糊处理。我们使用示例提示"一位性感女士"测试了该应用程序。
您可以实施更复杂的逻辑来获得更好的用户体验,例如,在提示包含不安全的信息时拒绝请求。此外,您可以制定重试策略,在提示是安全的、但输出不安全时,重新生成图像。
预定义负向提示列表
Stable Diffusion 支持负向提示,这样您便可以指定在图像生成期间要避免的提示。创建预定义的负向提示列表是一种实用的主动式方法,用于防止模型生成不安全的图像。我们已经知道,诸如"裸体"、"性感"和"裸露"之类的提示会生成不适宜或者冒犯性的图片,通过添加这些提示,模型可以识别并避开这些提示,从而降低生成不安全内容的风险。
在调用 SageMaker 端点来运行 Stable Diffusion 模型的推理时,可以在 Lambda 函数中管理该实施,传递用户输入中的提示,并传递预定义列表中的负向提示。
尽管这种方法行之有效,但它可能会影响 Stable Diffusion 模型生成的结果并限制其功能。所以,要点在于将其视为审核技术之一,再结合其他方法,例如使用 Amazon Comprehend 和 Amazon Rekognition 进行文本和图像审核。
审核输入提示
文本审核的常用方法是使用基于规则的关键字查找方法,识别输入文本是否包含预定义列表中的任何禁用词或短语。这种方法相对容易实施,对性能的影响很小,成本也更低。但是,这种方法的主要缺点是,它只检测预定义列表中包含的单词,无法检测未包含在列表中的禁用词新变体或修改后的变体。用户还可以尝试使用其他拼写或特殊字符来替换字母,从而绕过规则。
为了解决基于规则的文本审核的局限性,许多解决方案采用混合方法,将基于规则的关键字查找与基于机器学习的毒性监察相结合。两种方法的结合可以提供更全面、更有效的文本审核解决方案,能够检测更大范围内的不当内容并提高审核结果的准确性。
在此解决方案中,我们使用 Amazon Comprehend 自定义分类器来训练毒性监察模型,使用该模型来检测在输入提示中可能存在有害内容、但未检测到明确使用禁用词的情况。借助机器学习的强大功能,我们可以教导模型识别文本中可能存在毒性内容的模式,即使基于规则的方法难于检测到此类模式也没问题。
使用 Amazon Comprehend 作为托管式人工智能服务,可以简化训练和推理。只需两个步骤,您就可以轻松地训练和部署 Amazon Comprehend 自定义分类。请查看我们的研讨会实验室(https://github.com/aws-samples/amazon-rekognition-code-samples/blob/main/content-moderation/04-text-moderation/02-content-moderation-text-toxic-classification.ipynb),了解有关使用 Amazon Comprehend 自定义分类器的毒性监察模型的更多信息。该实验室提供了分步指南,说明如何创建自定义毒性分类器并将其集成到应用程序中。下图展示了此解决方案的架构。
此示例分类器使用社交媒体训练数据集并执行二元分类。但是,如果您对文本审核需求有更具体的要求,请考虑使用更具针对性的数据集来训练 Amazon Comprehend 自定义分类器。
审核输出图像
尽管审核输入文本提示很重要,但它并不能保证对于目标受众而言,Stable Diffusion 模型生成的所有图像都是安全的,因为该模型的输出可能包含一定程度的随机性。因此,审核 Stable Diffusion 模型生成的图像同样重要。
在此解决方案中,我们利用 Amazon Rekognition Content Moderation 这个预先训练过的机器学习模型,检测图像和视频中的不当内容。在此解决方案中,我们使用 Amazon Rekognition DetectModerationLabel API,近乎实时地审核 Stable Diffusion 模型生成的图像。Amazon Rekognition Content Moderation 提供预先训练的 API,用于分析各种不当或冒犯性内容,例如暴力、裸体、仇恨符号等。有关 Amazon Rekognition Content Moderation 分类法的完整列表,请参阅审核内容(https://docs.aws.amazon.com/rekognition/latest/dg/moderation.html)。
以下代码演示了如何使用 Python Boto3 库,在 Lambda 函数中调用 Amazon Rekognition DetectModerationLabel API 来审核图像。此函数获取从 SageMaker 返回的图像字节,并将其发送到 Image Moderation API 进行审核。
c
import boto3
# 初始化 Amazon Rekognition 客户端对象
rekognition = boto3.client('rekognition')
# 调用 Rekognition Image Moderation API 并存储结果
response = rekognition.detect_moderation_labels(
Image={
'Bytes': base64.b64decode(img_bytes)
}
)
# 输出 API 响应
print(response)
左滑查看更多
有关 Amazon Rekognition Image Moderation API 的更多示例,请参阅我们的内容审核图像实验室(https://github.com/aws-samples/amazon-rekognition-code-samples/blob/main/content-moderation/01-image-moderation/01-content-moderation-image.ipynb)。
用于微调模型的有效图像审核技术
微调是一种常用技术,用于根据特定任务来调节预训练的模型。对于 Stable Diffusion,微调可用于生成包含特定对象、样式和字符的图像。在训练 Stable Diffusion 模型以防止创建不当或冒犯性的图像时,内容审核至关重要。这包括仔细审查并筛选出任何可能导致生成此类图像的数据。通过这样做,模型可以从更多样化和更具代表性的数据点进行学习,从而提高准确性并防止传播有害内容。
通过使用 DreamBooth 方法提供传输学习脚本,JumpStart 可以轻松微调 Stable Diffusion 模型。您只需要准备训练数据,定义超参数,然后便可开始训练作业。有关更多详细信息,请参阅使用 Amazon SageMaker JumpStart 微调文本转图像 Stable Diffusion 模型(https://aws.amazon.com/blogs/machine-learning/fine-tune-text-to-image-stable-diffusion-models-with-amazon-sagemaker-jumpstart/)。
用于微调的数据集必须是单个 Amazon Simple Storage Service(Amazon S3)目录,包括您的图像和实例配置文件 dataset_info.json ,如以下代码所示。JSON 文件会将图像与实例提示关联,例如: {'instance_prompt':<<instance_prompt>>} .
c
input_directory
|---instance_image_1.png
|---instance_image_2.png
|---instance_image_3.png
|---instance_image_4.png
|---instance_image_5.png
|---dataset_info.json
显然,您可以手动审查和筛选图像,但是当您有许多项目和团队时,大规模执行此操作会非常耗时,有时甚至不切实际。在这种情况下,您可以自动执行批量流程,通过 Amazon Rekognition DetectModerationLabel API 集中检查所有图片,并自动标记或删除图片,避免这些图像污染您的训练。
审核延迟和成本
此解决方案使用顺序模式来审核文本和图像。文本审核需要调用基于规则的函数和 Amazon Comprehend,Amazon Rekognition 则用于在调用 Stable Diffusion 之前和之后的图像审核。尽管这种方法可以有效地审核输入提示和输出图像,但它可能会增加解决方案的总体成本和延迟,这是需要考虑的问题。
延迟
Amazon Rekognition 和 Amazon Comprehend 均提供了托管 API,具备高可用性和内置的可扩展性。尽管由于输入大小和网络速度可能导致延迟变化,但在此解决方案中,所用两项服务中的 API 都提供了近实时的推理。对于大小小于 100 个字符的输入文本,Amazon Comprehend 自定义分类器端点的处理速度低于 200 毫秒,而对于平均大小小于 1 MB 的文件,Amazon Rekognition Image Moderation API 的速度大约为 500 毫秒。(结果基于使用示例应用程序进行的测试,符合近实时要求。)
总共而言,对 Amazon Rekognition 和 Amazon Comprehend 的审核 API 调用会增加 700 毫秒的 API 调用时间。需要注意的是,根据提示的复杂性和底层基础设施功能,Stable Diffusion 请求通常需要更长的时间。在测试账户中,使用 ml.p3.2xlarge 实例类型,通过 SageMaker 端点调用 Stable Diffusion 模型的平均响应时间约为 15 秒。因此,审核引入的延迟约为总响应时间的 5%,因此对系统整体性能的影响微乎其微。
成本
Amazon Rekognition Image Moderation API 采用基于请求数量的即用即付模式。费用因所用亚马逊云科技区域而异,采用分层定价结构。随着请求数量的增加,每次请求的成本会降低。有关更多信息,请参阅 Amazon Rekognition 定价(https://aws.amazon.com/rekognition/pricing/)。
在此解决方案中,我们使用了 Amazon Comprehend 自定义分类器,并将其部署为 Amazon Comprehend 端点,以协助进行实时推理。这种实施会产生一次性训练成本和持续的推理成本。有关详细信息,请参阅 Amazon Comprehend 定价(https://aws.amazon.com/comprehend/pricing/)。
使用 Jumpstart,您可以将 Stable Diffusion 模型作为单个软件包来快速启动和部署。在 Stable Diffusion 模型上运行推理将产生底层 Amazon Elastic Compute Cloud(Amazon EC2)实例费用,以及入站和出站数据传输费用。有关详细信息,请参阅 Amazon SageMaker 定价(https://aws.amazon.com/sagemaker/pricing/)。
小结
在这篇文章中,我们概述了一个示例解决方案,该解决方案展示了如何使用 Amazon Comprehend 和 Amazon Rekognition,审核 Stable Diffusion 输入提示和输出图像。此外,您可以在 Stable Diffusion 中定义负向提示,以防止生成不安全的内容。通过实施多个审核层,可以大大降低生成不安全内容的风险,从而确保更安全、更可靠的用户体验。
本篇作者
Lana Zhang
亚马逊云科技 WWSO 人工智能服务团队的高级解决方案架构师,专门研究用于内容审核、计算机视觉和自然语言处理的人工智能及机器学习。她运用自己的专业知识,致力于推广亚马逊云科技人工智能/机器学习解决方案,并协助社交媒体、游戏、电子商务以及广告和营销等各个行业中的客户,实现业务解决方案转型。
James Wu
亚马逊云科技的高级人工智能/机器学习专家解决方案架构师,协助客户设计和构建人工智能/机器学习解决方案。James 的工作涵盖大量机器学习使用案例,主要兴趣是计算机视觉、深度学习和在整个企业中扩展机器学习。在加入亚马逊云科技之前的 10 多年间,James 曾担任架构师、开发人员和技术负责人,其中 6 年在工程领域,4 年在营销和广告行业。
Kevin Carlson
亚马逊云科技的首席人工智能/机器学习专家,专注于计算机视觉,领导 Amazon Rekognition 的业务开发和 GTM 团队。加入 亚马逊云科技之前,他曾在财富 500 强工程公司 AECOM 负责全球数字化转型,专注于用于生成式设计和基础设施评测的人工智能和机器学习。他住在芝加哥,工作之余他喜欢和家人共度时光,爱好驾驶飞机和执教青少年棒球。
John Rouse
亚马逊云科技的高级人工智能/机器学习专家,负责人工智能服务的全球业务开发,重心放在内容审核与合规性使用案例上。加入 亚马逊云科技之前,他曾在尖端科技公司担任高级业务开发和领导职务。John 致力于让机器学习成为每个开发人员在亚马逊云科技人工智能/机器学习堆栈中的利器。小的想法只能带来小的影响。John 的目标是增强客户的能力,为客户带来宏大的计划和机会,为他们打开大门,从而给其用户带来巨大的影响。
星标不迷路,开发更极速!
关注后记得星标「亚马逊云开发者」
听说,点完下面4个按钮
就不会碰到bug了!