使用 Cloud Video Intelligence 和 Cloud Vision API 处理用户生成的内容

本解决方案介绍用于部署可扩缩系统,以使用 Cloud Video IntelligenceCloud Vision API 过滤图片和视频提交内容的 Google Cloud Platform (GCP) 服务。

社交营销活动通常会邀请消费者提交他们生成的图片和视频,并将其用于大赛提交内容、产品推荐或公开活动网站上用户生成的内容。要大规模处理这些提交内容就需要用到大量资源,为此,Cloud Video Intelligence 和 Cloud Vision API 为您提供了一种可伸缩且无服务器的方式,可实现智能图片和视频过滤,以加速对提交内容的处理。如果您使用 Vision API 解决方案中的安全搜索功能以及 Video Intelligence API 中的露骨内容检测功能,则可以在进一步处理之前删除被识别为不安全或不良内容的图片和视频。

如需详细了解如何实现此解决方案,请按照本教程部署代码。

概念

构建用于处理用户生成的图片和视频的应用存在以下几个独特的挑战:

  • 可扩缩性

    在活动开始时,提交内容的数量迅速增加,但随着活动的结束,提交内容的数量几乎降至零。如果此流程内置于服务中,则必须根据用户活动进行调节。

  • 性能

    处理每张图片和每个视频需要高效、智能的流程。由于规模较大,应用必须高效存储和处理每个提交的视频和图片。

  • 智能

    在处理之前删减需要评估或审查的图片或视频可以大幅提高效率。应用需要对每个提交内容进行分类,并立即停止处理检测到不当内容的所有结果。

架构

使用 GCP 进行可伸缩且智能的处理

GCP 提供了一个可伸缩的平台,通过直观的 API 调用,可以使用预训练的机器学习 (ML) 模型处理提交内容。下图展示了可对图片和视频进行智能分类,并过滤掉不当结果的系统的架构。

图片和视频处理架构

Cloud Storage

在此架构中,您将所有内容存储在 Cloud Storage 中,后者可提供持久耐用且可扩缩的对象存储空间。Cloud Storage 的一个有用功能是它能够根据 Cloud Storage 存储分区中的事件生成通知消息。借助此功能,您可以为每个上传的文件指定操作。当您的应用将文件上传到 Cloud Storage 时,通知消息会触发处理过程。

下图展示了 Cloud Storage 通知消息的 JSON 载荷。

Cloud Storage 通知消息的 JSON 载荷

Cloud Pub/Sub

Cloud Pub/Sub 为您提供可扩缩且可靠的消息传递服务。在此架构中,当内容上传到 Cloud Storage 存储分区时,系统会生成 Cloud Pub/Sub 通知消息并将其发送到已配置的 Cloud Pub/Sub 主题。然后,Cloud Pub/Sub 会传输 Cloud Storage 通知消息。通过分离上传功能与处理功能,Cloud Pub/Sub 可以有效地将应用分离为基于微服务的后端架构。

Cloud Functions

Cloud Functions 提供轻量级、无服务器的应用环境,并集成了一系列高级 API,例如 Cloud Vision API 和 Cloud Video Intelligence API。此外,BigQuery、Cloud Storage、Cloud SpannerCloud Datastore 等存储服务也与 Cloud Functions 集成,使其成为处理按需事件的一种有用的方式。

下图展示了针对发送到 intelligentcontentfileupload 主题的每条消息触发 GCStoPubSub Cloud Functions 函数的 Cloud Pub/Sub 主题。

触发 Cloud Functions 函数的 Cloud Pub/Sub 主题

后端

一组侦听 Cloud Pub/Sub 主题的 Cloud Functions 函数提供后端处理。

  1. 每次有文件上传到 Cloud Storage 存储分区时,相应 Cloud Pub/Sub 主题都会收到一条消息。
  2. 后端应用从每条通知消息中解析 Cloud Storage 位置,并确定内容是图片还是视频。
  3. 然后,后端应用将 Cloud Pub/Sub 消息发送到一对 Cloud Functions 函数,调用 Cloud Vision API 或 Cloud Video Intelligence API,具体取决于文件是图片还是视频。
  4. 后端应用使用 API 调用结果,根据徽标、标签、文本和安全搜索结果对内容进行分类。

下图展示了每个 Cloud Functions 函数执行的处理步骤。在本示例中,结果存储在 BigQuery 中,但您也可以将结果存储在任何 GCP 数据存储服务中。

Cloud Functions 函数处理步骤

前端

在此架构中,您将图片和视频处理的结果存储在 BigQuery 中。 作为 GCP 的可扩缩分析引擎,BigQuery 可为 PB 级数据库提供基于 SQL 的简单访问。 此外,BigQuery 为您的应用提供了一种简单且可扩缩的方法以分析提交内容的标签。

Data Studio 提供了一个可视化信息中心,在其中,您可以使用由机器学习 API 生成的标签过滤提交的内容。借助标签,您可以轻松地动态过滤 Data Studio 信息中心组中的内容。

下图展示了一个简单的 Data Studio 信息中心,该信息中心由 BigQuery 的实时数据驱动。

简单的 Data Studio 信息中心

在 BigQuery 中处理和存储其他内容时,信息中心会反映这些更改。您可以按内容、标签或不当内容的数量过滤信息中心。

后续步骤