ref:参考博文
下载预训练权重 wget https://pjreddie.com/media/files/yolov3-tiny.weights
运行 train_data_set.py , 生成4个txt文件,(指定训练集和测试集)
将数据转换成darknet支持的格式 运行my_labels.py 生成两个txt文件 ,及label下的txt文件
修改 cfg目录下的yolov3-tiny.cfg文件 有两处需要修改classes和filters,从下往上有两处,类似如下字样处: 将classes 修改为1,因为我们只有`类;将卷积层数修改为18 ,计算方式为3*(类别数+5).若为3类,则是3*(1+5) = 18. 6.修改.data
修改names
生成预训练模型
./darknet partial cfg/yolov3-tiny_llw.cfg yolov3-tiny.weights yolov3-tiny.conv.15 15训练(darknet_one) ./darknet detector train data/my_voc_llw.data cfg/yolov3-tiny_llw.cfg yolov3-tiny.conv.15 | tee object_train_log.txt 训练耗时较长,查看log当loss较小,且不再发生变化时,可按"ctrl+c"终止训练.我训练到了90000次就停止了,在这个过程中在backup文件夹下会保存对应迭代次数的中间结果,前1000次内每100次保存一个,超过1000次,每1000保存一次,依次.在这个过程中,我么可以随时拿中间结果进行测试.
测试
./darknet detect cfg/yolov3-tiny_llw.cfg backup/yolov3-tiny_llw_10000.weights DATA/JPEGImages/00000001.jpg显示置信率darknet_Dis_ZX /不现实评价指标,输入图片路径,只显示框好后的图片和类别、置信率/
./darknet detect cfg/yolov3-tiny_llw.cfg backup/yolov3-tiny_llw_10000.weights DATA/JPEGImages/00000001.jpg(ref:https://blog.csdn.net/qq_36302589/article/details/85160928)
./darknet detector valid data/my_voc_llw.data cfg/yolov3_llw.cfg backup/yolov3_llw_final.weights -out object ./darknet detector valid data/my_voc_llw.data cfg/yolov3_llw.cfg backup/yolov3_llw_final.weights第一步 将检测图片路径写入myData_val.txt文件,执行Image2txt.py
执行./darknet detector valid data/my_voc_llw.data cfg/yolov3_llw.cfg backup/yolov3_llw_final.weights
更改results下文件的名称,与comput_mAP.py文件中第一项对应
第二项存放xml文件
第三项存放不带扩展名的检测图片文件名,与myData_val.txt,results下文件相对应,执行name.py
第四项存放某类名称
执行comput_mAP.py
DATA 为输出pkl文件路径
必需文件 reval_voc_py3.py voc_eval.py修改data/my_voc_llw.data文件的测试文件路径valid = 2007_val.txt将检测图片路径写入 2007_val.txt文件,执行Image2txt.py执行 ./darknet detector valid data/my_voc_llw.data cfg/yolov3-tiny_llw.cfg backup/yolov3-tiny_llw_10000.weights更改results/comp4_det_2007_val_object.txt路径下的txt文件名VOCdevkit/VOC2007/ImageSets/Main/2007_val.txt 该路径的2007_val.txt文件为图片名(不包含扩展名)执行name.py执行 python reval_voc_py3.py --voc_dir VOCdevkit --year 2007 --image_set 2007_val --classes data/my_voc_llw.names DATA执行PR_draw2.py