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

Original article was published on Deep Learning on Medium

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

建置專屬映像檔

目前,我們已可藉由單一 Job 的執行,來重現串流擷取與偵測的步驟。

不過,在每次執行 Job 時,都須先安裝 youtube-dl,帶來部分執行時間的增加。幸運的是,PrimeHub 具有建置專屬映像檔功能 Image Builder。因此,為了縮短 Job 執行時間,我將使用 Image Builder,建置一個具備先決環境 Image,以縮短後續執行時間的花費。

回到 User Portal,進入 Admin Dashboard

選擇 Image Builder,此處會顯示所有的 Image Builder list。

點選 Add,進入 Image Builder 的創建頁面。

在各個欄位輸入:

  • Name:tf2.1-py3.7-with-youtube-dl
  • Base Image:使用先前 TensorFlow 2.1 (Python 3.7) (Universal) 中 GPU 版本的 image URL
  • Package(s) > Pip:youtube-dl

一切設定完畢後,按下 Confirm

Image Builder list 顯示 tf2.1-py3.7-with-youtube-dl 開始 Running。

檢視該 Image Builder,會顯示其 builder job 的歷史紀錄。

檢視正在執行中的 builder job logs。

稍待片刻,帶有 youtube-dl 的 Image 建置完成,並已 pushed 至 Google Container Registry 中存放。(Registry 可自定)

Image Builder 的 job 已順利完成。

Image Builder list 亦顯示 tf2.1-py3.7-with-youtube-dl 已建置成功,可直接複製位於 Google Container Registry 的 Image URL。

由於該 Image 位於 private repo 內,因此須先新增 image pull secret。

進入 Secrets 頁面並點選 Add

在各個欄位輸入:

  • Name:gcr-pull-image-secret
  • Registry Host:https://gcr.io
  • Username
  • Password

輸入完畢後,按下 Confirm 即可完成新增。

接下來,進入 Images 頁面,此處紀錄著供 JupyterHubJob Submission 所存取的 images list。

點選 Add 進入 Image 的創建頁面。

在各個欄位輸入:

  • Name:tf2.1-py3.7-yt-dl
  • Type:gpu(僅供 GPU 的 Instance Type 使用)
  • Container image url:貼上剛才在 Image Builder 所複製 tf2.1-py3.7-with-youtube-dl 的 URL
  • Checked Use Image Pull Secret 並選擇剛才在 Secrets 頁面創建的 gcr-pull-image-secret
  • Groups:選擇所屬的 The A-Team。PrimeHub 將使用者以 Group 的方式管理,並可將資源(Instance Types、Images、Datasets)在 Group 之間做有效地共享或獨立。

設定完畢後,按下 Confirm 即可完成新增。

讓我們測試看看!

回到 Job Submission (Beta) > Create Job

  • Image 改為使用 tf2.1-py3.7-yt-dl
  • Command 的部分,把原先第 1 行的 pip install youtube-dl 移除

按下 Submit 吧!

從 Job logs 可得知,youtube-dl 已預先安裝且可正常運行。

縮短了執行時間,Job 執行完畢!

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

從影片可看出,接近傍晚的公館夜市,擁擠程度有略微提升。

Image Builder 主要的功能,是提供不同專案領域的使用者,能建置符合其需求的映像檔,例如影像、文字、以及生醫等機器學習領域,都有專屬的套件和函式庫可供選用。因此,透過 Image Builder 降低日後重複安裝套件的 efforts,可有效提升整體專案的效率。