Vertex AI Vision 是一个由 AI 提供支持的平台,可用于注入、分析和存储视频 数据。借助 Vertex AI Vision,您可以构建和部署 AI 应用。您可以利用 Vertex AI Vision 与其他产品组件的集成来构建端到端 Vertex AI Vision 解决方案。
如需开始使用 Vertex AI Vision 平台实现解决方案,请查看以下 Vertex AI Vision 概念和组件:
信息流:表示解决方案中的视频流式传输层。视频流来源可以是实时视频(例如 IP 摄像头),也可以是视频文件(例如 MP4 文件)。
应用:实现视频流与 AI 处理器之间的连接,以便对视频执行机器学习操作。例如,您可以将摄像头视频流连接到可统计摄像头前人数的 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
您可使用价格计算器根据您的预计使用情况来估算费用。
完成本文档中描述的任务后,您可以通过删除所创建的资源来避免继续计费。如需了解详情,请参阅清理。
准备工作
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, Compute Engine and Vision AI APIs.
-
Create a service account:
-
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.
-
-
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.
-
Install the 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.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, Compute Engine and Vision AI APIs.
-
Create a service account:
-
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.
-
-
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.
-
Install the Google Cloud CLI.
-
如果您使用的是外部身份提供方 (IdP),则必须先 使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
在 Google Cloud 控制台中打开 BigQuery 页面。
在探索器面板中,选择您要在其中创建数据集的项目。
展开
操作选项,然后点击创建数据集。在创建数据集页面中执行以下操作:
在 Google Cloud 控制台中,前往 BigQuery 页面。
- 在探索器窗格中,展开您的项目,然后选择
occupancy_dataset
数据集。 - 在数据集信息部分中,点击 创建表。
- 在创建表面板中,指定以下详细信息:
- 在来源部分,在基于以下数据源创建表列表中选择空表。
- 在目标部分,指定以下详细信息:
- 验证数据集字段中是否指定了
occupancy_dataset
。 - 在表字段中,输入
occupancy_dataset_table
。 - 验证表类型字段是否设置为原生表。
- 验证数据集字段中是否指定了
- 在架构部分,输入架构定义。您可以通过以下方式手动输入架构信息:
- 点击 创建 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 架构文件相同的流程生成架构。
- 点击创建表。
打开 Vertex AI Vision 信息中心的应用标签页。
点击
创建按钮。输入
occupancy-bq-app
作为应用名称,然后选择您所在的区域。点击创建。
- 提取节点:用于提取您创建的 Compute Engine 虚拟机实例发送的数据的流资源。
- 处理节点:对提取的数据执行操作的入住分析模型。
- BigQuery 节点:连接器节点,可让您的应用将元数据存储到 BigQuery 表中。
打开 Vertex AI Vision 信息中心的应用标签页。
在
occupancy-bq-app
行中,选择 查看图表。这样会进入处理流水线的图表可视化界面。如需添加输入视频流节点,请选择侧边菜单的连接器部分中的视频流选项。
在打开的视频流菜单的来源部分中,选择
添加视频流。在添加视频流菜单中,选择
注册新的视频流,然后添加occupancy-bq-stream
作为视频流名称。如需将视频流添加到应用图表中,请点击添加视频流。
如需添加入住人数统计模型节点,请选择侧边菜单的专用模型部分中的入住分析选项。
保留默认选择项:
人员和 车辆。如需添加输出目标位置(存储)节点,请选择侧边菜单的连接器部分中的 BigQuery 选项。
在 BigQuery 菜单中,搜索
occupancy_dataset_table
并选择您的表格。在存储以下来源的元数据:部分中,同时选择
视频流和 入住情况分析。打开 Vertex AI Vision 信息中心的应用标签页。
选择列表中
occupancy-bq-app
应用旁边的查看图表。在应用图表构建器页面中,点击
Deploy(部署)按钮。在随后的确认对话框中,选择部署。
部署操作可能需要几分钟才能完成。部署完成后,节点旁边会显示绿色对勾标记。
在控制台中,打开虚拟机实例页面。
在您创建的实例行中的连接部分,点击 SSH。这将在新的浏览器窗口中打开 SSH 连接。
在 SSH-in-browser 窗口中,使用以下命令下载 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
- 在虚拟机的浏览器中的 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
在 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
可选:如需更改数据处理位置,请点击更多,然后点击查询设置。在处理位置下,点击自动选择并选择数据的位置。最后,点击保存以更新查询设置。
点击运行。
在 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
点击运行。
在
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_dataset_table
表详细信息视图中,点击 编写新查询。在查询编辑器文本区域中输入以下 Google 标准 SQL 查询:
SELECT * FROM ML.FORECAST(MODEL `PROJECT_ID.occupancy_dataset.occupancy_forecast_model`, STRUCT(60 AS HORIZON))
点击运行。
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
- In the Google Cloud console, go to the VM instances page.
- Select the checkbox for the instance that you want to delete.
- To delete the instance, click More actions, click Delete, and then follow the instructions.
- In the Google Cloud console, open the BigQuery page.
-
Select
occupancy_dataset
dataset.
expand next to your project and locate
your - To delete the dataset, click Actions, click Delete, and then follow the instructions.
- In the Google Cloud console, go to the Streams page.
-
Locate
your
occupancy-bq-stream
stream. - To delete the stream, click Actions, click Delete stream, and then follow the instructions.
- In the Google Cloud console, go to the Applications page.
-
Locate
your
occupancy-bq-app
app. - To delete the app, click Actions, click Delete application, and then follow the instructions.
- 详细了解 Responsible AI 实践。
- 如需了解可添加到应用中的其他组件,请参阅构建应用。
- 如需了解其他输出存储和处理选项,请参阅将应用输出连接到数据目标位置。
- 了解如何在控制台中搜索 Warehouse 数据。
- 探索有关 Google Cloud 的参考架构、图表和最佳做法。查看我们的 Cloud 架构中心。
† 仅当您从 Cloud Storage 存储桶复制示例视频文件时才需要此角色。
设置 BigQuery 以接收数据
为了能够接收数据并根据分析应用数据做出预测,您必须创建与处理后的信息相匹配的 BigQuery 数据集和表。
创建数据集
在创建 BigQuery 表之前,您必须先创建一个数据集,以接收来自应用的分析信息。
控制台
创建 BigQuery 表
控制台
创建入座率统计应用
设置好 BigQuery 数据集和表后,您可以创建应用来处理发送到这些 BigQuery 资源的数据。
创建空应用
在填充应用图之前,您必须先创建一个空应用。
控制台
在 Google Cloud 控制台中创建应用。
添加应用组件节点
创建空应用后,您可以将以下三个节点添加到应用图表中:
控制台
在控制台中向应用添加组件节点。
添加数据注入节点
添加数据处理节点
添加 BigQuery 节点
部署应用以供使用
在构建包含所有必要组件的端到端应用后,使用该应用的最后一步是部署它。
控制台
设置远程计算机以播放视频
现在,您已部署一个入住人数统计应用,该应用可以接收、处理流式数据并将其存储到 BigQuery 表中,接下来您必须将视频数据实际流式传输到该应用中。
在本教程中,您将创建一个托管视频的 Compute Engine 虚拟机实例,并从该虚拟机发送流式视频数据。
创建一个 Linux VM
从 Compute Engine 虚拟机实例发送视频的第一步是创建虚拟机实例。
控制台
设置虚拟机环境
虚拟机启动后,您可以使用控制台在浏览器中建立 SSH 连接。建立此连接后,您可以下载 vaictl
命令行工具,将视频注入到您的应用中。
控制台
与虚拟机建立 SSH 连接
下载 vaictl
命令行工具
将视频文件提取到应用中
设置虚拟机环境后,您可以复制示例视频文件,然后使用 vaictl
将视频数据流式传输到入住人数统计应用。
发送此命令后,您必须让数据流式传输几个小时,然后才能继续执行下一步。
SSH-in-browser
将示例视频复制到虚拟机
从虚拟机流式传输视频并将数据注入应用
从开始执行 vaictl
注入操作到视频显示在信息中心,可能需要大约 100 秒的时间。
在流注入可用后,您可以在 Vertex AI Vision 信息中心的流标签页中选择 occupancy-bq-stream
流,查看视频 Feed。
使用 BigQuery ML 构建预测模型
您现在有了一个可正常运行的应用,该应用可将元数据存储到 BigQuery。 在将几个小时的数据流式传输到应用后,您就可以开始使用 BigQuery ML 构建预测模型了。
可选:运行入座率查询
您可以通过运行简单的查询来查看存储到表中的应用生成的数据。
控制台
这会创建一个将输出写入临时表中的查询作业。
运行此查询会生成一个表格,其中包含视频中有人物出现的时间和数量信息。
currentTime | 计数 | 类型 |
---|---|---|
2022-08-10 16:17:00 UTC | 2 | “Person” |
2022-08-10 16:17:00 UTC | 2 | “Person” |
2022-08-10 16:17:00 UTC | 4 | “Person” |
2022-08-10 16:17:00 UTC | 1 | “Person” |
2022-08-10 16:17:00 UTC | 5 | “Person” |
2022-08-10 16:17:00 UTC | 2 | “Person” |
创建训练视图
查看存储到表中的数据后,您可以创建视图,然后检查生成的表的内容。您可以使用此观看数据来训练预测模型。
要创建视图,您可以编写 SQL 查询来定义视图可访问的数据。 SQL 查询必须包含 SELECT
语句。如需详细了解 BigQuery 视图,请参阅视图简介。
如需创建训练表视图,请执行以下操作:
控制台
可选:查询视图
运行以下查询,查看新视图训练数据的结果:
控制台
这会返回按时间排序的结果,如下所示:
currentTime | total_count | 类型 |
---|---|---|
2022-08-10 16:17:00 UTC | 129 | “Person” |
2022-08-10 16:18:00 UTC | 150 | “Person” |
2022-08-10 16:19:00 UTC | 80 | “Person” |
2022-08-10 16:20:00 UTC | 129 | “Person” |
世界协调时间 (UTC) 2022-08-10 16:21:00 | 142 | “Person” |
2022-08-10 16:22:00 UTC | 71 | “Person” |
2022-08-10 16:22:00 UTC | 2 | “车辆” |
使用 BigQuery ML 训练预测模型
现在,您已在视图中准备好用作训练数据的数据,接下来可以使用 BigQuery ML 训练预测模型。
控制台
查询需要几分钟才能完成。第一次迭代完成后,您的模型 (occupancy_forecast_model
) 会显示在导航面板中。由于查询使用 CREATE MODEL
语句来创建模型,因此您看不到查询结果。
您可以通过查看模型统计信息标签页来观察正在训练的模型。第一次迭代结束后,标签页会立即更新。每次迭代完成后,统计信息会继续更新。
使用 BigQuery 获取入住率预测结果
模型训练完成后,您可以让模型预测入住人数。
以下 ML.FORECAST
查询使用 HORIZON
函数输入来预测未来 60 分钟的情况。
控制台
模型会在 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 |
---|---|---|---|---|---|---|
“Person” | 2022-08-12 11:06:00 UTC | 15.2621986941298 | 2.56470066 | 0.95 | 10.2444693 | 20.2799280 |
“Person” | 2022-08-12 11:07:00 UTC | 13.235260043001354 | 3.19379743 | 0.95 | 6.98672921 | 19.4837908 |
“Person” | 2022-08-12 11:08:00 UTC | 16.257331475128712 | 3.87581375 | 0.95 | 8.67446430 | 23.8401986 |
“Person” | 2022-08-12 11:09:00 UTC | 31.432229611853742 | 4.24905293 | 0.95 | 23.1191356 | 39.7453236 |
“Person” | 2022-08-12 11:10:00 UTC | 26.199214148193725 | 4.26157413 | 0.95 | 17.8616229 | 34.5368053 |
“Person” | 2022-08-12 11:11:00 UTC | 26.211573546307324 | 4.27962512 | 0.95 | 17.8386663 | 34.5844807 |
清理
为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。