使用亚马逊云科技人工智能内容审核服务,打造安全的图像生成和扩散模型

1e7a2761035bc8d96a7c0b9418e7db50.gif

生成式人工智能技术发展日新月异,现在已经能够根据文本输入生成文本和图像。Stable Diffusion 是一种文本转图像模型,可让您创建栩栩如生的图像应用。您可以通过 Amazon SageMaker JumpStart,使用 Stable Diffusion 模型轻松地从文本生成图像。

以下是输入文本示例,以及 Stable Diffusion 生成的对应输出图像。输入内容是“在桌子上跳舞的拳击手”、“沙滩上一位穿着水彩风格泳衣的女士”和“穿西装的狗”。

b91765a2b503fdd8b4f074499ffb8340.png

尽管生成式人工智能解决方案功能强大,应用广泛,但它们也很容易受到操纵和滥用。客户在使用它们生成图片时,应实施严格的审核程序,高度重视内容审核,以便保护其用户、平台和品牌,在创造安全和积极的用户体验的同时,确保平台和品牌的声誉不会受损。

在这篇文章中,我们将探讨如何使用亚马逊云科技人工智能服务 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 会将生成的图像和审核警告返回给客户端。

34328a41302b2569652d4f1ae85cb405.png

此工作流中的步骤如下:

1. 用户发送提示以生成图像。

2. Amazon Lambda 函数使用 Amazon Comprehend、JumpStart 和 Amazon Rekognition 协调图像的生成和审核:

  1. 将基于规则的条件应用到 Lambda 函数中的输入提示,使用禁用词检测强制执行内容审核。

  2. 使用 Amazon Comprehend 自定义分类器,分析提示文本以进行毒性分类。

  3. 通过 SageMaker 端点将提示发送到 Stable Diffusion 模型,传递提示作为用户输入,并传递预定义列表中的负向提示。

  4. 将从 SageMaker 端点返回的图像字节发送到 Amazon Rekognition DetectModerationLabel API 进行图片审核。

  5. 如果之前的步骤在提示或生成的图像中检测到任何不当信息,则会构造包含图像字节和警告的响应消息。

3. 服务将响应发送回客户端。

以下屏幕截图显示了使用上述架构构建的示例应用程序。Web UI 将用户输入提示发送到 RESTful 代理 API,并显示从响应中收到的图像和所有审核警告。如果实际生成的图像包含不安全的内容,则演示应用程序会对内容进行模糊处理。我们使用示例提示“一位性感女士”测试了该应用程序。

a7a074859926e23a8822e12a33fd22c7.png

您可以实施更复杂的逻辑来获得更好的用户体验,例如,在提示包含不安全的信息时拒绝请求。此外,您可以制定重试策略,在提示是安全的、但输出不安全时,重新生成图像。

预定义负向提示列表

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 自定义分类器的毒性监察模型的更多信息。该实验室提供了分步指南,说明如何创建自定义毒性分类器并将其集成到应用程序中。下图展示了此解决方案的架构。

d30706befd2db32332faf7cc645586e0.png

此示例分类器使用社交媒体训练数据集并执行二元分类。但是,如果您对文本审核需求有更具体的要求,请考虑使用更具针对性的数据集来训练 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 进行审核。

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

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 中定义负向提示,以防止生成不安全的内容。通过实施多个审核层,可以大大降低生成不安全内容的风险,从而确保更安全、更可靠的用户体验。

详细了解亚马逊云科技上的内容审核(https://aws.amazon.com/solutions/guidance/content-moderation-on-aws/)以及我们的内容审核机器学习使用场景(https://aws.amazon.com/machine-learning/ml-use-cases/content-moderation/),并迈出使用亚马逊云科技简化内容审核操作的第一步。

  • Original URL: 

    https://aws.amazon.com/blogs/machine-learning/safe-image-generation-and-diffusion-models-with-amazon-ai-content-moderation-services/

本篇作者

d2de73429f7319e8fc397707f83f7ed4.png

Lana Zhang

亚马逊云科技 WWSO 人工智能服务团队的高级解决方案架构师,专门研究用于内容审核、计算机视觉和自然语言处理的人工智能及机器学习。她运用自己的专业知识,致力于推广亚马逊云科技人工智能/机器学习解决方案,并协助社交媒体、游戏、电子商务以及广告和营销等各个行业中的客户,实现业务解决方案转型。

a2aa865d30514a226e180f21950eff5c.jpeg

James Wu 

亚马逊云科技的高级人工智能/机器学习专家解决方案架构师,协助客户设计和构建人工智能/机器学习解决方案。James 的工作涵盖大量机器学习使用案例,主要兴趣是计算机视觉、深度学习和在整个企业中扩展机器学习。在加入亚马逊云科技之前的 10 多年间,James 曾担任架构师、开发人员和技术负责人,其中 6 年在工程领域,4 年在营销和广告行业。

8d71474d2f3c3a0df67d97a3a5cb9f8a.png

Kevin Carlson

亚马逊云科技的首席人工智能/机器学习专家,专注于计算机视觉,领导 Amazon Rekognition 的业务开发和 GTM 团队。加入 亚马逊云科技之前,他曾在财富 500 强工程公司 AECOM 负责全球数字化转型,专注于用于生成式设计和基础设施评测的人工智能和机器学习。他住在芝加哥,工作之余他喜欢和家人共度时光,爱好驾驶飞机和执教青少年棒球。

111e45e3ea7edcaa6d5c4791e4ad5245.jpeg

John Rouse

亚马逊云科技的高级人工智能/机器学习专家,负责人工智能服务的全球业务开发,重心放在内容审核与合规性使用案例上。加入 亚马逊云科技之前,他曾在尖端科技公司担任高级业务开发和领导职务。John 致力于让机器学习成为每个开发人员在亚马逊云科技人工智能/机器学习堆栈中的利器。小的想法只能带来小的影响。John 的目标是增强客户的能力,为客户带来宏大的计划和机会,为他们打开大门,从而给其用户带来巨大的影响。

9318a03bac96545771ef206d6504c015.gif

星标不迷路,开发更极速!

关注后记得星标「亚马逊云开发者」

3e3aa628e43fef0dea8a500b3484fe2d.gif

听说,点完下面4个按钮

就不会碰到bug了!

e0b8eee6258adef8c22f4b54f36078c0.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/131153.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

H.265 视频在浏览器中的播放问题探究

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f6e0;️ 全栈技术 Full Stack: &#x1f4da…

ATF(TF-A) SPMC威胁模型-安全检测与评估

安全之安全(security)博客目录导读 ATF(TF-A) 威胁模型汇总 目录 一、简介 二、评估目标 1、数据流图 三、威胁分析 1、信任边界 2、资产 3、威胁代理 4、威胁类型 5、威胁评估 5.1 端点在直接请求/响应调用中模拟发送方或接收方FF-A ID 5.2 篡改端点和SPMC之间的…

JavaScript中的Hoisting机制

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ JavaScript 中的 Hoisting 机制⭐ 变量提升⭐ 函数提升⭐ 注意事项⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xf…

第7章_freeRTOS入门与工程实践之模块使用说明与STM32CubeMX配置

本教程基于韦东山百问网出的 DShanMCU-F103开发板 进行编写&#xff0c;需要的同学可以在这里获取&#xff1a; https://item.taobao.com/item.htm?id724601559592 配套资料获取&#xff1a;https://rtos.100ask.net/zh/freeRTOS/DShanMCU-F103 freeRTOS系列教程之freeRTOS入…

SOLIDWORKS Composer反转关键帧实现产品安装过程

SOLIDWORKS Composer 是一款被用来制作交互式产品说明书的工具&#xff0c;可以帮助我们对产品设定精确的机构动画&#xff0c;并能根据材质生成一定细节的渲染图像。 今天我们主要向大家讲解的是&#xff0c;利用SOLIDWORKS Composer关键帧反转实现产品动态的安装。 一般情况下…

cf 交互题

今天cf遇到了交互题&#xff0c;这个交互题的算法很很很简单&#xff0c;但是在交互上卡了&#xff0c;导致交上的代码都不算罚时。&#xff08;更伤心了。 所以&#xff0c;现在写一下交互题的做法&#xff0c;印象深刻嘛。 交互题&#xff0c;就是跟机器进行交互。你代码运…

数据结构——排序算法——希尔排序

希尔排序本质上是对插入排序的一种优化&#xff0c;它利用了插入排序的简单&#xff0c;又克服了插入排序每次只交换相邻两个元素的缺点。它的基本思想是&#xff1a; 1.将待排序数组按照一定的间隔分为多个子数组&#xff0c;每组分别进行插入排序。这里按照间隔分组指的不是…

vscode搭建Django自带后台管理系统

文章目录 一、django自带的后台管理系统1. 建表2. 后台管理系统2.1 创建账号2.2 运行后台2.3 登录 二、模版渲染1. 直接将数据渲染到页面2. 数据传递给js 三、数据库1. 查看当前数据库2. 创建UserInfo数据表3. Django rest framework配置 四、vue前端搭建1. 在Django项目的根目…

k8s(Kubernetes)集群部署--使用 kubeadm方式部署

k8s集群部署--使用 kubeadm方式部署 一、测试所需环境&#xff08;三台均要执行&#xff09;二、配置准备&#xff08;三台均要执行&#xff09;1. 重命名hostname、添加hosts2. 关闭防火墙、selinux与swap3. 添加网桥过滤及内核转发配置文件4.同步时间5.安装ipset及ipvsadm 三…

yocto stm32mp1集成ros

yocto stm32mp1集成ros yocto集成ros下载meta-rosyocto集成rosrootfs验证 yocto集成ros 本章节介绍yocto如何集成ros系统用来作机器人开发。 下载meta-ros 第一步首先需要下载meta-ros layer&#xff0c;meta-ros的链接如下&#xff1a;https://github.com/ros/meta-ros/tre…

1-4 AUTOSAR方法论

总目录——AUTOSAR入门详解AUTOSAR入门详解目录汇总&#xff1a;待续中。。。https://xianfan.blog.csdn.net/article/details/132818463 目录 一、前言 二、方法论 三、单个ECU开发流程 一、前言 汽车生产供应链上有以下角色&#xff1a;OEM、TIER1、TIER2&#xff0c;其主…

《向量数据库指南》——哪些需求推动了如Milvus Cloud等的向量数据库的更新和迭代?

这个问题需要深入讨论大模型与向量数据库之间的关系。从去年 ChatGPT 推出时这个问题就开始引发我们的思考。在当时,我们敏锐地意识到这将是一个机遇。然而,在国内,这个概念的认知需要更长的时间。我个人在去年四五月份的美国之行中注意到,数据库在美国已经是一个非常热门的…

入门人工智能 ——使用 tensorflow 训练一个新闻分类模型(6)

入门人工智能 ——使用 tensorflow 训练一个新闻分类模型&#xff08;6&#xff09; 入门人工智能 ——使用 tensorflow 训练一个新闻分类模型使用 tensorflow 训练一个新闻分类模型1. 安装TensorFlow和所需的依赖项。2. 打开收集的新闻数据集构建模型模型训练模型评估保存模型…

西门子S7-1200F或1500F系列安全PLC的组态步骤和基础编程(一)

西门子S7-1200F或1500F系列安全PLC的组态步骤和基础编程(一) 第一部分:组态配置 具体步骤可参考以下内容: 如下图所示,新建一个项目后,添加一个安全型PLC,这里以1516F-3 PN/DP为例进行说明, 如下图所示,添加CPU完成后,可以看到左侧的项目树中比普通的PLC多了几个选项…

MySQL-DDL语句

MySQL-DDL语句 数据库操作语句增删数据库查看数据库列表创建数据库进入&#xff08;使用&#xff09;数据库/查看当前所在的数据库查看数据库的建库语句查看数据库的编码集和校验集删除数据库修改数据库的编码集查看数据库支持的编码集和校验集 数据库备份备份单个数据库恢复数…

rust编译出错:error: failed to run custom build command for `ring v0.16.20`

安装 Visual Studio&#xff0c;确保选择 —.NET 桌面开发、使用 C 的桌面开发和通用 Windows 平台开发。显示已安装的工具链rustup show。然后通过运行更改和设置工具链rustup default stable-x86_64-pc-windows-msvc。 另外是想用clion进行调试rust 需要你按下面配置即可解…

solidworks底部状态栏显示不出来

如下图所示&#xff0c;solidworks主界面下面的状态栏突然不见了。 怎么调出来&#xff1f; 第一步&#xff1a;点击视图菜单&#xff0c;用户界面&#xff0c;把状态栏前的勾勾上。 第二步&#xff1a;把视图下面的触摸模式关掉&#xff0c;这一点很容易被大家忽略。

Oracle(1):Oracle简介

1 什么是 ORACLE ORACLE 数据库系统是美国 ORACLE 公司&#xff08;甲骨文&#xff09;提供的以分布式数据库为核心的一组软件产品&#xff0c;是目前最流行的客户/服务器(CLIENT/SERVER)或B/S 体系结构的数据库之一。 ORACLE 通常应用于大型系统的数据库产品。 ORACLE 数据…

全面详解Maven的配置文件pom.xml(含常用plugin)

系列文章目录 手把手教你maven的安装与配置(windows) 全面详解Maven的配置文件pom.xml&#xff08;含常用plugin&#xff09; 系列文章目录一、什么是pom.xml二、pom.xml的结构三、项目的基本信息1.modules2.parent3.scm4.properties 四、项目的依赖列表1.dependency2.reposit…

【服务器 | 测试】如何在centos 7上面安装jmeter

安装之前需要几个环境&#xff0c;以下是列出的几个环境 CentOS 7.7 64位JDK 1.8JMeter 5.2 1. 下载jmeter安装包 JMeter是开源的工具&#xff0c;安装 JMeter 要先安装好 JDK 的环境&#xff0c;安装JDK在前面的文章已经讲到 JMeter最新版下载地址&#xff1a;Apache JMeter…