1、安装nvidia驱动和cudnn,不熟悉的小伙伴请移步:Ubuntu20.04安装NVIDIA显卡驱动、CUDA、CUDNN及突破NVENC并发限制_ubuntu20.04安装显卡驱动_BetterJason的博客-CSDN博客
2、编译opencv,不熟悉的小伙伴请移步:ubuntu20.04 和centos8平台opencv4.5.3&opencv_contrib编译_BetterJason的博客-CSDN博客
3、编译yolov4,不熟悉的小伙伴请移步:ubuntu20下yolov4的编译_BetterJason的博客-CSDN博客
4、使用Labelimg工具标注文件,每个图片文件将会产生一个对应的xml文件
5、建立训练文件的目录结构:在darkent目录下建立如下文件夹:
将标注产生的xml文件复制到Annotations目录下
将训练图片复制到JPEGImages目录下
6、使用 genfiles.py(脚本文件在文末给出)将标注的xml文件转换为yolov4标注格式的txt文件,执行genfile.py之前,请打开genfiles.py将如下内容改为自己训练类的内容:
然后执行: python3 genfiles.py
执行genfiles.py后的文件布局:
在darkent目录下产生:2007_test.txt 2007_train.txt
2007_train.txt:用于训练
2007_test.txt :用于测试
最终训练使用到文件:
darkent/2007_train.txt (训练文件信息)
darkent/2007_test.txt (测试文件信息)
/darknet/VOCdevkit/VOC2007/JPEGImages (训练的图片文件)
darknet/VOCdevkit/VOC2007/labels (yolov4格式的标注有文件)
7、训练参数设置:
在darknet/data目录下修改文件
将 voc.names 复制为 voc-xxx.names, voc-xxx.names是你自己重新命名的配置文件
sudo vim voc-xxx.names
将voc.data 复制为voc-xxx.data,voc-xxx.data是你自己重新命名文件
sudo vim voc-xxx.data
8、下载训练的权重文件 yolov4.conv.137 (下载地址文末给出)
9、修改训练的cfg文件
darknet/cfg目录下
将 yolov4-custom.cfg 复制为 yolov4-xxx.cfg , yolov4-xxx.cfg是你自己命名的训练配置文件名字
修改 yolov4-xxx.cfg
sudo vim /cfg/ yolov4-xxx.cfg
ps:
batch要能够被subdivisions整除
width 和height是训练时把训练图片resize的大小,就是把训练图片resize为width和height在送往训练器,其中width和height必须能被32整除。
修改三个yolo层前面的卷积层参数:
10、开始训练
cd darknet
./darknet detector train data/voc-xxx.data cfg/yolov4-xxx.cfg yolov4.conv.137 -map
11、训练完成后,在darknet/backup目录下保存训练的权重用带best的权重
12、测试修改 darknet/cfg/yolov4-xxx.cfg
# 对图片进行测试
./darknet detector test data/voc-xxx.data data/yolov4-xxx.cfg backup/yolov4-xxx_final.weights data/dog.jpg
# 对视频进行测试
./darknet detector test data/voc-xxx.data data/yolov4-xxx.cfg backup/yolov4-xxx_final.weights test.mp4
# 对摄像头进行测试
./darknet detector test data/voc-xxx.data data/yolov4-xxx.cfg backup/yolov4-xxx_final.weights -c 0
相关文件下载:
链接:https://pan.baidu.com/s/1eGL616eVGWeHCuRpDqqSTQ?pwd=31wq
提取码:31wq
--来自百度网盘超级会员V6的分享