小白教程:Ubuntu下使用Darknet/YOLOV3训练自己的数据集

本文档详细介绍了在Ubuntu环境下使用Darknet和YOLOV3训练自定义数据集的步骤,包括数据标注、配置文件修改、训练与测试,以及训练过程的可视化。通过预训练模型进行检测,转换XML为TXT格式,修改YOLOV3的配置文件,启动训练,并在训练过程中利用工具进行效果评估和参数调整。
摘要由CSDN通过智能技术生成

小白教程:Ubuntu下使用Darknet/YOLOV3训练自己的数据集

YOLOV3官网教程:https://pjreddie.com/darknet/yolo/

使用预训练模型进行检测

git clone https://github.com/pjreddie/darknet(如果安装不了,先试试sudo apt-get install git)
cd darknet
make
wget https://pjreddie.com/media/files/yolov3.weights
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

在这里插入图片描述
我们没有使用OpenCV编译Darknet,因此无法直接显示检测。 相反,它将它们保存在predictions.png中。 您可以打开它以查看检测到的对象。
在这里插入图片描述
多个图像
./darknet detect cfg/yolov3.cfg yolov3.weights
在这里插入图片描述
输入图片路径:

data/horses.jpg

在这里插入图片描述
可以在darknet文件夹下看到prediction.jpg
在这里插入图片描述
它将提示您尝试更多路径来尝试不同的图像。完成后Ctrl-C用于退出程序。
更改检测阈值
默认情况下,YOLO仅显示检测到的置信度为.25或更高的对象。您可以通过将-thresh 标志传递给yolo命令来更改此设置。例如,要显示所有检测,您可以将阈值设置为0:

  ./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg -thresh 0

微小的YOLOv3
对于受限环境,我们有一个非常小的模型yolov3-tiny。要使用此模型,请先下载权重:

wget https://pjreddie.com/media/files/yolov3-tiny.weights
然后使用微小的配置文件和权重运行检测器:

./darknet detect cfg/yolov3-tiny.cfg yolov3-tiny.weights data/dog.jpg

网络摄像头上的实时检测
如果您看不到结果,则在测试数据上运行YOLO并不是很有趣。而不是在一堆图像上运行它让我们在网络摄像头的输入上运行它!
要运行此演示,您需要使用CUDA和OpenCV编译Darknet。然后运行命令:
使用CUDA编译(按照这个博客安装CUDAhttps://blog.csdn.net/jonms/article/details/79318566)
CPU上的Darknet速度很快,但它在GPU上的速度要快500倍!你必须有一个Nvidia GPU,你必须安装CUDA(

安装CUDA后,Makefile将基本目录中的第一行更改为:

GPU=1

现在您可以make启用项目和CUDA。默认情况下,它将在系统的第0个图形卡上运行网络(如果您正确安装了CUDA,则可以使用列出您的图形卡nvidia-smi)。如果你想更改Darknet使用的卡,你可以给它一个可选的命令行标志-i ,如:

./darknet -i 1 imagenet test cfg/alexnet.cfg alexnet.weights

如果您使用CUDA进行编译但想要进行CPU计算,无论出于何种原因您都可以使用-nogpuCPU来代替:

./darknet -nogpu imagenet test cfg/alexnet.cfg alexnet.weights

享受您新的超快速神经网络!

使用OpenCV进行编译
默认情况下,Darknet stb_image.h用于图像加载。如果你想要更多支持奇怪的格式,你可以使用OpenCV!OpenCV还允许您查看图像和检测,而无需将其保存到磁盘。

首先安装OpenCV。如果你从源代码执行此操作,它将是漫长而复杂的,因此请尝试让包管理器为您执行此操作。

接下来,将第二行更改为Makefile:

OPENCV=1

在这里插入图片描述
你完成了!要试一试,首先要重新开始make。
在这里插入图片描述
然后使用imtest例程来测试图像加载和显示:

./darknet imtest data/eagle.jpg

如果你有一堆老鹰的窗户,你就成功了!他们可能看起来像:
在这里插入图片描述
继续前面的网络摄像头上的实时检测

  ./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights

YOLO将显示当前的FPS和预测类以及在其上绘制边界框的图像。

您需要连接到OpenCV可以连接的计算机的网络摄像头,否则它将无法工作。如果您连接了多个网络摄像头并想要选择使用哪个网络摄像头,则可以传递标记-c 以进行选择(OpenCV 0默认使用网络摄像头)。

如果OpenCV可以读取视频,您也可以在视频文件上运行它:这就是我们制作YouTube视频的方式。

./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights <video file>

关于VOC的培训YOLO
如果您想要使用不同的训练方案,超参数或数据集,您可以从头开始训练YOLO。以下是如何使其在Pascal VOC数据集上运行。
获取Pascal VOC数据
要训​​练YOLO,您将需要2007年至2012年的所有VOC数据。您可以在此处找到数据的链接。要获取所有数据,在darknet下新建一个文件夹VOCdevkit,并从该目录运行:

wget https://pjreddie.com/media/files/VOCtrainval_11-May-2012.tar
wget https://pjreddie.com/media/files/VOCtrainval_06-Nov-2007.tar
wget https://pjreddie.com/media/files/VOCtest_06-Nov-2007.tar
tar xf VOCtrainval_11-May-2012.tar
tar xf VOCtrainval_06-Nov-2007.tar
tar xf VOCtest_06-Nov-2007.tar

为VOC生成标签
现在我们需要生成Darknet使用的标签文件。Darknet希望.txt每个图像都有一个文件,图像中的每个地面实况对象都有一行,如下所示:

<object-class> <x> <y> <width> <height>

其中x,y,width,和height相对于图像的宽度和高度。要生成这些文件,需要执行如下操作。

wget https://pjreddie.com/media/files/voc_label.py
python voc_label.py
ls

在这里插入图片描述

cat 2007_train.txt 2007_val.txt 2012_*.txt > train.txt

将2007和2012所有训练文件放在一个一起。
修改Pascal数据的Cfg
现在转到Darknet目录。我们必须更改cfg/voc.data配置文件以指向您的数据:<

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值