赞
踩
git clone https://github.com/AlexeyAB/darknet
进入 darknet_master 文件架修改 Makefile,将GPU, CUDNN, CUDNN_HALF, OPENCV 修改为1,预设值为0
cd darknet
make
先将数据集图片暂存至临时文件夹中
创建如图的文件结构
使用labelimg给图片数据集进行标注
/labelimg/data/predefined_classes.txt
中修改为自定义数据集中的类使用数据集增强功能包进行数据集增强
DataAugForObjectDetecton
中的/data/Annotations
和/data/images
中DataAugForObjectDetecton.py
文件,到程序入口处修改need_aug_num = 10
,这是每张图片进行扩增的数量DataAugForObjectDetecton.py
文件,在Dataset文件夹下可以找到扩增后的标签与数据集划分训练集、测试集和验证集
运行spit.py
文件,调节其中的参数可以改变三者的比例大小
VOC标签转YOLO
运行voc_lavel.py
文件,转化后的标签将存储在label文件夹中
写入2007_test.txt(2007_train.txt 2007_val.txt)
运行write_name.py
文件,可以进行文件的写入(读取spit.py生成的train.txt test.txt val.txt中的内容并且将补全的路径输出到指定的文件中)
# write_name.py import os def write_name(name_file_path,path_file_path,task_path): name_file = open(name_file_path , 'r' , encoding= 'utf-8') path_file = open(path_file_path , 'w' , encoding= 'utf-8') for i in name_file: i = i[:-1] path = f"{task_path}/{i}.jpg\n" path_file.write(path) path_file.close() name_file.close() if __name__ == "_main__": task_path = "/home/ding/deeplearning_task/winter_task5/VOCdevkit/VOC2007/JPEGImages" name_file_path1 = "/home/ding/deeplearning_task/winter_task5/VOCdevkit/VOC2007/ImageSets/Main/train.txt" path_file_path1 = "/home/ding/deeplearning_task/winter_task5/VOCdevkit/2007_train.txt" name_file_path2 = "/home/ding/deeplearning_task/winter_task5/VOCdevkit/VOC2007/ImageSets/Main/test.txt" path_file_path2 = "/home/ding/deeplearning_task/winter_task5/VOCdevkit/2007_test.txt" name_file_path3 = "/home/ding/deeplearning_task/winter_task5/VOCdevkit/VOC2007/ImageSets/Main/val.txt" path_file_path3 = "/home/ding/deeplearning_task/winter_task5/VOCdevkit/2007_val.txt" write_name(name_file_path1,path_file_path1,task_path) write_name(name_file_path2,path_file_path2,task_path) write_name(name_file_path3,path_file_path3,task_path)
修改yolov4-tiny.cfg
文件
classes #改为自定义的类别数
filters = (classes + 5)*3
voc.names文件
只需要将类别分行写在其中,以我的项目为例:
# voc.names文件
corn
corn_plant
cucumber
cucumber_plant
watermelon
rice
wheat
classes = 7 #类别数
train = /home/ding/deeplearning_task/winter_task5/VOCdevkit/2007_train.txt #存放train图片路径的txt
valid = /home/ding/deeplearning_task/winter_task5/VOCdevkit/2007_val.txt
test = /home/ding/deeplearning_task/winter_task5/VOCdevkit/2007_test.txt
names = /home/ding/deeplearning_task/winter_task5/VOCdevkit/voc.names #voc.names路径
backup = /home/ding/deeplearning_task/winter_task5/VOCdevkit/VOC2007/backup #训练权重放置的路径
相关操作指令
./darknet detector train [.data] [.cfg] [.weight]
# 模型训练
说明:
.data
是.data文件的路径。
.cfg
是.cfg文件的路径。
.weight
是预训练权重文件的路径,可以是.weight文件,也可以是.backup文件。
./darknet detector train [.data] [.cfg] [.weight]
#检测图片
./darknet detector demo [.data] [.cfg] [.weight] [-thresh 0.25] [xxx.mp4]
# 检测视频
-dont_show -ext_output [.txt] result.txt
#批量检测
./darknet detector demo [.data] [.cfg] [.weight] [-thresh 0.25] [http://192.168.1.108:8080/video?dummy=x.mjpg -i 0]
#检测网络摄像头
./darknet detector map [.data] [.cfg] [.weight]
#评价模型
我的训练划分了七个类别
corn
corn_plant
cucumber
cucumber_plant
watermelon
rice
wheat
训练过程损失曲线
图片验证结果
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。