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

小白教程: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希

  • 12
    点赞
  • 139
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
你可以使用Darknet框架来训练自己的数据集,以在Yolov3模型中检测人脸。以下是一些步骤你可以遵循: 1. 数据集准备:收集包含人脸的图像,并将它们标记为矩形边界框。你可以使用标注工具(如LabelImg)来手动标记这些边界框,并生成相应的标注文件。 2. 配置文件修改:在Darknet框架中,你需要修改一些配置文件以适应你的数据集和训练设置。主要修改的文件是`cfg/yolov3.cfg`和`data/obj.data`。 - `yolov3.cfg`:修改`[net]`部分的`batch`和`subdivisions`参数以适应你的显卡性能。在`[yolo]`部分,将`classes`参数设置为你的数据集中需要检测的类别数(这里是人脸)。确保`[yolo]`部分重复的次数与你期望的检测层级匹配。最后,将`[convolutional]`层中的`filters`参数设置为`(类别数 + 5) * 3`。 - `obj.data`:设置`classes`参数为你的类别数(这里是1,即人脸)。将`train`和`valid`参数分别指向你的训练和验证数据集的路径。 3. 权重文件下载:下载预训练的权重文件,可以在Darknet的官方GitHub仓库中找到。 4. 数据集划分:将你的数据集划分为训练集和验证集,通常采用80/20的比例。 5. 标注文件生成:将你的数据集标注文件(如.xml或.txt)转换为Darknet可读取的格式。你可以编写脚本来完成这个任务。 6. 预训练模型转换:使用Darknet提供的脚本将预训练权重文件转换为Darknet可读取的格式。 7. 训练模型:运行以下命令来开始训练模型: ``` ./darknet detector train data/obj.data cfg/yolov3.cfg darknet53.conv.74 ``` 这里的`darknet53.conv.74`是预训练权重文件的路径。 8. 模型评估:在训练过程中,你可以选择使用验证集来评估模型的性能。运行以下命令来进行评估: ``` ./darknet detector map data/obj.data cfg/yolov3.cfg backup/yolov3_last.weights ``` 这里的`yolov3_last.weights`是最后一个训练检查点的权重文件路径。 以上是使用Darknet框架训练自己数据集以检测人脸的一般步骤。请注意,这只是一个概述,具体的细节和调整可能会因你的数据集和需求而有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值