利用亚马逊云上 AI 服务进行内容审核及分析
使用亚马逊云科技提供的一系列托管人工智能服务,打造自动化的智能化内容审核系统包括图像、视频、文本和音频审核工作流程,及时过滤不合适的内容,给用户带来更好的体验。
![Olawale Olaleye Olawale Olaleye](https://d1.awsstatic.com/xuefezha-jennie/%e7%ba%a7%e5%88%ab_level%201.01c35fea97656a6beac50b0c8ae81e8afc1eedef.png)
![](https://d1.awsstatic.com/xuefezha-jennie/Group%20281.67a8494bd80a4bd979e37efcb490ada486dd72ae.png)
实验时长:Demo1: 20 分钟、Demo2: 20 分钟、Demo3: 45 分钟
本实验由 3 个小实验组成,每个实验均可单独进行,可按需选择
![](https://d1.awsstatic.com/xuefezha-jennie/code-icon.4d6cc6173fc04e1c6c381f942f75c083b207f0e1.png)
以美东 1 区为例子,按照教程中的步骤操作并在教程结束的 1 小时内终止相应资源,所需费用将不超过 10 USD
![](https://d1.awsstatic.com/xuefezha-cuiyue/%e5%8f%97%e4%bc%97.ec79ca7187b33930cbc3778363e0ffe47678b4b2.png)
数据科学家、算法工程师、软件工程师、全栈开发人员
![](https://d1.awsstatic.com/xuefezha-jennie/code-icon.4d6cc6173fc04e1c6c381f942f75c083b207f0e1.png)
![](https://d1.awsstatic.com/xuefezha-jennie/Group%20287.a27381901d308706720071b52d42054d154eab4c.png)
![](https://d1.awsstatic.com/xuefezha-cuiyue/%e7%9b%b8%e5%85%b3%e8%a1%8c%e4%b8%9a.c27a497f103cefdc79680b531405362c240fc68b.png)
游戏 / 社交媒体/ 电商 / 广告运营
本文我们将探讨,如何使用亚马逊云科技提供的一系列托管人工智能服务 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 显示界面:
![](https://d1.awsstatic.com/guoheng/use-ai-services-on-amazon-cloud-for-content-review-and-analysis/use-ai-services-img4.a546f837d842f801b6c81ab74b7a475a31676675.png)
音频文件测试结果显示
![](https://d1.awsstatic.com/guoheng/use-ai-services-on-amazon-cloud-for-content-review-and-analysis/use-ai-services-img5.5e6129281340e4ba0ba065e57fb1ca11c1da9ede.png)
文本文件测试结果显示
![](https://d1.awsstatic.com/guoheng/use-ai-services-on-amazon-cloud-for-content-review-and-analysis/use-ai-services-img6.505e2edfc391677d06f25b774330112998353326.png)
![](https://d1.awsstatic.com/guoheng/use-ai-services-on-amazon-cloud-for-content-review-and-analysis/use-ai-services-img7.4383e023b0e1d4448d97b783a3917962cb8820cd.png)
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 中提供的电子邮件。用户可以使用此信息登录门户网站。
![](https://d1.awsstatic.com/guoheng/use-ai-services-on-amazon-cloud-for-content-review-and-analysis/use-ai-services-img8.5fa920ea1105ee38909635a48f63077529efc092.png)
登陆后页面中是无视频的,图中的视频是测试预先上传的一些视频数据。
![](https://d1.awsstatic.com/guoheng/use-ai-services-on-amazon-cloud-for-content-review-and-analysis/use-ai-services-img9.b23431fac98db9d4909c0faeb2b0c9684fa29cd5.png)
![](https://d1.awsstatic.com/guoheng/use-ai-services-on-amazon-cloud-for-content-review-and-analysis/use-ai-services-img10.4d37cdb6fa6a6934f717f2a20ad0ad9ccf1d7425.png)
访问 OpenSearch 面板
该解决方案将 OpenSearch 服务数据库部署到私有子网中。最终用户通过会话管理器中 AWS 端口转发访问 OpenSearch 仪表板,无需向互联网公开 SSH 端口。
![](https://d1.awsstatic.com/guoheng/use-ai-services-on-amazon-cloud-for-content-review-and-analysis/use-ai-services-img11.4a2bebf3d39d8be74f812295562152afa424cfa7.png)
将和替换为 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