Win7安装yolov3并输出mAP

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', '.')

*注意*此时的test.txt文件里,是不带路径的文件名:

326
327
...

输出结果为:

D:\0TFWin\darknet-master\build\darknet\x64>python2 compute_mAP.py
Reading annotation for 1/35
Saving cached annotations to .\annots.pkl
(array([0.00775194, 0.01550388, 0.02325581, 0.03100775, 0.03875969,
       0.04651163, 0.05426357, 0.0620155 , 0.06976744, 0.07751938,
       0.08527132, 0.09302326, 0.10077519, 0.10852713, 0.11627907,
       0.12403101, 0.13178295, 0.13953488, 0.14728682, 0.15503876,
       0.1627907 , 0.17054264, 0.17829457, 0.18604651, 0.19379845,
       0.20155039, 0.20930233, 0.21705426, 0.2248062 , 0.23255814,
       0.24031008, 0.24806202, 0.25581395, 0.26356589, 0.27131783,
       0.27906977, 0.28682171, 0.29457364, 0.30232558, 0.31007752,
       0.31782946, 0.3255814 , 0.33333333, 0.34108527, 0.34883721,
       0.35658915, 0.36434109, 0.37209302, 0.37984496, 0.3875969 ,
       0.39534884, 0.40310078, 0.41085271, 0.41860465, 0.42635659,
       0.43410853, 0.44186047, 0.4496124 , 0.45736434, 0.46511628,
       0.47286822, 0.48062016, 0.48837209, 0.49612403, 0.50387597,
       0.51162791, 0.51937984, 0.52713178, 0.53488372, 0.54263566,
       0.5503876 , 0.55813953, 0.56589147, 0.57364341, 0.58139535,
       0.58914729, 0.59689922, 0.60465116, 0.6124031 , 0.62015504,
       0.62790698, 0.63565891, 0.64341085, 0.65116279, 0.65891473,
       0.66666667, 0.6744186 , 0.68217054, 0.68992248, 0.69767442,
       0.70542636, 0.71317829, 0.72093023, 0.72868217, 0.73643411,
       0.74418605, 0.75193798, 0.75968992, 0.76744186, 0.7751938 ,
       0.78294574, 0.79069767, 0.79844961, 0.80620155, 0.80620155,
       0.81395349, 0.82170543, 0.82170543, 0.82945736, 0.82945736,
       0.82945736, 0.8372093 , 0.84496124, 0.85271318, 0.86046512,
       0.86821705, 0.86821705, 0.87596899, 0.87596899, 0.88372093,
       0.89147287, 0.89922481, 0.90697674, 0.91472868, 0.91472868,
       0.91472868, 0.91472868, 0.91472868, 0.91472868, 0.91472868,
       0.91472868, 0.91472868, 0.91472868, 0.91472868, 0.91472868,
       0.91472868, 0.91472868, 0.91472868, 0.91472868, 0.91472868,
       0.91472868, 0.91472868, 0.91472868, 0.91472868, 0.91472868,
       0.91472868, 0.91472868, 0.91472868, 0.91472868, 0.91472868,
       0.91472868, 0.91472868, 0.91472868, 0.91472868, 0.91472868,
       0.91472868, 0.91472868, 0.91472868, 0.91472868, 0.91472868,
       0.91472868, 0.91472868, 0.91472868, 0.91472868, 0.91472868,
       0.91472868, 0.91472868, 0.91472868, 0.91472868]), 
array([1.        , 1.        , 1.        , 1.        , 1.        ,
       1.        , 1.        , 1.        , 1.        , 1.        ,
       1.        , 1.        , 1.        , 1.        , 1.        ,
       1.        , 1.        , 1.        , 1.        , 1.        ,
       1.        , 1.        , 1.        , 1.        , 1.        ,
       1.        , 1.        , 1.        , 1.        , 1.        ,
       1.        , 1.        , 1.        , 1.        , 1.        ,
       1.        , 1.        , 1.        , 1.        , 1.        ,
       1.        , 1.        , 1.        , 1.        , 1.        ,
       1.        , 1.        , 1.        , 1.        , 1.        ,
       1.        , 1.        , 1.        , 1.        , 1.        ,
       1.        , 1.        , 1.        , 1.        , 1.        ,
       1.        , 1.        , 1.        , 1.        , 1.        ,
       1.        , 1.        , 1.        , 1.        , 1.        ,
       1.        , 1.        , 1.        , 1.        , 1.        ,
       1.        , 1.        , 1.        , 1.        , 1.        ,
       1.        , 1.        , 1.        , 1.        , 1.        ,
       1.        , 1.        , 1.        , 1.        , 1.        ,
       1.        , 1.        , 1.        , 1.        , 1.        ,
       1.        , 1.        , 1.        , 1.        , 1.        ,
       1.        , 1.        , 1.        , 1.        , 0.99047619,
       0.99056604, 0.99065421, 0.98148148, 0.98165138, 0.97272727,
       0.96396396, 0.96428571, 0.96460177, 0.96491228, 0.96521739,
       0.96551724, 0.95726496, 0.95762712, 0.94957983, 0.95      ,
       0.95041322, 0.95081967, 0.95121951, 0.9516129 , 0.944     ,
       0.93650794, 0.92913386, 0.921875  , 0.91472868, 0.90769231,
       0.90076336, 0.89393939, 0.88721805, 0.88059701, 0.87407407,
       0.86764706, 0.86131387, 0.85507246, 0.84892086, 0.84285714,
       0.83687943, 0.83098592, 0.82517483, 0.81944444, 0.8137931 ,
       0.80821918, 0.80272109, 0.7972973 , 0.79194631, 0.78666667,
       0.78145695, 0.77631579, 0.77124183, 0.76623377, 0.76129032,
       0.75641026, 0.75159236, 0.74683544, 0.74213836, 0.7375    ,
       0.73291925, 0.72839506, 0.72392638, 0.7195122 , 0.71515152,
       0.71084337, 0.70658683, 0.70238095, 0.69822485]), '0.9109010668917162')

输出一个x64/annots.pkl文件, 输出的最后一项内容,返回的最后一个值即AP,检测单类就是mAP,即 mAP 为0.91...

*注意*重复执行需要删除 x64/annots.pkl文件!

网上有个人写了一个多类的计算mAP的python代码,不知道可不可行,由于我的研究都是一类的,没有试过这段代码是否可行:

from voc_eval import voc_eval
import os

FindPath = 'results/'
FileNames = os.listdir(FindPath)
#for file_name in FileNames:
for file in FileNames:
    file_name = file.split('.')[0]
    print voc_eval('results/{}.txt',
          'scripts/VOCdevkit/VOC2007/Annotations/{}.xml',
                'scripts/VOCdevkit/VOC2007/ImageSets/Main/test.txt',
                        file_name, './cache/'+file_name)

3.计算recall

新建一个cmd文件,里面写入:

darknet.exe detector recall voc.data cfg/yolov3-voc.cfg yolov3-voc_30000.weights
pause

但一直出现如下错误,好在输出的结果直接显示在命令行,故无奈只能用ubuntu

Can't open label file. (This can be normal only if you use MSCOCO)

ubuntu键入:

./darknet detector recall cfg/voc.data cfg/yolov3-voc.cfg backup/yolov3-voc_30000.weights

会出现错误:

can't open files "data/coco_val_5k.list"

解决办法:修改example/detector.c下的validate_detector_recall函数,大约496行:

list *plist = get_paths("data/coco_val_5k.list");
                     ||
list *plist=get_paths(".../train.txt"); //替换为自己训练集文本的路径

train.txt文件的格式:
scripts/VOCdevkit/VOC2007/JPEGImages/001.jpg
scripts/VOCdevkit/VOC2007/JPEGImages/002.jpg
scripts/VOCdevkit/VOC2007/JPEGImages/003.jpg
...

然后重新编译,make clean,再make -j8,重新输入上面的命令,backup2输出:

Loading weights from backup/yolov3-voc_10000.weights...Done!
Learning Rate: 0.001, Momentum: 0.9, Decay: 0.0005
    0     0     2	RPs/Img: 4.00	IOU: 0.00%	Recall:0.00%
    1     3     6	RPs/Img: 5.50	IOU: 44.66%	Recall:50.00%
    2     4     7	RPs/Img: 5.33	IOU: 50.77%	Recall:57.14%
    3     5     8	RPs/Img: 4.25	IOU: 54.85%	Recall:62.50%
    4     7    10	RPs/Img: 3.40	IOU: 56.91%	Recall:70.00%
    5     8    11	RPs/Img: 3.00	IOU: 58.33%	Recall:72.73%
    6     8    12	RPs/Img: 2.86	IOU: 53.55%	Recall:66.67%
    7     8    13	RPs/Img: 2.62	IOU: 49.50%	Recall:61.54%
    8     8    14	RPs/Img: 2.44	IOU: 46.00%	Recall:57.14%
    9     8    15	RPs/Img: 2.50	IOU: 43.10%	Recall:53.33%
   10     8    16	RPs/Img: 2.36	IOU: 40.84%	Recall:50.00%
   .
   .
   .
  314   113   990	RPs/Img: 5.29	IOU: 14.11%	Recall:11.41%
  315   113   993	RPs/Img: 5.29	IOU: 14.07%	Recall:11.38%
  316   113  1001	RPs/Img: 5.33	IOU: 13.96%	Recall:11.29%
  317   113  1003	RPs/Img: 5.31	IOU: 13.93%	Recall:11.27%
  318   113  1008	RPs/Img: 5.34	IOU: 13.86%	Recall:11.21%
  319   113  1014	RPs/Img: 5.36	IOU: 13.78%	Recall:11.14%
  320   113  1023	RPs/Img: 5.39	IOU: 13.66%	Recall:11.05%
  321   113  1028	RPs/Img: 5.39	IOU: 13.59%	Recall:10.99%
  322   113  1034	RPs/Img: 5.40	IOU: 13.51%	Recall:10.93%
  323   113  1039	RPs/Img: 5.41	IOU: 13.45%	Recall:10.88%
  324   113  1046	RPs/Img: 5.42	IOU: 13.36%	Recall:10.80%
wnzhou@CAD-gpu:~/darknet$

第一列为图片编号,注意从0开始编号;第二列;第三列;第四列;第五列为交并比;第六列为recall,越小越好。

4.FPS

在图形化界面,直接测试视频,命令行会反馈出自动fps。

./darknet detector demo ***.data ***.cfg ***.weights ***.avi -thresh 0.2 -gpus 0

/*注意*/

可以保存训练的.log文件来可视化训练过程,令整个训练过程更加直观,并且看出是在迭代到多少步出现过拟合,提取出最适合的.weight文件用来检测。

参考:

https://blog.csdn.net/qq_34806812/article/details/81459982

https://blog.csdn.net/cgt19910923/article/details/80783614

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值