電腦視覺-物件偵測-影像標註

0. Promise: 在看完這篇文章後,將會了解:

  1. 取得標註工具 : LabelImg
  2. 操作 LabelImg
  3. 解讀 LabelImg 產生的 — Bounding Box — 資料
  4. 其實在標註自己的 Dataset 前,你也可以考慮 …

1. Preface: 前言

2. Setup Tool — LabelImg: 準備標註工具

  • 下載對應 Windows 的壓縮檔
  • Windows + Anaconda + Follow Cmd

下載對應 Windows 的壓縮檔

  • 以這邊的例子而言是 Windows_v1.8.0
  • 下載後,可以看到一個壓縮檔。
  • 解壓縮 Step 2 中的壓縮檔即可看到以下資料夾。

Windows + Anaconda + Follow Cmd

  • 點選此 Step 對應連結,可以看到 LabelImg 的 Github Repo,大家可以順手按個星星支持一下這個方便好用的工具喔!
可以發現作者方面一直有在維護此 Project,很多 Commit 都是近一個月內的。
  • 往下滑動,找到於 Windows + Anaconda 安裝的部份。
  • 想要執行上面的 Cmd,會需要先準備 Anaconda 工具包,如果電腦環境還沒有 Anaconda 請至 Anaconda 官方網站下載。[Link]
  • 開啟任何 Cmd Tool,像是已經下載好的 Anaconda Prompt。
  • Clone 此專案須執行以下指令
git clone https://github.com/tzutalin/labelImg.git
實際執行情況
  • 即可以在目標路徑(ex: Desktop)得到以下資料夾 — labelImg/
  • 開始安裝必要套件前,先 cd 進去 labelImg 資料夾內。
cd labelImg
  • 我們等等會需要在此 Step 中操作到 Step 2 圖片中看見的 Cmd,為方便大家複製貼上,在下方我們準備一模一樣的 Cmd。
conda install pyqt=5 
conda install -c anaconda lxml
pyrcc5 -o libs/resources.py resources.qrc
python labelImg.py
  • 執行第一步
conda install pyqt=5
  • 執行第二步
conda install -c anaconda lxml
  • 執行第三步
pyrcc5 -o libs/resources.py resources.qrc
  • 執行第四步,即可以看到 labelImg 操作介面
python labelImg.py

3. Tool Usage: 使用標註工具

  • 貓和狗的圖片各3張,我選擇放在同一個資料夾內(ex: animals/)。
  • 不管在第二步驟是使用哪種方法 Setup 好 LabelImg,都可以在其中找到 Data 這個資料夾。
  • 進入 Data 資料夾後,有一個原有的預設 predefined_classes.txt,我們使用此規範 Object 的種類有哪些。
  • 所以開啟 predefined_classes.txt,我們可以進行編輯。
編輯前
編輯後
  • 開啟 labelImg
  • 選擇 Open Dir,開啟於第一步準備好的資料夾(ex: animals/)。
  • 假設目的為使用 YOLO 作為訓練模型,那就需要切換標註模式至「YOLO」。
點擊 PascalVOC 之前的畫面
點選之後看到的畫面
  • 框選完畢後,labelImg 會立即跳出 Label 選項,在此可以發現,上面的選項會對應到編輯過後的 predefined_classes.txt 內容。接著選擇目標 Label (ex: cat),點選 OK。
  • 接著就可以點選左側的 Save,將我們標註的結果(Bounding Box 的 information)儲存起來。
在此示範中,我將存放影像的資料夾(ex: animals/)做為存放 annotation 的路徑。
  • 開啟存放影像的資料夾(ex: animals/),可以發現有與檔名對應的 txt 檔案自動生成。
  • 完成了第一張影像的標記,我們回到 LabelImg 的操作介面,點選左側的 Next Image,即可以切換到下一張繼續標記。
  • 最終,所有檔案都標記完成後,就可以有類似於以下的結果了。
  • 除了提供 classes.txt 紀錄我們使用了哪些 Class (ex: dog, cat)之外,可以發現每張照片都有對應的 txt 檔案描述 Bounding Box 的資訊,我們於下一個 Section 討論如何解讀 Bounding Box 的資料格式。

4. Output Recognization: 解讀 B. Box 資料格式

在這裡我們同時觀察下圖三件事情:

  1. LabelImg 開啟 Dog3.jpg 的畫面
  2. Dog3.txt 的內容
  3. classes.txt 的內容

Dog3.txt 當中的 Bounding Box Information 如下

  • 1,0.480612,0.601361,0.773469,0.651701
  • 每個 Bounding Box 都會有 5 個資訊,分別對應到上面這五個數值。

第一個資訊: 「1」

  • 類別(Label),其資訊可以於 classes.txt 查看。
  • 是 cat 或是 dog,如果是 cat 那就是 0,如果是 dog 那就是 1,若還有其他那就是 3, 4, …
  • 理解: 「1」 表示這個 B. Box 所框選的是 Dog。

第二個資訊: 「0.480612」

  • X-center: 表示 Bounding Box 中心坐標 X 在整張照片的位置。
  • 數值介於 0 ~ 1,因為 X-Center Pixel Value 有除以整張影像的「寬度」。
  • 理解: 「0.480612」表示這個 B. Box 的 X-Center 落在整張照片的中間偏左邊一點點。

第三個資訊:「0.601361」

  • Y-center: 表示 Bounding Box 中心坐標 Y 在整張照片的位置。
  • 數值介於 0 ~ 1,因為 Y-Center Pixel Value有再除以整張影像的「高度」。
  • 理解:「0.601361」表示這個 B. Box 的 Y-Center 落在中間偏上的位置。

第四個資訊:「0.773469」

  • B. Box Width: 表示 Bounding Box 有多寬。
  • 數值介於 0 ~ 1,因為 B. Box Width 有除以整張影像的「寬度」。
  • 理解: 「0.773469」表示這個 B. Box 的寬度涵蓋影像 7~8 成的區域。

第五個資訊: 「0.651701」

  • B. Box Height: 表示 Bounding Box 有多長。
  • 數值介於 0 ~ 1,因為 B. Box Width 有除以整張影像的「高度」。
  • 理解: 「0.651701」表示這個 B. Box 的長度涵蓋影像 6~7 成的區域。

注意:

  • x, y, w, h 因為都有除以影像高度及寬度,所以都是落在 0~1 之間。
  • 綠色框框表示對應的 Label。

5. Existing Datasets: 既存的數據集

COCO: Common Objects in Context [Link]

  • 上圖為 COCO Dataset 在 Object Detection 所擁有的 80 種類別。
  • 可以利用網頁的 Search 找看看有興趣的類別,圖中以 p 為例做搜尋。
  • 其實 YOLO 目前使用的 Darknet 即是使用 COCO Dataset 作為訓練資料集,所以若是你發現COCO裡面有你有興趣的Object,那麼恭喜你! 你可以直接 Clone 當前的 YOLO 然後很快的在你的目標任務中取得一定表現了。

Open Images [Link]

  • 龐大: 數據量是 million 等級的。
  • 多元: 涵蓋 Object Detection, Image Segmentation, Visual Relationship 深度學習影像處理任務
  • 點選首頁左下方的 Explore,即可進入下方圖片介面。
  • 於左上角調整 Type 選項至 Detection
  • 於正上方 Category 輸入有興趣的類別: 如 Person
  • 即可以看到網頁上既存的標記結果了。

6. Warp-up: 回頭看看 Promise,做個結尾。

  1. 取得標註工具 : LabelImg
  2. 操作 LabelImg
  3. 解讀 LabelImg 產生的 — Bounding Box — 資料
  4. 其實在標註自己的 Dataset 前,你也可以考慮線上的既存資料夾

Online Resources: 本篇文章使用到的網路資源

  • [Link] YOLO Meme
  • [Link] LabelImg Download List
  • [Link] tzutalin/labelImg Github Repo
  • [Link] Anaconda | Individual Ediion
  • [Link] COCO Explorer
  • Animal Image:
    [Link] Cat1,[Link] Cat2,[Link] Cat3,
    [Link] Dog1,[Link] Dog2,[Link] Dog3

--

--

--

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
AI.FREE

AI.FREE

More from Medium

Object Detection made simpler with IceVision (Part-1)

Introducing object detection

Vanishing Point Detection

How to load COCO Keypoint Data with FiftyOne