0.安装
环境 Win7 + VS2015 + darknet(+GPU)
安装超级简单,windows版的yolo:https://github.com/AlexeyAB/darknet
ubuntu和windows中命令的不同仅体现在开头,后面的代码均相同。
./darknet(ubuntu) ---> darknet.exe(windows)
我选择的是租用别人的服务器,用的Ubuntu16.04,然后将训练好的weight下载下来,在自己的笔记本win7上测试及检测mAP,recall等。
1.生成boat.txt
使用detector valid参数,具体函数是detector.c下的validate_detector函数。将训练集的检测结果保存到boat.txt,新建一个cmd命名
darknet.exe detector valid cfg/voc.data cfg/yolov3-voc.cfg backup/yolov3-voc_40000.weights -out "" -gpu 0 -thresh .5
pause
- -out " " 双引号可以被替换为想要的文件名,比如写为person.txt或者boat.txt,我只有一个类,所以就写boat.txt
- -gpu 显卡编号
- thresh 默认为0.5,按需修改
运行完成后,会在x64/results/boat.txt生成一个文本文件,内容为:
326 0.999548 151.218658 511.632813 707.204590 613.328369
326 0.999248 698.482483 564.180176 825.866150 606.961914
326 0.993602 896.364258 576.282410 1064.027100 623.669373
326 0.522765 14.747589 504.041962 135.282150 601.210938
327 0.999848 615.292053 471.991516 643.686218 500.468140
327 0.999841 460.541840 496.857758 489.735748 518.303589
...
含义为,1位置表示图片名称,2位置表示置信度,3 4 5 6位置表示object的坐标。
*注意*此时 scripts\VOCdevkit\VOC2007\ImageSets\Main\test.txt 文件里,是带路径的文件名:
scripts/VOCdevkit/VOC2007/JPEGImages/326.jpg
scripts/VOCdevkit/VOC2007/JPEGImages/327.jpg
...
2.计算mAP
需要两个python文件,注意要用python2来运行。
首先下载voc_eval.py文件:https://github.com/rbgirshick/py-faster-rcnn/tree/master/lib/datasets,然后将此文件放到x64下,然后新建一个python文件,命名为compute_mAP.py,然后依据自己的路径进行修改:
from voc_eval import voc_eval
print voc_eval('results/{}.txt',
'scripts/VOCdevkit/VOC2007/Annotations/{}.xml',
'scripts/VOCdevkit/VOC2007/ImageSets/Main/test.txt', 'boat', '.')