注意在makefile文件中的opencv是C++形式的,因为本身darknet就是用C来写的!
这个本身就是C++的编译工作
一般需要用opencv编译的都是采用的c++形式的opencv!python的opencv不支持cuda加速!
对于darknet的指令parse问题:
./darknet … 指令之后在最后还可以写其他的辅助指令,例如:
-gpus 0,1,…制定多少个GPU参与训练测试
-thresh 0.5 确定当confidence的值在thresh之上在输出
-out car.txt 这个是采用valid模式输出的文本文件,用来看模型的性能的
darknet在.data文件中还有valid验证集,valid和train是一样的,给出来图像数据的.jpg绝对路径文件!
这个valid还没有用过,等会试一试
对于一个完整的任务,光训练好还不行,还要对训练的网络进行评价才可以(上面的valid也是属于网络评价的一部分)
训练一个网络,需要评价这个网络,并根据评价的结果想一下为什么是这样,怎样去优化这个网络。这样才是一个闭环,能够有提高,仅仅走一遍训练的流程,是没有意义的。
这时候另一个命令就来了:valid
我们在用darknet的时候常用的是./darknet detector train(训练)/test(测试图片)
对于验证模型用./darknet detector valid
注意!这一的验证是批量test
Q:那如果想要用valid数据呢?
例如: darknet detector valid ./cfg/voc.data cfg/tiny_yolo_voc.cfg tiny_yolo_voc.weights
使用detector valid参数,具体函数是detector.c下的validate_detector函数。将测试集的检测结果保存到detect_result.txt。这里的detect_result通常就是你检测的东西名称啦/
其中thresh在validate_detector中默认为0.005,按需修改。
这里有个问题,我的电脑上用valid一直不行。但是换一个就行了,输出的预测结果.txt文件是coor 类别 confidence
原文链接:https://blog.csdn.net/cgt19910923/article/details/80524173
这里推荐大神的博客:
https://www.jianshu.com/p/7ae10c8f7d77
https://blog.csdn.net/qq_34806812/article/details/81459982?utm_source=blogxgwz3
能够实现对于loss的图形可视化(判断是否过拟合),重点关注 train loss 和avg train loss,这两个值应该是随着iteration增加而逐渐降低的。如果loss增大到几百那就是训练发散了,如果loss在一段时间不变,就需要降低learning rate或者改变batch来加强学习效果。当然也可能是训练已经充分。这个需要自己判断。
如果想要计算mAP利用文件https://github.com/rbgirshick/py-faster-rcnn/blob/master/lib/datasets/voc_eval.py
然后是对于召回率recall的测试
./darknet detector recall ....
这里需要修改 example/detector.c文件, 修改detector.c下的validate_detector_recall函数
替换list *plist = get_paths(“data/coco_val_5k.list”);为list *plist=get_paths(“scripts/train.txt”);自己的训练集文本