今天跑了一下YOLOv3,用的VOC格式的數據集,發現不知道怎麼計算mAP。
於是乎,百度了一下,折騰了好幾下,我發現,有些人的方法繞來繞去,不知道是不是故意炫技,雖然也能計算,但讓人覺得不知所云,一會要輸入命令行,一會又要用到python,一會又要刪除什麼文件,一會又要設置什麼difficult參數,甚至有的要修改darknet源碼,總之搞得非常複雜。
偶然間自己發現了一個快速計算mAP的方法,完全不需要用到python,1分鐘就能搞定,只要修改幾個地方,然後一條命令行指令搞定。
進入正題:
1. 如果你之前訓練的是VOC格式的數據集,你一定會得到一個測試用的.txt文件,裏面寫了測試圖片的絕對路徑,例如:
2. 修改voc.data文件,修改裏面的 valid 設置爲測試用的.txt文件的路徑,其他不要動,如下所示:
classes= 20
train = data/voc/voc_train.txt
valid = data/voc/2007_test.txt #這裏寫的是你測試用的.txt文件的相對路徑
names = data/voc.names
backup = data/weights
3. 然後cd 進入你的…darknet-master/build/darknet/x64 路徑下,在CMD中輸入:
darknet.exe detector map data/voc.data data/yolov3-voc.cfg data/weights/yolov3-voc_22000.weights -points 11 -thresh 0.5 -iou_thresh 0.5
一些參數說明:
data/voc.data #改成你使用的voc.data 的相對路徑
data/yolov3-voc.cfg #改成你使用的yolov3-voc.cfg 的相對路徑
data/weights/yolov3-voc_22000.weights #改成你使用的.weights權重參數文件的相對路徑
points 11 #11表示該數據集爲VOC格式的數據集,coco爲101 ,ImageNet爲0
thresh 0.5 #只計算預測置信值大於0.5的預測框
iou_thresh 0.5 #只計算IOU交併比大於0.5的預測框