利用亚马逊云上 AI 服务进行内容审核及分析

使用亚马逊云科技提供的一系列托管人工智能服务,打造自动化的智能化内容审核系统包括图像、视频、文本和音频审核工作流程,及时过滤不合适的内容,给用户带来更好的体验。

Amazon Rekognition
Amazon Comprehend
Amazon Transcribe
Amazon Translate
Amazon Bedrock
生成式 AI
教程
亚马逊云科技
Olawale Olaleye
难度
200 - 中级
时间

实验时长:Demo1: 20 分钟、Demo2: 20 分钟、Demo3: 45 分钟
本实验由 3 个小实验组成,每个实验均可单独进行,可按需选择

费用

以美东 1 区为例子,按照教程中的步骤操作并在教程结束的 1 小时内终止相应资源,所需费用将不超过 10 USD

受众

数据科学家、算法工程师、软件工程师、全栈开发人员

前提条件

海外区域: 注册 / 登录 亚马逊云科技
Streamlit / 准备环境 / Python / PIP

示例代码
上次更新时间
2024 年 5 月 16 日
相关行业

游戏 / 社交媒体/ 电商 / 广告运营

本文我们将探讨,如何使用亚马逊云科技提供的一系列托管人工智能服务 Amazon RekognitionAmazon ComprehendAmazon TranscribeAmazon TranslateAmazon Bedrock 以及其他技术,打造自动化的智能化内容审核系统包括图像、视频、文本和音频审核工作流程,及时过滤不合适的内容,给用户带来更好的体验。

Demo1 多模态数据智能审核及分析

架构说明

本方案整体架构如下图所示:

  1. 用户上传各类型文件(包括:文本、图像、视频、语音)到 Amazon S3 存储桶
  2. 文件成功上传存储桶后,监测到 S3 存储桶的事件变化 (PUT Event),会自动触发 AWS Lambda
  3. AWS Lambda 根据文件类型执行相应的内容审核

    1. 使用 Amazon Rekognition 进行图像/视频数据的内容审核,包括:

      • 对不合规图像/视频数据进行审核
      • 分析图像中的人脸相关信息,包括名人、年龄范围、面部的检测框、置信度值等属性
      • 提取图片中的文本,再使用Comprehend、Bedrock进行文本审核
    2. 使用 Amazon Comprehend 对文本数据进行情绪分析、个人信息提取、毒性检测,包括:

      • 毒性检测,分析文本中的不合适内容,检测是否有包含脏话,暴力等相关内容
      • 分析文本情绪,识别文本中的个人身份信息 (PII) 实体,如年龄、地址等信息
    3. 使用 Amazon Bedrock 中集成的大语言模型 Claude v2,通过对提示词自定义内容审核策略,对文本数据进行内容审核
    4. 使用 Amazon Transcribe 对语音进行毒性分类,类别包括脏话、仇恨言论、侮辱等;检测到的文本信息再使用 Comprehend、Bedrock 进行文本审核
    5. 使用 Amazon Translate 将文本语言转换为英文
  4. 通过 Amazon CloudWatch 监控 AWS Lambda 的每次执行,并将日志记录到 CloudWatch Logs 中
  5. 审核结果,部分以 JSON 格式存储至 S3

部署步骤

部署步骤请参考该说明

Demo2 音频文本数据审核及分析

在线游戏和社交社区为用户提供语音和文本聊天功能进行交流。尽管语音和文本聊天通常支持友好的闲聊,但它也可能导致仇恨言论、网络欺凌、骚扰和诈骗等问题。如今,许多公司仅依靠人工审核员来审查有毒内容。然而,验证聊天中的违规行为是耗时、容易出错且难以扩展的。

此存储库包含两个示例演示,作为 Streamlit 应用程序,展示使用 AWS AI 服务和生成式AI的音频和文本管理。每个演示都包括一个 UI 页面,允许您上传音频或文本文件以启动分析。上传后,您可以在“示例”选项卡中查看分析结果,并在“工作流”选项卡中探索架构设计。

音频分析及审核工作流

音频审核工作流程可以由用户在游戏平台上举报其他用户违反政策(如粗言秽语、仇恨言论或骚扰)而启动。这代表了一种被动的音频审核方法。人类审核员收到报告后,必须花时间调查对话以确定其是否违反平台政策。然而该过程可以主动触发。例如,在社交音频聊天室中,系统可以记录所有对话并以低延迟应用分析。被动和主动方法都可以触发下面的音频分析管道。

文本分析及审核工作流程

文本聊天审核工作流程遵循与音频审核类似的模式,但它利用了专为文本审核量身定制的 Amazon Comprehend 毒性分析。示例应用程序支持上传 CSV 或 TXT 格式的批量文本的界面,并提供用于快速测试的界面。

推荐环境

这个 Streamlit 中的示例应用程序展示了音频和文本聊天管理的工作流程。要启动 Web 服务并浏览网站,我们建议使用现代浏览器(Windows 或 Mac)的本地桌面,或使用 Amazon Cloud9,或启动 Windows EC2 实例。这样,您可以使用浏览器访问托管在同一台机器上的网站,避免需要额外的网络安全设置。

准备

开始部署

将源代码克隆到本地

git clone https://github.com/aws-samples/aws-genai-audio-text-chat-moderation
cd aws-genai-audio-text-chat-moderation

创建 Python 虚拟环境

python3 -m venv .venv
source .venv/bin/activate

安装依赖

pip install -r requirements.txt

设置环境变量

配置以下环境变量:

export AWS_BUCKET_NAME=YOUR_S3_BUCKET_NAME
export BEDROCK_KNOWLEDGE_BASE_ID=YOUR_KNOWLEDGE_BASE_ID

export AWS_REGION=AWS_REGION (可选. 默认值: us-east-1)
export AWS_S3_PREFIX=YOUR_S3_PREFIX (可选. 默认值: policy-eval-demo)

如果您希望为用户登录启用Cognito用户池,请设置以下环境变量。如果您将它们保持为空,应用程序将忽略登录。

export COGNITIO_POOL_ID=YOUR_COGNITIO_USER_POOL_ID
export COGNITIO_APP_CLIENT_ID=YOUR_COGNITIO_APP_CLIENT_ID

例如:

export AWS_BUCKET_NAME=s3-data;
export BEDROCK_KNOWLEDGE_BASE_ID=TW4AFSRVV7;
export AWS_REGION=us-east-1;

开始 streamlit app

streamlit run Home.py

登陆成功后,APP 显示界面:

音频文件测试结果显示

文本文件测试结果显示

Demo3 视频数据审核及分析

部署说明

按照以下说明将所有组件(包括带有用户交互界面的 Web 门户)部署到 AWS 帐户。

支持 AWS 区域

该解决方案需要 AWSAI 服务,包括 Amazon Bedrock、Amazon Rekognition 和 Amazon Transcribe,这些服务在某些地区可用。请选择以下 AWS 地区之一来部署 CDK 包。

US

us-east-1 (N. Virginia)

准备

  • 如果您没有AWS帐户管理员访问权限,请确保您的 IAM 角色/用户具有创建和管理此解决方案所需资源和组件的权限。
  • 请检查您计划部署解决方案的帐户区域中已启动的 VPC 数量。us-east-1 中每个区域的 VPC 默认配额为 5。如果该区域中已达到 VPC 限制,则需要在部署前增加配额限制(+1)。您可以通过导航到“服务配额”页面,使用 AWS 控制台自行管理配额增加。
  • 在 Amazon Bedrock 中,请确保您可以访问所需的模型。有关详细信息,请参阅此说明

安装环境依赖,设置鉴权

 如果使用 CloudShell 或 AWS 支持来自同一帐户的 bash 命令的服务(例如 Cloud9),请跳过。本地桌面等自管理环境需要。
python -m ensurepip --upgrade
  • Install Python Virtual Environment
pip install virtualenv
  • Setup the AWS CLI authentication
aws configure

使用 Shell 部署 CDK 包

1. 从 GitHub 存储库克隆源代码 

git clone https://github.com/aws-samples/media-analysis-policy-evaluation-framework
cd media-analysis-policy-evaluation-framework

2. 设置环境变量

将环境变量设置为CDK部署包的输入参数:

CDK_INPUT_USER_EMAILS:用于登录门户网站的电子邮件地址。他们将收到临时密码。

export CDK_INPUT_USER_EMAILS=<EMAILS_SPLIT_BY_COMMA>
export CDK_INPUT_USER_EMAILS=<EMAILS_SPLIT_BY_COMMA>

使用目标 AWS 帐户 ID 和要部署演示应用程序的区域更新这些值。

export CDK_DEFAULT_ACCOUNT=<YOUR_ACCOUNT_ID>
export CDK_DEFAULT_REGION=<YOUR_TARGET_REGION> (e.x, us-east-1)

CDK_INPUT_OPENSEARCH_CONFIG:配置 Amazon OpenSearch 群集的大小,接受"Dev"或"Prod"作为默认值设置为"Dev"的值。

  • Dev:适用于开发或测试环境。(无主节点,1 个数据节点:m4.large.search)
  • 产品:适合处理大量视频数据。(3 个主节点:m4.large.search,2 个数据节点:m5.xlarge.search)
export CDK_INPUT_OPENSEARCH_CONFIG=<OPENSEARCH_CONFIG> ("Dev" or "Prod")

3. 在 Shell 中运行 deploy-cloudshell.sh,使用步骤 2 中定义的参数将应用程序部署到 AWS 帐户。

bash ./deploy-cloudshell.sh

访问 Web 页面

部署完成后,您可以在 bash 控制台中找到网站 URL。您也可以通过检查堆栈 **AwsContentAnalysisRootStack** 中的输出来在 Cloud 阵型控制台中找到它。

带有用户名和临时密码的电子邮件将发送到您在步骤 2 中提供的电子邮件。用户可以使用此信息登录门户网站。

登陆后页面中是无视频的,图中的视频是测试预先上传的一些视频数据。

访问 OpenSearch 面板

该解决方案将 OpenSearch 服务数据库部署到私有子网中。最终用户通过会话管理器中 AWS 端口转发访问 OpenSearch 仪表板,无需向互联网公开 SSH 端口。

将和替换为 cdk 输出的值后,运行以下命令访问 OpenSearch 仪表板。

aws ssm start-session --target <BastionHostId> --document-name AWS-StartPortForwardingSessionToRemoteHost --parameters '{"portNumber":["443"],"localPortNumber":["8157"], "host":["<OpenSearchDomainEndpoint>"]}'

启动会话后,浏览器中的访问 https://localhost:8157/_dashboards。可能会出现警告,因为证书中的域(*.[region].es.amazonaws.com)与您访问的域(localhost)不同。由于这不会导致严重问题,请继续访问该站点,您将看到 OpenSearch 仪表板。

有关如何在本地计算机上安装 Amazon Session Manager 的说明,请参阅此说明:instruction

参考