Keras深度學習——建立自定義目標檢測資料集

語言: CN / TW / HK

theme: hydrogen

持續創作,加速成長!這是我參與「掘金日新計劃 · 6 月更文挑戰」的第24天,點選檢視活動詳情

前言

我們知道,目標檢測 (object detection) 的輸出是目標的邊界框,其中邊界框用於定點陣圖像中的目標物件。要構建演算法檢測影象中目標周圍的邊界框,就必須首先建立輸入-輸出對映,其中輸入是影象,而輸出是給定影象中目標周圍的邊界框。 當我們檢測到邊界框時,我們需要檢測影象周圍邊界框左上角的畫素位置,以及邊界框的相應寬度和高度。要訓練能夠輸出邊界框的模型,我們需要訓練集影象以及訓練資料集影象中所有物件的相應邊界框座標和類別標籤。

建立自定義目標檢測資料集

在本節中,我們將介紹如何建立訓練資料集的方法,其中將影象作為輸入,並將相應的邊界框儲存在XML檔案中。我們將學習使用labelImg包來標註邊界框和相應目標物件的類。在不同作業系統中有不同的方式使用 labelimg 包標註影象中物件的邊界框,不同作業系統的安裝教程可以參考官方網頁。最為通用的方法是使用 pip 進行安裝,與其它第三方庫安裝方法相同: shell $ pip3 install labelImg

windows

通過官方連結下載 labelImg 的可執行檔案,解壓後開啟 labelImg.exe 程式,其介面如下圖所示:

labelImg.exe介面

data 資料夾的 predefined_classes.txt 檔案包含了影象中所有可能的標籤,我們需要確保每個類別都佔據單獨一行,如下所示:

predefined_classes.txt檔案

單擊 “Open” 開啟影象,然後單擊 “Create RectBox” 為影象繪製邊界框。繪製邊界框完成後,將彈出為目標物件選擇的類別視窗,為標記的物件選擇所屬類別,如下所示:

標註影象中物件

單擊 Ok 完成此物件的標註,標註圖中所有物件後,單擊 Save 並儲存 XML 檔案:

儲存標註結果

儲存完成後,可以檢查 XML 檔案。繪製矩形邊界框後,XML 檔案的內容如下所示:

XML檔案

在上圖中,可以看到,bndbox 包含影象中物件相對應的 xy 座標的最小值和最大值的座標,即邊界框左上角和右下角座標。此外,我們可以通過 name 提取到邊界框中物件相對應的類別標籤。

Ubuntu

Ubuntu 中,可以通過執行以下命令來使用 labelimg 包: shell $ sudo apt-get install pyqt5-dev-tools $ sudo pip3 install -r requirements/requirements-linux-python3.txt $ make qt5py3 $ python3 labelImg.py 可以在 GitHub 連結中找到指令碼labelImg.py。執行上述命令後,接下來使用 labelimg 包標註目標物件邊界框和類別的用法與 Windows 中相同。

MacOS

macOS 中,可以通過執行以下命令來使用 labelimg 包: shell $ brew install qt $ brew install libxml2 $ make qt5py3 $ python3 labelImg.py 可以在 GitHub 連結中找到指令碼 labelImg.py。執行了以上命令之後,接下來使用 labelimg 包標註目標物件邊界框和類別的用法與 Windows 中相同。