YOLO訓練Pedestrain

Pedestrain

使用darknet訓練:

1. Inria

  1. 建立 yolo-inria.cfghtml

    從cfg/yolo-voc.2.0.cfg拷貝一份,修改batch=64, subdivisions=8, classes=1, 修改最後一個卷積層爲filter=30。shell

    cp cfg/yolo-voc.2.0.cfg cfg/yolo-inria.cfg
  2. 建立data/inria.namesbash

    裏面只有一行:personide

  3. 爲每一個圖片建立label文件,形式以下:測試

    每一個圖片對應一個label文件,一個行人對應一行,object-class全爲0。文件分別放在/home/guru_ge/dataset/INRIAPerson/Train/labels目錄和/home/guru_ge/dataset/INRIAPerson/Test/labels目錄。spa

    <object-class> <x> <y> <width> <height>
  4. 建立train.txt, test.txtcode

    全部訓練圖片的路徑,每行一張圖片,位置在/home/guru_ge/dataset/INRIAPerson/。
    data/obj/img1.jpg
    data/obj/img2.jpg
    data/obj/img3.jpgorm

  5. 建立data/inria.data視頻

    修改train.txt, test.txt位置:htm

    classes= 1
    train  = /home/guru_ge/dataset/INRIAPerson/train.txt
    valid  = /home/guru_ge/dataset/INRIAPerson/test.txt
    names = data/obj.names
    backup = backup/
  6. 下載在ImageNet上預訓練的darknet19模型

    wget http://pjreddie.com/media/files/darknet19_448.conv.23
  7. 開始訓練

    ./darknet detector train data/inria.data cfg/yolo-inria.cfg darknet19_448.conv.23 -gpus 0

結果

在INRIA測試集上評測結果:

./darknet detector map cfg/inria.data cfg/yolo-inria.cfg backup/yolo-inria.backup -gpus 0

class_id = 0, name = person, ap = 88.85 %
for thresh = 0.24, precision = 0.95, recall = 0.86, F1-score = 0.90
for thresh = 0.24, TP = 509, FP = 29, FN = 80, average IoU = 76.81 %

mean average precision (mAP) = 0.888518, or 88.85 %
Total Detection Time: 4.000000 Seconds

測試圖片:

./darknet detector test cfg/inria.data cfg/yolo-inria.cfg backup/yolo-inria.backup -gpus 0

 

測試圖片
測試圖片

 

跑另一個視頻:

./darknet detector demo cfg/inria.data cfg/yolo-inria.cfg backup/yolo-inria.backup MOT16-06.mp4 -gpus 0

效果:

 

檢測結果
檢測結果

 

大小:

416 x 416

速度:

CPU FPS: 0.2
GPU FPS: 90

問題:
小目標檢測不到

2. caltech

訓練:

./darknet detector train cfg/caltech.data cfg/yolo-caltech.cfg darknet19_448.conv.23 -gpus 0 -dont_show

每5幀提取一張,訓練集45651張圖片,測試集4406張圖片。batch_size爲64,迭代3萬次左右開始收斂:

 

loss
loss

 

評估:

./darknet detector map cfg/caltech.data cfg/yolo-caltech.cfg backup_caltech/yolo-caltech_40000.weights -gpus 0

detections_count = 24968, unique_truth_count = 6465
class_id = 0, name = person, 8 ap = 22.66 %
for thresh = 0.24, precision = 0.41, recall = 0.22, F1-score = 0.29
for thresh = 0.24, TP = 1431, FP = 2053, FN = 5034, average IoU = 27.87 %

mean average precision (mAP) = 0.226584, or 22.66 %
Total Detection Time: 137.000000 Seconds

問題:

從map上看錶現不好,只有22.66,這多是由於這個數據集人過小,而且標註中還包含了一些被遮擋的目標,干擾了檢測結果。

咱們還測試了使用inria數據集訓練的模型在caltech上的結果,表現還要更差:

detections_count = 17643, unique_truth_count = 6465
class_id = 0, name = person, 3 ap = 9.09 %
for thresh = 0.24, precision = 0.48, recall = 0.05, F1-score = 0.09
for thresh = 0.24, TP = 315, FP = 340, FN = 6150, average IoU = 35.57 %

mean average precision (mAP) = 0.090909, or 9.09 %
Total Detection Time: 46.000000 Seconds

./darknet detector demo cfg/caltech.data cfg/yolo-caltech.cfg yolo-caltech_30000.weights

使用caltech訓練結果,小目標的檢測更準確了,但也存在了誤檢的問題,這多是標註中還包含了一些被遮擋的行人,致使訓練的模型將這些遮擋物也認爲是行人,出現了誤檢。

 

檢測結果
檢測結果
相關文章
相關標籤/搜索