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 VM 執行個體並設定環境。
- 將 VM 執行個體的影片串流至應用程式。
- 使用儲存的應用程式輸出內容,透過 BigQuery ML 建立預測模型。
費用
在本文件中,您會使用 Google Cloud的下列計費元件:
- Vertex AI Vision (Streams - Data ingested, Streams - Data consumed, Models - Occupancy analytics suite)
- Compute Engine
- BigQuery
如要根據預測用量估算費用,請使用 Pricing Calculator。
完成本文所述工作後,您可以刪除已建立的資源,避免繼續計費。詳情請參閱清除所用資源一節。
事前準備
- 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.
-
Make sure 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.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure 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.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
† 如果要從 Cloud Storage bucket 複製範例影片檔案,才需要這個角色。
設定 BigQuery 接收資料
如要接收資料並根據 Analytics 應用程式資料進行預測,您必須建立與處理後資訊相符的 BigQuery 資料集和資料表。
建立資料集
建立 BigQuery 資料表前,您必須先建立資料集,才能接收應用程式的分析資訊。
主控台
在 Google Cloud 控制台中開啟 BigQuery 頁面。
在「Explorer」面板中,選取要建立資料集的專案。
展開「動作」
選項,然後按一下「建立資料集」。在「Create dataset」(建立資料集) 頁面:
- 在「Dataset ID」(資料集 ID) 中輸入
occupancy_dataset
。 針對「Data location」(資料位置),選擇資料集的地理位置。資料集在建立之後,該位置就無法改變。
針對「Default table expiration」(預設資料表到期時間),選擇下列其中一個選項:
- [Never] (永不):(預設) 在資料集中建立的資料表永遠不會自動刪除,只能手動刪除。
[Number of days after table creation] (資料表建立後的天數):這個值會決定新建立的資料集什麼時候會遭到刪除。如果您在建立資料表時未設定資料表到期時間,系統就會套用這個值。
點選「建立資料集」。
- 在「Dataset ID」(資料集 ID) 中輸入
建立 BigQuery 資料表
控制台
前往 Google Cloud 控制台的「BigQuery」頁面。
- 在「Explorer」窗格中展開專案,然後選取
occupancy_dataset
資料集。 - 在「資料集資訊」部分,按一下 「建立資料表」。
- 在「Create table」(建立資料表) 面板中,指定下列詳細資料:
- 在「來源」部分,從「使用下列資料建立資料表」清單中選取「空白資料表」。
- 在「目的地」部分,指定下列詳細資料:
- 確認「資料集」欄位中已指定
occupancy_dataset
。 - 在「Table」(資料表) 欄位中輸入
occupancy_dataset_table
。 - 確認「Table type」(資料表類型) 欄位已設為「Native table」(原生資料表)。
- 確認「資料集」欄位中已指定
- 在「Schema」(結構定義) 區段中,輸入結構定義。您可以透過下列方式手動輸入結構定義資訊:
- 按一下「以文字形式編輯」建立 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 VM 執行個體傳送的資料。
- 處理節點:根據擷取資料運作的占用率分析模型。
- BigQuery 節點:連接器節點,可讓應用程式將中繼資料儲存至 BigQuery 資料表。
控制台
在管理中心將元件節點新增至應用程式。
開啟 Vertex AI Vision 資訊主頁的「應用程式」分頁。
在
occupancy-bq-app
行中,選取「查看圖表」 。這會將您導向至處理管道的圖表視覺化畫面。
新增資料匯入節點
如要新增輸入串流節點,請在側邊選單的「Connectors」(連接器) 區段中選取「Streams」(串流) 選項。
在隨即開啟的「Stream」(串流) 選單中,選取「Source」(來源) 區段的
「Add Stream」(新增串流)。在「新增串流」選單中,選擇「註冊新串流」
,然後新增occupancy-bq-stream
做為串流名稱。如要將串流新增至應用程式圖表,請按一下「新增串流」。
新增資料處理節點
如要新增入住人數計數模型節點,請在側邊選單的「Specialized models」(專業模型) 區段中,選取「occupancy analytics」(入住人數分析) 選項。
保留預設選取項目「人物」
和「車輛」 。
新增 BigQuery 節點
如要新增輸出目的地 (儲存空間) 節點,請在側邊選單的「Connectors」(連接器) 區段中選取「BigQuery」選項。
在「BigQuery」BigQuery選單中搜尋
occupancy_dataset_table
,然後選取資料表。在「儲存中繼資料來源:」部分中,選取「串流」和「車輛乘載人數分析」。
部署應用程式以供使用
使用所有必要元件建構端對端應用程式後,最後一個步驟就是部署應用程式。
控制台
開啟 Vertex AI Vision 資訊主頁的「應用程式」分頁。
在清單中,選取
occupancy-bq-app
應用程式旁邊的「查看圖表」。在應用程式圖表建構工具頁面中,按一下「部署」
按鈕。在隨即顯示的確認對話方塊中,選取「Deploy」。
部署作業可能需要幾分鐘才能完成。部署作業完成後,節點旁會顯示綠色勾號。
設定遠端電腦串流影片
您已部署入住人數計數應用程式,準備接收、處理串流資料,並將資料儲存至 BigQuery 資料表,現在必須將影片資料串流至應用程式。
在本教學課程中,您將建立 Compute Engine VM 執行個體來代管影片,並從該 VM 傳送串流影片資料。
建立 Linux VM
從 Compute Engine VM 執行個體傳送影片的第一步,是建立 VM 執行個體。
主控台
設定 VM 環境
VM 啟動後,您可以使用控制台在瀏覽器中建立 SSH 連線。建立連線後,即可下載 vaictl
指令列工具,將影片匯入應用程式。
主控台
與 VM 建立 SSH 連線
前往控制台的「VM instances」(VM 執行個體) 頁面。
在您建立的執行個體列的「連線」部分,按一下「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
將影片檔擷取至應用程式
設定 VM 環境後,您可以複製範例影片檔案,然後使用 vaictl
將影片資料串流至入住人數計數應用程式。
傳送這項指令後,請先讓資料串流傳輸數小時,再進行下一個步驟。
直接透過瀏覽器進行 SSH 連線
將範例影片複製到 VM
- 在 VM 的「SSH-in-browser」(直接透過瀏覽器進行 SSH 連線) 視窗中,使用下列
gcloud storage cp
指令複製範例影片。替換下列變數:- SOURCE:要使用的影片檔案位置。你可以使用自己的影片檔案來源 (例如
gs://BUCKET_NAME/FILENAME.mp4
),或使用下列其中一個範例影片:
gcloud storage cp SOURCE .
- SOURCE:要使用的影片檔案位置。你可以使用自己的影片檔案來源 (例如
從 VM 串流影片,並將資料擷取至應用程式
- 如要將這個本機影片檔案傳送至應用程式輸入串流,請使用下列指令。您必須進行下列變數替換:
- 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
從開始擷取作業到影片顯示在資訊主頁,可能需要約 100 秒。vaictl
串流擷取功能上線後,選取 occupancy-bq-stream
串流,即可在 Vertex AI Vision 資訊主頁的「串流」分頁中查看影片動態饋給。
使用 BigQuery ML 建構預測模型
您現在有一個可運作的應用程式,可將中繼資料儲存到 BigQuery。將資料串流至應用程式幾小時後,您就可以開始使用 BigQuery ML 建立預測模型。
選用:執行入住率查詢
您可以執行簡單的查詢,查看應用程式產生的資料是否已儲存至資料表。
主控台
在 Google Cloud 控制台開啟「BigQuery」頁面。
選取
occupancy_dataset
旁邊的「展開」 ,然後選取occupancy_dataset_table
。在資料表詳細資料檢視畫面中,按一下「撰寫新查詢」
。在「Query editor」(查詢編輯器) 文字區域中輸入下列 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
選用:如要變更資料處理位置,請按一下「更多」,然後按一下「查詢設定」。在「Processing location」(處理位置) 下,按一下 [Auto-select] (自動選取),然後選擇您資料的位置。最後,按一下 [Save] (儲存),更新查詢設定。
按一下 [Run] (執行)。
這會建立一個查詢工作,將輸出寫入暫時性資料表。
執行這項查詢會產生表格,其中包含影片中有人物時的時間和計數資訊。
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 檢視表,請參閱「檢視表簡介」。
如要建立訓練資料表檢視畫面:
主控台
在 Google Cloud 控制台開啟「BigQuery」頁面。
選取
occupancy_dataset
旁邊的「展開」 ,然後選取occupancy_dataset_table
。在資料表詳細資料檢視畫面中,按一下「撰寫新查詢」
。在「Query editor」(查詢編輯器) 文字區域中輸入下列 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
資料表詳細資料檢視畫面中,按一下「撰寫新查詢」 。在「Query editor」(查詢編輯器) 文字區域中輸入下列 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 | 「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」 |
2022-08-10 16:21:00 UTC | 142 | 「Person」 |
2022-08-10 16:22:00 UTC | 71 | 「Person」 |
2022-08-10 16:22:00 UTC | 2 | 「車輛」 |
使用 BigQuery ML 訓練預測模型
現在您已在檢視畫面中取得資料,可做為訓練資料,接下來可以使用 BigQuery ML 訓練預測模型。
主控台
在
occupancy_dataset_table
資料表詳細資料檢視畫面中,按一下「撰寫新查詢」 。在「Query editor」(查詢編輯器) 文字區域中輸入下列 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
資料表詳細資料檢視畫面中,按一下「撰寫新查詢」 。在「Query editor」(查詢編輯器) 文字區域中輸入下列 Google 標準 SQL 查詢:
SELECT * FROM ML.FORECAST(MODEL `PROJECT_ID.occupancy_dataset.occupancy_forecast_model`, STRUCT(60 AS HORIZON))
按一下「執行」。
模型會在 forecast_value
下產生預測結果,適用於 type 為 "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 帳戶收取本教學課程中所用資源的相關費用,請刪除含有該項資源的專案,或者保留專案但刪除個別資源。
刪除專案
- 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.
刪除個別資源
刪除 Compute Engine VM 執行個體
- 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.
刪除 BigQuery 資料集
- 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.
後續步驟
- 進一步瞭解負責任的 AI 做法。
- 如要瞭解可新增至應用程式的其他元件,請參閱「建構應用程式」。
- 如要瞭解其他輸出儲存空間和處理選項,請參閱「將應用程式輸出結果連結至資料目的地」一文。
- 請參閱這篇文章,瞭解如何在控制台中查看搜尋倉儲資料。
- 探索 Google Cloud 的參考架構、圖表和最佳做法。 歡迎瀏覽我們的雲端架構中心。