利用亚马逊云上 AI 服务进行内容审核及分析
使用亚马逊云科技提供的一系列托管人工智能服务,打造自动化的智能化内容审核系统包括图像、视频、文本和音频审核工作流程,及时过滤不合适的内容,给用户带来更好的体验。
实验时长:Demo1: 20 分钟、Demo2: 20 分钟、Demo3: 45 分钟
本实验由 3 个小实验组成,每个实验均可单独进行,可按需选择
以美东 1 区为例子,按照教程中的步骤操作并在教程结束的 1 小时内终止相应资源,所需费用将不超过 10 USD
数据科学家、算法工程师、软件工程师、全栈开发人员
游戏 / 社交媒体/ 电商 / 广告运营
本文我们将探讨,如何使用亚马逊云科技提供的一系列托管人工智能服务 Amazon Rekognition ,Amazon Comprehend,Amazon Transcribe,Amazon Translate 和 Amazon Bedrock 以及其他技术,打造自动化的智能化内容审核系统包括图像、视频、文本和音频审核工作流程,及时过滤不合适的内容,给用户带来更好的体验。
Demo1 多模态数据智能审核及分析
架构说明
本方案整体架构如下图所示:
- 用户上传各类型文件(包括:文本、图像、视频、语音)到 Amazon S3 存储桶
- 文件成功上传存储桶后,监测到 S3 存储桶的事件变化 (PUT Event),会自动触发 AWS Lambda
AWS Lambda 根据文件类型执行相应的内容审核
使用 Amazon Rekognition 进行图像/视频数据的内容审核,包括:
- 对不合规图像/视频数据进行审核
- 分析图像中的人脸相关信息,包括名人、年龄范围、面部的检测框、置信度值等属性
- 提取图片中的文本,再使用Comprehend、Bedrock进行文本审核
使用 Amazon Comprehend 对文本数据进行情绪分析、个人信息提取、毒性检测,包括:
- 毒性检测,分析文本中的不合适内容,检测是否有包含脏话,暴力等相关内容
- 分析文本情绪,识别文本中的个人身份信息 (PII) 实体,如年龄、地址等信息
- 使用 Amazon Bedrock 中集成的大语言模型 Claude v2,通过对提示词自定义内容审核策略,对文本数据进行内容审核
- 使用 Amazon Transcribe 对语音进行毒性分类,类别包括脏话、仇恨言论、侮辱等;检测到的文本信息再使用 Comprehend、Bedrock 进行文本审核
- 使用 Amazon Translate 将文本语言转换为英文
- 通过 Amazon CloudWatch 监控 AWS Lambda 的每次执行,并将日志记录到 CloudWatch Logs 中
- 审核结果,部分以 JSON 格式存储至 S3
部署步骤
部署步骤请参考该说明。
Demo2 音频文本数据审核及分析
在线游戏和社交社区为用户提供语音和文本聊天功能进行交流。尽管语音和文本聊天通常支持友好的闲聊,但它也可能导致仇恨言论、网络欺凌、骚扰和诈骗等问题。如今,许多公司仅依靠人工审核员来审查有毒内容。然而,验证聊天中的违规行为是耗时、容易出错且难以扩展的。
此存储库包含两个示例演示,作为 Streamlit 应用程序,展示使用 AWS AI 服务和生成式AI的音频和文本管理。每个演示都包括一个 UI 页面,允许您上传音频或文本文件以启动分析。上传后,您可以在“示例”选项卡中查看分析结果,并在“工作流”选项卡中探索架构设计。
音频分析及审核工作流
音频审核工作流程可以由用户在游戏平台上举报其他用户违反政策(如粗言秽语、仇恨言论或骚扰)而启动。这代表了一种被动的音频审核方法。人类审核员收到报告后,必须花时间调查对话以确定其是否违反平台政策。然而该过程可以主动触发。例如,在社交音频聊天室中,系统可以记录所有对话并以低延迟应用分析。被动和主动方法都可以触发下面的音频分析管道。
文本分析及审核工作流程
文本聊天审核工作流程遵循与音频审核类似的模式,但它利用了专为文本审核量身定制的 Amazon Comprehend 毒性分析。示例应用程序支持上传 CSV 或 TXT 格式的批量文本的界面,并提供用于快速测试的界面。
推荐环境
这个 Streamlit 中的示例应用程序展示了音频和文本聊天管理的工作流程。要启动 Web 服务并浏览网站,我们建议使用现代浏览器(Windows 或 Mac)的本地桌面,或使用 Amazon Cloud9,或启动 Windows EC2 实例。这样,您可以使用浏览器访问托管在同一台机器上的网站,避免需要额外的网络安全设置。
准备
- 您需要一个 IAM 角色或用户,可以访问 AWS 服务,包括 S3、Amazon Rekognition ,Amazon Comprehend,Amazon Transcribe,Amazon Translate , Amazon Bedrock 和 Amazon OpenSearch。
- 在 Amazon Bedrock 中,请确保您可以访问 LLM。有关详细信息,请参阅此说明。
- 此演示利用 Amazon Bedrock 知识库作为托管 RAG,使用LLM进行策略评估。要运行演示,请在 AWS 控制台中创建知识库并上传您的信任和安全策略。然后,使用您生成的知识库 ID 设置环境可变 BEDROCK_KNOWLEDGE_BASE_ID 值。要设置 Bedrock 知识库,请参阅此说明。
开始部署
将源代码克隆到本地
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) |
准备
安装环境依赖,设置鉴权
- Install Node.js
- Install Python 3.8+
- Install Git
- Install Pip
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