1. 程式人生 > >深度學習系列之YOLOv3 mAP計算

深度學習系列之YOLOv3 mAP計算

今天跑了以下YOLOv2,發現竟然沒有計算mAP的,這樣怎麼和其他模型對比呢?
於是乎,百度了一下,折騰了好幾下,我發現,有些人不知道是不是故意的,竟給別人出餿主意方法繞來繞去(雖然也能計算,但讓人覺得不知所云)。我竟無言以對。
幸好,有一篇比較良心:我的參考文獻,本文也只是對這篇部落格更細緻的解釋。
為了避免大家踩坑,覺得寫一篇這個很有必要。

YOLOv3同樣適用!

一、生成檢測結果檔案

./darknet detector valid cfg/voc.data cfg/yolov3-voc.cfg results/yolo-voc_final.weights -out [類名] -gpu 0
-thresh .5

輸出的txt檔案在results下,記得修改一下輸出檔案的名稱,因為得到的檔名和你的類名會不一樣。
注意:輸出的檔名要求為類名,不然後面計算時會出現ap = nan。我覺得出現nan的人應該還是有的。
權重檔案(.weights)在backup裡也有。

二、新建一個.py檔案

在faster-rcnn/lib/datasets/ 下,新建一個compute_mAP.py檔案。(或者將faster-rcnn/lib/datasets/ 下的voc_eval.py複製到darknet目錄下,新建一個compute_mAP.py檔案)

from voc_eval import
voc_eval rec,prec,ap = voc_eval('/home/liwanzhi/YOLO/darknet/results/{}.txt', '/home/liwanzhi/YOLO/darknet/scripts/VOCdevkit/VOC2007/Annotations/{}.xml', '/home/liwanzhi/YOLO/darknet/scripts/VOCdevkit/VOC2007/ImageSets/Main/test.txt', '1', '.') print('rec',rec) print('prec',prec) print('ap',ap)

第1項:表示檢測結果檔案路徑
第2項:表示標籤檔案的路徑
第3項:表示測試檔案路徑
第4項:類名

三、執行compute_mAP.py

這裡寫圖片描述
最後一項就是AP,由於我只有1類,所以就是mAP。
出現nan的可能就是第一步的問題了。