在 PrimeHub 中使用 PyTorch Hub 的 YOLOV5 以及 OpenAI 的 CLIP 模型,快速打造行人安全的偵測系統



Original Source Here

4. 建構自動化流程

確認部署的模型可重複提供服務後,接著我們透過 PrimeHub Jobs 來建立實際的監控和資料流程。回到 PrimeHub,進入 Jobs 頁面並點選 New Job

輸入下列資訊:

  • Instance Type:CPU 為 1Memory 為 2 G
  • Image:AI notebook(預安裝機器學習套件、CPU 版、Python 3.7)
  • Job Name:object-monitoring-test
  • Command:
# 安裝 jq 和 youtube-dl 套件
sudo apt-get update
sudo apt-get install jq -y
pip install youtube-dl
# PrimeHub 提供 Job Artifacts 功能,我們只需將檔案產生於 artifacts 目錄下
# 即可在 job 執行完畢後,透過 UI 檢視檔案
mkdir -p artifacts
cd artifacts/
# 使用 youtube-dl 擷取桃園大溪老街的即時串流,存於 stream.mp4
timeout -s SIGINT 5s youtube-dl -o stream.mp4 https://www.youtube.com/watch?v=z_mlibCfgFI
# 從即時串流中取出一張 frame,存於 frame.jpg
ffmpeg -i stream.mp4 -ss 00:00:01 -vframes 1 frame.jpg
# 將 frame.jpg 送入部署好的模型,將結果解碼並存於 result.jpg
curl -F "binData=@frame.jpg" https://hub.a.demo.primehub.io/deployment/object-monitoring-4e518/api/v1.0/predictions | jq -r .binData | base64 --decode > "result.jpg"

填完 Job 所需資訊後,按下 Submit,稍待一會兒就能看結果囉!

Job 成功執行完畢,進入其資訊頁面並點選 Artifacts tab,首先檢視 stream.mp4(大溪老街的即時串流)。

接著是 frame.jpg (即時串流中的單張影像)。

最後是 result.jpg(由於無行人經過,因此暫無預測結果)。

目前已可透過 Job 自動抓影像、並自動送入模型預測,而在將 Job 轉換為定時執行的 Schedule 前,我想對 Job 的 Command 做一些優化。目前 Job 每執行一次約需 30~34 秒,而以下 Command 為環境設置的部分,可預先安裝於 image,避免每次執行時重複的安裝。

# 安裝 jq 和 youtube-dl 套件
sudo apt-get update
sudo apt-get install jq -y
pip install youtube-dl

因此,進入 Images 頁面並點選 New Image

輸入下列資訊:

  • Display Name:object-monitoring-custom-image
  • 選擇 Build Custom Image
  • Base Image URL:選擇 AI notebook
  • Package — APT:jq
  • Package — PIP:youtube-dl

填完 Image 所需資訊後,按下 Create,稍等一下就能使用我們的客製化 image 了 🍰

點選 object-monitoring-custom-image,查看 building logs

image build 完後,即可在 Container Image URL 看到新的客製化 image URL

回到 Jobs,對剛才執行過的 object-monitoring-test 按下 Clone

接著在 Image 改選新的客製化 image — object-monitoring-custom-image,並移除 Command 中安裝套件的指令。

成功了,新 image 執行的時間明顯減少為 18 秒 🎉

最後,進入 Schedules 頁面並點選 New Schedule

輸入下列資訊:

  • Instance Type:CPU 為 1Memory 為 2 G
  • Image:object-monitoring-custom-image
  • Schedule Name:object-monitoring-daxi-old-street
  • Command:
# PrimeHub 提供 Job Artifacts 功能,我們只需將檔案產生於 artifacts 目錄下
# 即可在 job 執行完畢後,透過 UI 檢視檔案
mkdir -p artifacts
cd artifacts/
# 使用 youtube-dl 擷取桃園大溪老街的即時串流,存於 stream.mp4
timeout -s SIGINT 5s youtube-dl -o stream.mp4 https://www.youtube.com/watch?v=z_mlibCfgFI
# 從即時串流中取出一張 frame,存於 frame.jpg
ffmpeg -i stream.mp4 -ss 00:00:01 -vframes 1 frame.jpg
# 將 frame.jpg 送入部署好的模型,將結果解碼並存於 result.jpg
curl -F "binData=@frame.jpg" https://hub.a.demo.primehub.io/deployment/object-monitoring-4e518/api/v1.0/predictions | jq -r .binData | base64 --decode > "result.jpg"
  • Recurrence Options:0 * * * * (每小時的整點執行一次)

每隔一小時送出定義好的 Job,其運行於客製化的 image 環境,並將即時影像送入部署好的模型服務,可在短時間內完成場景中的物體異常偵測。

以下為實際場景的預測結果:

AI/ML

Trending AI/ML Article Identified & Digested via Granola by Ramsey Elbasheer; a Machine-Driven RSS Bot

%d bloggers like this: