yolov4训练
使用gpu训练,修改makefile中
GPU=1
CUDNN=1
CUDNN_HALF=1
OPENCV=1
OPENMP=1
LIBSO=1
DEBUG=1
使用
sudo make
make出现No package 'opencv' found 执行
sudo apt install libopencv-dev
make出现/bin/sh: 1:nvcc:not found,去/usr/local/cuda-11.7/bin中找到nvcc的目录并根据目录在makefile中进行修改


然后sudo make可以正常运行,make结束后把darknet文件移动到train文件夹中
yolov4.conv.137下载地址:
https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v3_optimal/yolov4.conv.137
按照在darknet文件夹中新建一个文件夹train此格式准备文件结构

images中存放本次要训练的图片(4:1),使用代码生成train.txt和val.txt文件放在train目录中,同时labels文件夹也按此格式放置数据

txt内容如下图所示

labels中存放labelimg标注的txt文件,如果是voc文件要存放到Annotation文件夹中还需要转换成txt格式
1.把cfg/yolov4-tiny.cfg文件复制到train/data中进行修改:
修改batch=64,subdivision=32
修改max_batches=classes*2000 例如有11个类别 ,那么就设置为22000,N个类就设置为N乘以2000,
修改steps为80% 到 90% 的max_batches值 比如max_batches=4000,则steps=17600,19800
修改classes,先用ctrl+F搜索 [yolo] 可以搜到3次,每次搜到的内容中 修改classes=你自己的类别 比如classes=2
修改filters,一样先搜索 [yolo] ,每次搜的yolo上一个[convolution] 中 filters=(classes + 5)x3 比如11个类中filters=48
(可以跳过)如果要用[Gaussian_yolo] ,则搜索[Gaussian_yolo] 将[filters=57] 的filter 修改为 filters=(classes + 9)x3 (这里我没用到,但是还是修改了)
2.复制data/voc.names到train/data中,改名为train.names。修改classes内容为自己的类别数
3.复制cfg/coco.data到train/data中,改名为train.data


最后在train文件夹中打开终端,运行
./darknet detector train data/train.data data/yolov4-tiny.cfg yolov4-tiny.conv.29 -map
训练后可以在backup中看到权重文件,测试图片
./darknet detector test data/train.data data/yolov4-tiny.cfg backup/yolov4-tiny_best.weights xxxxxxx.jpg
性能统计 统计map@iou=0.50,map@iou=0.75:
./darknet detector map data/train.data data/yolov4-tiny.cfg backup/yolov4-tiny_best.weights
./darknet detector map data/train.data data/yolov4-tiny.cfg backup/yolov4-tiny_best.weights -iou_thresh 0.75
训练过程中出现

检测结果导致只有框没有标签名字,解决方法是将train目录中的data文件夹中加入labels文件夹,包含字体。
使用如下代码 检测视频并输出视频结果为test.mp4
./darknet detector demo data/train.data data/yolov4-tiny.cfg backup/yolov4-tiny_final.weights cars.mp4 -ext_output cars.mp4 -out_filename test.mp4
浙公网安备 33010602011771号