yolo-tiny

    科技2025-04-23  9

    @yolo-tiny

    训练

    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_one文件

    显示置信率darknet_Dis_ZX /不现实评价指标,输入图片路径,只显示框好后的图片和类别、置信率/

    ./darknet detect cfg/yolov3-tiny_llw.cfg backup/yolov3-tiny_llw_10000.weights DATA/JPEGImages/00000001.jpg

    批量测试 darknet_piL文件

    ./darknet detector test data/my_voc_llw.data cfg/yolov3-tiny_llw.cfg backup/yolov3-tiny_llw_10000.weights

    valid(计算Map) darknet_one_cal文件

    (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

    recall召回率 darknet_one_recall文件

    替换list *plist = get_paths(“data/coco_val_5k.list”);为list *plist = get_paths("myData/myData_train.txt");自己的测试集文本for(k = 0; k < l.w*l.h*l.n; ++k){替换为 for (k = 0; k< nboxes;++k){make cleanmake./darknet detector recall data/my_voc_llw.data cfg/yolov3_llw.cfg backup/yolov3_llw_final.weights

    用matplotlib绘制PR曲线 darknet_PR文件

    python reval_voc_py3.py --voc_dir VOCdevkit --year 2007 --image_set 2007_val --classes data/my_voc_llw.names DATA

    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
    Processed: 0.010, SQL: 8