Vertex AI Vision 是一个由 AI 赋能的平台,可用于注入、分析和存储视频 数据。借助 Vertex AI Vision,您可以构建和部署 AI 应用。您可以利用 Vertex AI Vision 与其他产品组件的集成来构建端到端 Vertex AI Vision 解决方案。
如需开始使用 Vertex AI Vision 平台实现解决方案,请查看以下 Vertex AI Vision 概念和组件:
视频串流:表示解决方案中的视频串流层。视频流来源可以是实时视频(例如 IP 摄像头),也可以是视频文件(例如 MP4 文件)。
应用:实现视频流与 AI 处理器之间的连接,以对视频执行机器学习操作。例如,您可以将摄像头视频流连接到可统计摄像头前经过的人数的人工智能模型。
应用输出目的地:将分析后的数据发送到存储目的地(Vertex AI Vision 的媒体仓库或 BigQuery),或接收实时数据。将数据存储到 Vertex AI Vision 的媒体仓库后,您便可以搜索从已注入视频流的数据中使用的 AI 处理器获得的分析输出和元数据。将数据存储到 BigQuery 可让您使用该产品的离线分析功能。如果您直接接收应用输出,则可以利用数据分析立即做出业务决策。如需了解详情,请参阅概览:将应用输出连接到数据目标位置。
目标
本教程介绍了如何执行以下操作:
- 创建 BigQuery 数据集和表。
- 构建一个连接到 BigQuery 的 Vertex AI Vision 占用情况分析应用。
- 创建 Compute Engine 虚拟机实例并设置其环境。
- 将视频从虚拟机实例流式传输到应用。
- 使用存储的应用输出通过 BigQuery ML 创建预测模型。
费用
在本文档中,您将使用 Google Cloud的以下收费组件:
- Vertex AI Vision (Streams - Data ingested, Streams - Data consumed, Models - Occupancy analytics suite)
- Compute Engine
- BigQuery
如需根据您的预计使用情况来估算费用,请使用价格计算器。
完成本文档中描述的任务后,您可以通过删除所创建的资源来避免继续计费。如需了解详情,请参阅清理。
准备工作
- 登录您的 Google Cloud 账号。如果您是 Google Cloud新手,请 创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the BigQuery, Compute Engine and Vision AI APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Create a service account:
-
Ensure that you have the Create Service Accounts IAM role
(
roles/iam.serviceAccountCreator) and the Project IAM Admin role (roles/resourcemanager.projectIamAdmin). Learn how to grant roles. -
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart. - Click Create and continue.
-
Grant the following roles to the service account: Vision AI > Vision AI Editor, Compute Engine > Compute Instance Admin (beta), BigQuery > BigQuery Data Owner, Storage > Storage Object Viewer†.
To grant a role, find the Select a role list, then select the role.
To grant additional roles, click Add another role and add each additional role.
- Click Continue.
-
Click Done to finish creating the service account.
Do not close your browser window. You will use it in the next step.
-
Ensure that you have the Create Service Accounts IAM role
(
-
Create a service account key:
- In the Google Cloud console, click the email address for the service account that you created.
- Click Keys.
- Click Add key, and then click Create new key.
- Click Create. A JSON key file is downloaded to your computer.
- Click Close.
-
安装 Google Cloud CLI。
-
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the BigQuery, Compute Engine and Vision AI APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Create a service account:
-
Ensure that you have the Create Service Accounts IAM role
(
roles/iam.serviceAccountCreator) and the Project IAM Admin role (roles/resourcemanager.projectIamAdmin). Learn how to grant roles. -
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart. - Click Create and continue.
-
Grant the following roles to the service account: Vision AI > Vision AI Editor, Compute Engine > Compute Instance Admin (beta), BigQuery > BigQuery Data Owner, Storage > Storage Object Viewer†.
To grant a role, find the Select a role list, then select the role.
To grant additional roles, click Add another role and add each additional role.
- Click Continue.
-
Click Done to finish creating the service account.
Do not close your browser window. You will use it in the next step.
-
Ensure that you have the Create Service Accounts IAM role
(
-
Create a service account key:
- In the Google Cloud console, click the email address for the service account that you created.
- Click Keys.
- Click Add key, and then click Create new key.
- Click Create. A JSON key file is downloaded to your computer.
- Click Close.
-
安装 Google Cloud CLI。
-
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
† 仅当您从 Cloud Storage 存储桶复制示例视频文件时才需要此角色。
设置 BigQuery 以接收数据
为了能够接收数据并根据分析应用数据进行预测,您必须创建与处理后的信息相匹配的 BigQuery 数据集和表。
创建数据集
在创建 BigQuery 表之前,您必须先创建一个数据集,以接收来自应用的分析信息。
控制台
在 Google Cloud 控制台中打开 BigQuery 页面。
在探索器面板中,选择您要在其中创建数据集的项目。
展开 操作选项,然后点击创建数据集。
在创建数据集页面中执行以下操作:
创建 BigQuery 表
控制台
在 Google Cloud 控制台中,前往 BigQuery 页面。
- 在探索器窗格中,展开您的项目,然后选择
occupancy_dataset数据集。 - 在数据集信息部分中,点击 创建表。
- 在创建表面板中,指定以下详细信息:
- 在来源部分,在基于以下数据源创建表列表中选择空表。
- 在目标部分,指定以下详细信息:
- 验证数据集字段中是否指定了
occupancy_dataset。 - 在表字段中,输入
occupancy_dataset_table。 - 验证表类型字段是否设置为原生表。
- 验证数据集字段中是否指定了
- 在架构部分,输入架构定义。您可以通过以下方式手动输入架构信息:
- 点击
以文本形式修改,然后粘贴以下 JSON 数组架构。使用 JSON 数组时,您要使用与创建 JSON 架构文件相同的流程生成架构。
[ { "name": "ingestion_time", "type": "TIMESTAMP", "mode": "REQUIRED" }, { "name": "application", "type": "STRING", "mode": "REQUIRED" }, { "name": "instance", "type": "STRING", "mode": "REQUIRED" }, { "name": "node", "type": "STRING", "mode": "REQUIRED" }, { "name": "annotation", "type": "STRING" } ]
- 点击
以文本形式修改,然后粘贴以下 JSON 数组架构。使用 JSON 数组时,您要使用与创建 JSON 架构文件相同的流程生成架构。
- 点击创建表。
创建入座率统计应用
设置好 BigQuery 数据集和表后,您可以创建应用来处理发送到这些 BigQuery 资源的数据。
创建空应用
在填充应用图之前,您必须先创建一个空应用。
控制台
在 Google Cloud 控制台中创建应用。
打开 Vertex AI Vision 信息中心的应用标签页。
点击创建按钮。
输入
occupancy-bq-app作为应用名称,然后选择您所在的区域。点击创建。
添加应用组件节点
创建空应用后,您可以将以下三个节点添加到应用图中:
- 注入节点:用于注入您创建的 Compute Engine 虚拟机实例发送的数据的流资源。
- 处理节点:对提取的数据进行处理的入住率分析模型。
- BigQuery 节点:一种连接器节点,可让您的应用将元数据存储到 BigQuery 表中。
控制台
在控制台中向应用添加组件节点。
打开 Vertex AI Vision 信息中心的应用标签页。
在
occupancy-bq-app行中,选择 查看图表。这样会显示处理流水线的图表可视化效果。
添加数据注入节点
如需添加输入视频流节点,请选择侧边菜单的连接器部分中的视频流选项。
在打开的视频流菜单的来源部分中,选择 添加视频流。
在添加视频流菜单中,选择 注册新的视频流,然后添加
occupancy-bq-stream作为视频流名称。如需将视频流添加到应用图表中,请点击添加视频流。
添加数据处理节点
如需添加入住人数统计模型节点,请选择侧边菜单的专用模型部分中的入住分析选项。
保留默认选择项:人员和车辆。
添加 BigQuery 节点
如需添加输出目标位置(存储)节点,请选择侧边菜单的连接器部分中的 BigQuery 选项。
在 BigQuery 菜单中,搜索
occupancy_dataset_table并选择您的表格。在存储以下来源的元数据:部分中,同时选择视频流和入住情况分析。
部署应用以供使用
在构建包含所有必需组件的端到端应用后,使用该应用的最后一步是部署它。
控制台
打开 Vertex AI Vision 信息中心的应用标签页。
选择列表中
occupancy-bq-app应用旁边的查看图表。在应用图表构建器页面中,点击部署按钮。
在随后的确认对话框中,选择部署。
部署操作可能需要几分钟才能完成。部署完成后,节点旁边会显示绿色对勾标记。
设置远程计算机以播放视频
现在,您已部署一个入住人数统计应用,该应用可以接收、处理流式数据并将其存储到 BigQuery 表中,接下来您必须将视频数据实际流式传输到该应用中。
在本教程中,您将创建一个托管视频的 Compute Engine 虚拟机实例,并从该虚拟机发送流式视频数据。
创建一个 Linux VM
从 Compute Engine 虚拟机实例发送视频的第一步是创建虚拟机实例。
控制台
设置虚拟机环境
虚拟机启动后,您可以使用控制台在浏览器中建立 SSH 连接。建立此连接后,您可以下载 vaictl 命令行工具,将视频注入到您的应用中。
控制台
与虚拟机建立 SSH 连接
在控制台中,打开虚拟机实例页面。
在您创建的实例行中的连接部分,点击 SSH。这将在新的浏览器窗口中打开 SSH 连接。

下载 vaictl 命令行工具
在浏览器中的 SSH 窗口中,使用以下命令下载 Vertex AI Vision (
vaictl) 命令行工具:wget https://github.com/google/visionai/releases/download/v0.0.5/visionai_0.0-5_amd64.deb运行以下命令来安装命令行工具:
sudo apt install ./visionai_0.0-5_amd64.deb您可以运行以下命令来测试安装:
vaictl --help
将视频文件提取到应用中
设置虚拟机环境后,您可以复制示例视频文件,然后使用 vaictl 将视频数据流式传输到入住人数统计应用。
发送此命令后,您必须让数据流式传输几个小时,然后才能继续执行下一步。
SSH-in-browser
将示例视频复制到虚拟机
- 在虚拟机的浏览器中的 SSH 窗口中,使用以下
gcloud storage cp命令复制示例视频。替换以下变量:- SOURCE:要使用的视频文件的位置。您可以使用自己的视频文件来源(例如
gs://BUCKET_NAME/FILENAME.mp4),也可以使用以下某个示例视频:
gcloud storage cp SOURCE .
- SOURCE:要使用的视频文件的位置。您可以使用自己的视频文件来源(例如
从虚拟机流式传输视频并将数据注入应用
- 如需将此本地视频文件发送到应用输入流,请使用以下命令。您必须进行以下变量替换:
- PROJECT_ID:您的 Google Cloud 项目 ID。
- LOCATION_ID:您的位置 ID。例如,
us-central1。更多信息。 - LOCAL_FILE.EXT:本地视频文件的文件名。
例如,
my-video.mp4。 --loop标志:可选。循环播放文件数据以模拟流式传输。
此命令会将视频文件流式传输到流中。如果使用
--loop标志,视频会循环播放到流中,直到您停止命令:vaictl -p PROJECT_ID \ -l LOCATION_ID \ -c application-cluster-0 \ --service-endpoint visionai.googleapis.com \ send video-file to streams 'occupancy-bq-stream' --file-path LOCAL_FILE.EXT --loop
从开始 vaictl 注入操作到视频显示在信息中心,可能需要大约 100 秒的时间。
在流注入可用后,您可以在 Vertex AI Vision 信息中心的流标签页中选择 occupancy-bq-stream 流,查看视频 Feed。
使用 BigQuery ML 构建预测模型
您现在有了一个可正常运行的应用,该应用可将元数据存储到 BigQuery。 在将几个小时的数据流式传输到应用中后,您就可以开始使用 BigQuery ML 构建预测模型了。
可选:运行入住情况查询
您可以通过运行简单的查询来查看存储到表中的应用生成的数据。
控制台
在 Google Cloud 控制台中,打开 BigQuery 页面。
选择
occupancy_dataset旁边的 展开,然后选择occupancy_dataset_table。在表格详情视图中,点击编写新查询。
在查询编辑器文本区域中输入以下 Google 标准 SQL 查询:
SELECT * FROM ( SELECT TIMESTAMP_TRUNC(PARSE_TIMESTAMP('"%Y-%m-%dT%H:%M:%E*SZ"', JSON_QUERY(annotation, "$.currentTime")), MINUTE) currentTime, CAST(JSON_QUERY(annotation, '$.stats.fullFrameCount[0].count') AS INT64) AS count, JSON_QUERY(annotation, '$.stats.fullFrameCount[0].entity.labelString') AS type FROM `PROJECT_ID.occupancy_dataset.occupancy_dataset_table` ) WHERE count IS NOT NULL
可选:如需更改数据处理位置,请点击更多,然后点击查询设置。在处理位置下,点击自动选择并选择数据的位置。最后,点击保存以更新查询设置。
点击运行。
这会创建一个将输出写入临时表中的查询作业。
运行此查询会生成一个表格,其中包含视频中有人物出现的时间和人数信息。
| currentTime | 计数 | 类型 |
|---|---|---|
| 2022-08-10 16:17:00 UTC | 2 | “人员” |
| 2022-08-10 16:17:00 UTC | 2 | “人员” |
| 2022-08-10 16:17:00 UTC | 4 | “人员” |
| 2022-08-10 16:17:00 UTC | 1 | “人员” |
| 2022-08-10 16:17:00 UTC | 5 | “人员” |
| 2022-08-10 16:17:00 UTC | 2 | “人员” |
创建训练视图
查看存储到表中的数据后,您可以创建视图,然后检查生成的表的内容。您可以使用此观看数据来训练预测模型。
要创建视图,您可以编写 SQL 查询来定义视图可访问的数据。 SQL 查询必须包含 SELECT 语句。如需详细了解 BigQuery 视图,请参阅视图简介。
如需创建训练表视图,请执行以下操作:
控制台
在 Google Cloud 控制台中,打开 BigQuery 页面。
选择
occupancy_dataset旁边的 展开,然后选择occupancy_dataset_table。在表格详情视图中,点击编写新查询。
在查询编辑器文本区域中输入以下 Google 标准 SQL 查询:
CREATE VIEW `PROJECT_ID.occupancy_dataset.forecast_training_data` AS ( WITH raw_counts AS ( SELECT * FROM ( SELECT TIMESTAMP_TRUNC( PARSE_TIMESTAMP('"%Y-%m-%dT%H:%M:%E*SZ"', JSON_QUERY(annotation, "$.currentTime")), MINUTE) AS currentTime, CAST(JSON_QUERY(annotation, '$.stats.fullFrameCount[0].count') AS INT64) AS count, JSON_QUERY(annotation, '$.stats.fullFrameCount[0].entity.labelString') AS type FROM `PROJECT_ID.occupancy_dataset.occupancy_dataset_table` ) WHERE count IS NOT NULL ) SELECT currentTime, SUM(count) AS total_count, type FROM raw_counts GROUP BY currentTime, type)
点击运行。
可选:查询视图
运行以下查询,查看新版视图训练数据的结果:
控制台
在
occupancy_dataset_table表详细信息视图中,点击 编写新查询。在查询编辑器文本区域中输入以下 Google 标准 SQL 查询:
SELECT * FROM `PROJECT_ID.occupancy_dataset.forecast_training_data` ORDER BY currentTime, type LIMIT 100
点击运行。
这会返回按时间排序的结果,如下所示:
| currentTime | total_count | 类型 |
|---|---|---|
| 2022-08-10 16:17:00 UTC | 129 | “人员” |
| 2022-08-10 16:18:00 UTC | 150 | “人员” |
| 2022-08-10 16:19:00 UTC | 80 | “人员” |
| 2022-08-10 16:20:00 UTC | 129 | “人员” |
| 2022-08-10 16:21:00 UTC | 142 | “人员” |
| 2022-08-10 16:22:00 UTC | 71 | “人员” |
| 2022-08-10 16:22:00 UTC | 2 | “车辆” |
使用 BigQuery ML 训练预测模型
现在,您已在视图中获得可作为训练数据的数据,接下来可以使用 BigQuery ML 训练预测模型。
控制台
在
occupancy_dataset_table表详细信息视图中,点击 编写新查询。在查询编辑器文本区域中输入以下 Google 标准 SQL 查询:
CREATE OR REPLACE MODEL `PROJECT_ID.occupancy_dataset.occupancy_forecast_model` OPTIONS( MODEL_TYPE = "ARIMA_PLUS", TIME_SERIES_TIMESTAMP_COL = "currentTime", TIME_SERIES_DATA_COL = "total_count", TIME_SERIES_ID_COL = "type" ) AS SELECT * FROM `PROJECT_ID.occupancy_dataset.forecast_training_data`
点击运行。
查询需要几分钟才能完成。第一次迭代完成后,您的模型 (occupancy_forecast_model) 会显示在导航面板中。由于查询使用 CREATE MODEL 语句来创建模型,因此您看不到查询结果。
您可以通过查看模型统计信息标签页来观察正在训练的模型。第一次迭代结束后,标签页会立即更新。每次迭代完成后,统计信息会继续更新。
使用 BigQuery 获取入住率预测结果
模型训练完成后,您可以让模型预测入住人数。
以下 ML.FORECAST 查询使用 HORIZON 函数输入来预测未来 60 分钟的情况。
控制台
在
occupancy_dataset_table表详细信息视图中,点击 编写新查询。在查询编辑器文本区域中输入以下 Google 标准 SQL 查询:
SELECT * FROM ML.FORECAST(MODEL `PROJECT_ID.occupancy_dataset.occupancy_forecast_model`, STRUCT(60 AS HORIZON))
点击运行。
模型会在 forecast_value 下生成未来时间戳的预测,其中类型为 "Person"。例如,在 2022-08-12 的 11:06:00,模型预测总共会有约 15.26 位“人员”。
| 类型 | forecast_timestamp | forecast_value | standard_error | confidence_level | prediction_interval_lower_bound | prediction_interval_upper_bound |
|---|---|---|---|---|---|---|
| “人员” | 2022 年 8 月 12 日 11:06:00(世界协调时间) | 15.2621986941298 | 2.56470066 | 0.95 | 10.2444693 | 20.2799280 |
| “人员” | 2022-08-12 11:07:00 UTC | 13.235260043001354 | 3.19379743 | 0.95 | 6.98672921 | 19.4837908 |
| “人员” | 2022-08-12 11:08:00 UTC | 16.257331475128712 | 3.87581375 | 0.95 | 8.67446430 | 23.8401986 |
| “人员” | 2022-08-12 11:09:00 UTC | 31.432229611853742 | 4.24905293 | 0.95 | 23.1191356 | 39.7453236 |
| “人员” | 2022-08-12 11:10:00 UTC | 26.199214148193725 | 4.26157413 | 0.95 | 17.8616229 | 34.5368053 |
| “人员” | 2022-08-12 11:11:00 UTC | 26.211573546307324 | 4.27962512 | 0.95 | 17.8386663 | 34.5844807 |
清理
为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。
删除项目
- 在 Google Cloud 控制台中,前往管理资源页面。
- 在项目列表中,选择要删除的项目,然后点击删除。
- 在对话框中输入项目 ID,然后点击关闭以删除项目。
删除各个资源
删除 Compute Engine 虚拟机实例
- 在 Google Cloud 控制台中,前往虚拟机实例页面。
- 选中要删除的实例对应的复选框。
- 如需删除实例,请点击更多操作,点击删除,然后按照说明操作。
删除 BigQuery 数据集
- 在 Google Cloud 控制台中,打开 BigQuery 页面。
-
选择项目旁边的展开,然后找到
您的
occupancy_dataset数据集。 - 如需删除数据集,请依次点击 操作和删除,然后按照说明操作。
删除数据流
- 在 Google Cloud 控制台中,前往数据流页面。
-
找到
您的
occupancy-bq-stream数据流。 - 如需删除数据流,请依次点击 操作和删除数据流,然后按照说明操作。
删除应用
- 在 Google Cloud 控制台中,前往应用页面。
-
找到
occupancy-bq-app应用。 - 如需删除应用,请依次点击 操作和删除应用,然后按照说明操作。
后续步骤
- 详细了解 Responsible AI 实践。
- 如需了解可添加到应用中的其他组件,请参阅构建应用。
- 如需了解其他输出存储和处理选项,请参阅将应用输出连接到数据目标位置。
- 了解如何在控制台中搜索 Warehouse 数据。
- 探索有关 Google Cloud 的参考架构、图表和最佳做法。查看我们的 Cloud 架构中心。