在 PrimeHub 中使用 YOLOv4 定時偵測景點擁擠度 (2/4)

Original article was published on Deep Learning on Medium

在 PrimeHub 中使用 YOLOv4 定時偵測景點擁擠度 (2/4)

包裝成 JOB

前篇的實驗中,我們已可下載直播串流,再透過自定義的 darknet_video.py 產生結果並發送 Email ,且效果可如期地呈現該地擁擠程度。

接下來,我們來運用 PrimeHub 的 Job Submission 功能,將實驗步驟整理成一個小型的 pipeline,藉此產生出可重複執行的 Job

回到 User Portal,選擇 Job Submission (Beta)

進入 Job list 頁面,使用者可在此頁檢視所屬 Group 中所有 Job 的執行狀況。

點選 Create Job

在各個欄位輸入:

  • Group:The A-Team
  • InstanceTypes:GPU 1
  • Images:TensorFlow 2.1 (Python 3.7) (Universal)
  • Job name:object-detection
  • Command:
pip install youtube-dl
cd a-team/darknet
timeout -s SIGINT 10s youtube-dl -o stream.mp4 https://www.youtube.com/watch?v=WGLUUH5HEVA
python darknet_video.py
rm stream.mp4

1. 先以 pip install youtube-dl 安裝 youtube-dl 套件。

2. 切換至 a-team/darknet 目錄,這裡的 a-team 是預先 mount 好的 Group VolumeJupyterHubJob Submission 都可存取其中的檔案。我們可在 Job Submission 中載入先前用 JupyterHub 訓練好的模型、亦可在 JupyterHub 中載入用 Job Submission 同步回來的資料。

3. 下載直播串流檔,使用 timeout -s SIGINT 10s 強制中斷其執行。

4. 執行自定義的 darknet_video.py

5. 執行完畢後,移除下載的串流檔。

一切設定完畢後,就按下 Submit 吧!

Job list 顯示目前 Job 正處於 Pending 狀態。

點選 Job name — object-detection 進入其詳細頁面。目前狀態已進入 Preparing,而 Message 顯示運算資源不足,不過 Job Submission 同樣有支援 Auto-Scaling,僅需稍待片刻等 node auto scale-up 即可開始後續執行。

Job 進入 Running 狀態。

切換至 Logs tab,目前已開始安裝並執行 youtube-dl。

稍待片刻,我們的即時偵測完成囉!

切換回 Information tab,Job 更新至 Succeeded 狀態。

而 Job list 亦呈現我們的 Job 順利完成。

檢查 Email,發現由 Job Submission 寄來的偵測結果。

公館夜市目前的擁擠程度為低。

每張 frame 的數量圖。

檢查影片,該地實際擁擠狀況如預期,此影片為 2020/05/18 的下午 14:24 所擷取。