tutorials
YOLO
Deep Learning
$ git clone https://github.com/pjreddie/darknet
$ cd darknet
$ vim Makefile
GPU=1
CUDNN=1
$ make
wget https://pjreddie.com/media/files/yolov3.weights
$ ./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
下載
voc2yolo.py
,此檔案可將voc格式轉換成yolo格式(下載連結)
修改voc2yolo.py
裡的圖片與標籤資料夾的路徑
xmlFolder = "label" # voc的xml檔位置 imgFolder = "image" # img檔位置 imgYoloFolder = "yolo" # 轉換後img和txt儲存位置 classList = {"vehicle":0, "pedestrian":1, "rider":2} # 類別的名稱運行
voc2yolo.py
將voc的格式轉換成YOLO的格式,得到以下的資料夾
classes= 3
train = cfg_own_data/train.txt
valid = cfg_own_data/valid.txt
names = cfg_own_data/obj.names
backup = weights
vehicle
pedestrian
rider
下載
write_train_valid_txt.py
,此檔案可將資料集隨機打散成訓練集和測試集(下載連結)
修改write_train_valid_txt.py
的圖片路徑
imgfolder = "image" # 圖片路徑 yolofolder = "yolo" # yolo資料夾的路徑 train_txt_path = "cfg_own_data/train.txt" # 儲存train.txt的路徑 valid_txt_path = "cfg_own_data/valid.txt" # 儲存valid.txt的路徑運行
write_train_valid_txt.py
即可隨機打亂資料分成train.txt與valid.txt
yolo/05839.jpg
yolo/03954.jpg
yolo/02943.jpg
.
.
yolo/01273.jpg
yolo/07432.jpg
yolo/01234.jpg
.
.
batch=32
subdivisions=8
filters=24
classes=3
filters=24
classes=3
$ mkdir weights
$ wget https://pjreddie.com/media/files/darknet53.conv.74
$ ./darknet detector train cfg_own_data/obj.data cfg_own_data/yolov3-tiny.cfg
每 100 個 batch 會輸出一次 weight檔,下圖為訓練過程的 log
若圖片數量至上千張,average loss error 達 0.06 即可停止;
若圖片數量只有幾百張,average loss error 達 0.6 即可停止
$ ./darknet detector test cfg_own_data/obj.data cfg_own_data/yolov3-tiny.cfg weight/yolov3-tiny_10000.weights