利用 Darknet 在自己的数据集上训练 Yolov4-tiny 模型
-
- 0.配置环境
- 1.数据准备
- 2.模型训练
另有Yolov4模型的各种部署方式,详见github。
0.配置环境 此项目使用的训练环境:Ubuntu 18.04.5, CUDA Version: 10.1, Darknet A版, Nvidia 2080 ti 显卡.
其中 Darknet 的配置参考这里
1.数据准备 这个项目使用的反光衣检测数据集来自reflective-clothes-detect and dataset yolov5,
共有反光衣检测数据1083张。
- 进入百度云盘下载链接 提取码->(dooh).
- 将数据文件夹中‘labels/'下的文件复制到‘JPEGImages/’中,保证两者在同一个文件夹下。
- 修改配置文件
cd darkent
- 在‘cfg/'路径下创建配置文件yolov4-tiny-reflective.cfg,当然可以直接从’yolov4-tiny-custom.cfg’直接复制过来。
- 修改参数,classes = 2, filters=(classes + 5)x3 = 21,注意:每个[yolo]层里的classes及其前一个[convolutional]层里的filters参数都需要相应修改,注意是每一个!
[convolutional] filters=21[yolo] classes=2
- 其他参数如batch,learning_rate等可以根据需要修改。
- 准备数据文件,包含四个文件reflective.data,reflective.names,train-reflective.txt,valid-reflective.txt.
- 进行训练集验证集数据划分,将划分好的文件 ‘train_reflective.txt’ 和 ‘valid_reflective.txt’ 放到 ‘data/’ 文件夹下。
python3 split_datasets(
)
参数说明:
imagePath即下载数据中‘JPEGImages’文件的路径
savePath即生成文件的保存路径,可以直接设置为’/path where darknet installed/data/’
- 创建‘reflective.data’:
classes = 2 train = data/train-reflective.txt valid = data/valid-reflective.txt test = data/test-reflective.txt names = data/reflective.names backup = reflective/
- 创建’reflective.names’:
other reflective
- 进行训练集验证集数据划分,将划分好的文件 ‘train_reflective.txt’ 和 ‘valid_reflective.txt’ 放到 ‘data/’ 文件夹下。
- 详细过程也可参考Darknet的README。
- 执行训练代码,这里我训练的是yolov4-tiny模型,并且使用了darknet提供的预训练模型:
cd darknet/ mkdir reflective # yolov4: # sudo ./darknet detector train ./data/reflective.data./cfg/yolov4-reflective.cfg ./pretrained/yolov4.conv.137 -map -gpus 0,1 -dont_show # yolov4-tiny: sudo ./darknet detector train ./data/reflective.data./cfg/yolov4-tiny-reflective.cfg ./pretrained/yolov4-tiny.conv.29 -map -gpus 0,1 -dont_show
- 在主目录下会生成chart.png,可以查看训练过程的loss和map变化,提前结束训练。
- 【Darkent|Darknet-Yolo系列(一)利用 Darknet 在自己的数据集上训练 Yolov4-tiny 模型】权重文件保存在’reflective/‘文件夹下,测试结果最好的权重名为’yolov4-tiny-reflective_best.weights’,让我们来看看效果如何:
# 在视频上测试模型: python3 darknet_video.py --input data/test.mp4 --out_filename data/test_result.mp4 --weights reflective/yolov4-tiny-reflective_best.weights--data_file data/reflective.data--config_file cfg/yolov4-tiny-reflective.cfg --dont_show
推荐阅读
- 模型转换|【yolov4-tiny】一、darknet->caffe
- YOLO|Ubuntu18.04配置darknet环境实现YOLOv4目标检测(五)——darknet YOLOv4和YOLOv4-tiny模型转ONNX转TensorRT部署
- Deep|分享(YOLO-Darknet 安装)
- 文本特征提取
- 深度学习|TensorFlow 对数据集标记的xml文件解析记录
- 机器学习|收藏版|史上最全机器学习优化器Optimizer汇总
- python|机器学习之朴素贝叶斯算法+应用实例
- 深度学习|图卷积神经网络GCN
- 基于ARM主板的人工智能学习|树莓派镜像烧录教程(史上最全,最完整的树莓派学习专栏)