darknet框架(两种版本)编译与使用--yolo训练自己的数据集

发布时间:2022-11-09 20:30

yolo模型应用现在最为广泛,前段时间AB更是更新了yolov4,网上一些大神测试后反应好像都没达到期望,和EfficientNet相比好像效果一般。但yolo仍然是使用最广泛的模型之一。
而当前训练yolo的框架很多。个人觉得darknet框架比较容易上手,适合我这种小白。windows和linux都支持的,需要配置的环境不一样而已。
darknet有两种版本,一种是官方版本,但是维护力度不是很大,不过上手也挺简单的,想要下载可以直接去官方下载,教程很详细。
还有一种就是AlexeyAB版Darknet ,这个就比较强大了。
[https://github.com/AlexeyAB/darknet]
(https://github.com/AlexeyAB/darknet)
环境要求()
window系统或者linux系统。
CMake版本高于3.8。
CUDA 10.0,cuDNN>=7.0。
OpenCV版本高于2.4。
Linux下需要GCC 或者Clang, Window下需要Visual Studio 15、17或19版。

在克隆了项目库以后,直接运行make命令,需要注意的是Makefile中有一些可选参数:
GPU=1代表编译完成后将可以使用CUDA来进行GPU加速(CUDA应该在/usr/local/cuda中)。
CUDNN=1代表通过cuDNN v5-v7进行编译,这样将可以加速使用GPU训练过程(cuDNN应该在/usr/local/cudnn中)。
CUDNN_HALF=1代表在编译的过程中是否添加Tensor Cores, 编译完成后将可以将目标检测速度提升为原来的3倍,训练网络的速度提高为原来的2倍。
OPENCV=1代表编译的过程中加入OpenCV, 目前支持的OpenCV的版本有4.x/3.x/2.4.x, 编译结束后将允许Darknet对网络摄像头的视频流或者视频文件进行目标检测。
DEBUG=1 代表是否开启YOLO的debug模式。
OPENMP=1代表编译过程将引入openmp,编译结束后将代表可以使用多核CPU对yolo进行加速。
LIBSO=1 代表编译库darknet.so。
ZED_CAMERA=1 构建具有ZED-3D相机支持的库(应安装ZED SDK),然后运行。
里面没有的库可以=0,不用,训练会慢一点,不过也可以用

改进了很多地方
添加了对windows下运行darknet的支持。
添加了SOTA模型: CSPNet, PRN, EfficientNet。
在官方Darknet的基础上添加了新的层。。。等等一些

可以直接下载voc和coco数据集,里面也可以将数据集的标注转成yolo格式,相应的代码都写好了,当前目录下运行py文件就可以。
重点就是用darknet框架训练自己的数据集了,我觉得比较好的一点就是有实时的损失参数曲线图,不用自己写了。
标注工具yolo_mask : https://github.com/AlexeyAB/Yolo_mark
配置文件;把数据集放进来,通过yolo_mask标注后,标签和图片在一个目录下,改一下obj.data.对应的文件路径和类别,obj.names 是训练的类别名,一个占一行,train.txt是标注自己生成的,把数据集放到darknet文件中注意路径。接下来就是改一下cfg文件了,我训练用的是yolov3-tiny,就改这个文件,重新复制到一个新的文件名yolo-obj.cfg,按github教程改参数,一般是训练或者测试的batch, subdivisions.要是电脑显存小,可以改小一点。再改yolo层的classes和上面的filters,教程有计算公式。我的是classes=2,filters=21 —(2+5)*3。。。
把预训练模型下载,因为训练刚开始的权重基本都一样,不同类别也是如此。主要改这几个地方就可以训练的,其他改的地方可以看教程。
训练

./darknet  detector train  x64/Release/data/obj.data  cfg/yolo-obj.cfg   backup/yolo-obj.backup  

我已经训练过,训练后的权重保存到backup里面了,一开始先用预训练权重,
看loss降低幅度不变就可以停止了,测试下精度,看一下哪个权重文件高,就用哪个。

如果想要了解一些参数的意义,了一参考这个博客博客-yolo输出参数解析

./darknet  detector map x64/Release/data/obj.data cfg/yolo-obj.cfg backup/yolo-obj.backup

或者改下cfg文件 测试张图片

./darknet  detector test x64/Release/data/obj.data cfg/yolo-obj.cfg backup/yolo-obj.backup

后面跟上图片的地址就可以了。

当前,要是觉得看官方的英文教程比较费劲,这里有翻译的中文的手册,讲的更详细
https://mp.weixin.qq.com/s/xUwwKii-DS1PC69kMz28FQ
中文手册

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号