使用 YOLOv5 完成 CVAT 自動影像標記

使用 YOLOv5 完成 CVAT 自動影像標記

手動標記影像上的物體是非常勞動密集且花時間的工作,儘管有好工具也是一樣。如果要進一步節省勞力與時間,我們可以用預訓練模型幫我們做標記。OpenCV底下的影像標記軟體 Computer Vision Annotation Tools(CVAT) 也支援自動影像標記功能。以下我將以電腦視覺模型YOLOv5為例分享怎麼在CVAT上實現自動影像標記。

事前準備

  • 作業系統:Linux, macOS, or Windows Subsystem for Linux 2(WSL2)
  • 如果你是用的是WSL 2,請接著安裝Ubuntu 20.04.5 LST
  • 影像標記軟體 CVAT
    CVAT的自動影像標記功能在Linux環境中比較穩定,在其他環境容易出錯。如果讀者的電腦是Windows系統,我的建議是把CVAT安裝在WSL2而不是直接安裝在Windows系統。如果讀者不確定你的CVAT被安裝在什麼環境下,請刪除原本的CVAT並參考【安裝影像標註軟體-CVAT】重新安裝。

使用有Nuclio的CVAT docker image

Nuclio是一個無伺服器(Serverless)平台,Serverless架構的Nuclio較一般的server簡單,適合用來快速製作無需資料庫的API。CVAT預設的docker image並沒有包含Nuclio。如果目前的docker已經有CVAT預設的image在運行的話,請先從終端機關掉它:

cd /where/you/put/cvat/source/code # 前往安裝CVAT的位置
docker compose down # 關閉該CVAT的docker image

啟動具Nuclio的CVAT container。

docker compose -f docker-compose.yml -f components/serverless/docker-compose.serverless.yml up -d # 啟動具serverless 架構的CVAT container

在Nuclio中建立YOLOv5服務

開啟Docker,會發現container中的CVAT多了nuclio服務以及埠8070的本地端網站。進入8070並進入Nuclio

圖一:具有Nuclio的CVAT,點擊8070進入Nuclio。

點擊New project後把專案取名為cvat,描述不寫也可以。

圖二:創立名叫cvat的專案

點擊cvat

圖三:點擊cvat後進入該專案

點擊New function

圖四:點擊NEW FUNCTION

匯入YOLOv5的yaml設定檔。這一次我們使用CVAT提供YOLOv5的設定檔,放在 cvat/serverless/pytorch/ultralytics/yolov5/nuclio/function.yaml

YOLOv5是一個開源的Computer Vision Model(電腦視覺模型)。使用YOLOv5的原因是它的簡單易用,在消費級GPU上也能跑,又有不錯的效能。由於他是被一家公司Utralytics所維護的,我並不確定YOLOv5是否會在未來繼續維持開源,也不確定YOLOv5何時會被用來營利。讀者也可以依照自己的需求改用其他的電腦視覺模型。這次我們在Nuclio上使用的是CPU版本的YOLOv5。

圖五:設定新函數的設定檔

修改source code,這裡我們使用的也是CVAT提供的預設source code,放在 cvat/serverless/pytorch/ultralytics/yolov5/nuclio/main.py

圖六:新函數的handler,描述這個新函數將會如何被調用

Nuclio中的每一個服務都運行在獨立的環境。如果要使該服務能存取本地端的資料,例如某一個訓練好的電腦視覺模型,請把該資料的資料夾掛載到/opt/nuclio/common上。順帶一題,本次使用的是官方預訓練過YOLOv5模型,只需要透過網路下載,不需要掛載任何的本地端資料夾。點擊DEPLOY後等一段時間,為的是下載並安裝YOLOv5所需的資料。

圖七:將本地端資料夾掛載到虛擬環境中。Mount Path是虛擬環境中的路徑,Host Path 是某一個本地端資料夾。

當Function顯示為Running時,代表安裝成功。

圖八:成功建立新函數

Hello World

回到CVAT的首頁,我們會發現功能列多了Model欄位,並且裏頭有YOLOv5。

圖九:在CVAT中查看可用的電腦視覺模型

隨便選取一個Task,我選的是MS COCO 128,接著在右方的action欄位中可以找到Automatic Annotation。點選該功能>設定相關的Mapping>保留或丟棄先前的標記>開始自動標記。等待進度條完成後,就可以檢查自動標記是否符合預期。

圖十:使用自動標記功能
圖十一:使用自動標記功能
圖十二:自動標記運行中的模樣

如果沒出現進度條,代表CVAT沒辦法調用你的電腦視覺模型。可以試著重開CVAT並觀察有無改善。如果還是不行的話,請檢查CVAT的安裝位置與方式,因為在Windows環境安裝的CVAT經常認不到Nuclio中的服務,必須把CVAT裝在WSL2中。

小結

不只是使用好的影像標記軟體,使用預訓練的電腦視覺模型做自動影像標記也能節省更多時間與人力。CVAT的自動影像標記支援非常多不同的電腦視覺模型,包含Tensorflow與Pytorch framework下的各式模型。如果有自己的電腦視覺模型的話,也可以套用這個框架,電腦視覺模型可以加速標記,更多的標記資料又能回過頭來強化電腦視覺模型,是非常適合用於新模型開發的良性循環。

所有文章分類

訂閱我吧

不再錯過每一篇新文章

*

Yi-Lung Chiu