2018年10月5日 星期五

訓練 YOLO v1 模型的準備工作


既然昨天成功用 YOLO v2 來檢測物件,午飯時再接再厲,再用準備好的素材訓練,看看能不能有把自定義物件檢測出來。


按照 How to train multiple objects in YOLOv2 using your own Dataset 的指示,一步一步訓練自己的模型。首先,當然是準備好素材:可樂 10 張、EDO 糖 19 張、烏龍茶 16 張,總共 45 張相片。


然後把它們按類別以數字目錄分成三組,放到 YOLO-Annotation-Tool-master/Images/ 目錄下。由於原本已經有 001 及 002 目錄,所以我用 010 放 EDO 糖, 011 放烏龍茶及 012 來放可口可樂。然後在 Terminal 跳轉到 YOLO-Annotation-Tool-master 目錄,以 Python 2.7 執行:
python main.py

一個工具視窗會彈出來。在 Image Dir 欄位輸入其中一個剛才生成的目錄數字,點擊「Load」載入相片。利用滑鼠點擊相片中物件的左上角,拖拉到右下角再點一下。這樣便完成一年物件的標韱工作。如果相片有多於一件同類物件,則把其他物件也一併標韱。


完成所有數字目錄的標韱後,在 YOLO-Annotation-Tool-master/Labels/ 目錄下會發現記錄了的標韱座標。


不過,這些數字還未 Normalize 到 0 至 1 的小數,所以還未能夠使用。這時,需要打開 convert.py,在 classes 中加入 "010", "011", "012";設定 mypath = "./Labels/010/";再把 cls = "005" 改為 cls = "010",執行一次:
python convert.py
然後 "011" 執行一次;再做 "012"。逐個數字目錄做。同時,在 YOLO-Annotation-Tool-master/ 會自動生成 010_list.txt, 011_list.txt 及 012_list.txt,裡面記載了標韱的相片路徑。


完成後在 YOLO-Annotation-Tool-master/Labels/output 會找到 Normalize 了的座標。接著執行:
python process.py
它會把素材以 80:20 比例分成訓練組及測試組,並生成 train.txt 及 test.txt。

沒有留言: