2026年yolov3教程(yolov3入门)

yolov3教程(yolov3入门)红色石头的个人网站 redstonewill com 知乎 https www zhihu com people red stone wl YOLOv3 是比较常见和常用的深度学习目标检测 Object Dection 算法 今天给大家介绍一下如何一步一步使用 YOLOv3 训练自己的数据集 首先我们需要使用 labelimg 工具来标注图片数据集 例如图片是 jpg 格式的 用矩形框标注图片中的目标位置 得到 xml 文件 这里 labelimg 的使用方法就不作介绍了 读者自行查阅



红色石头的个人网站:redstonewill.com 知乎:https://www.zhihu.com/people/red_stone_wl

YOLOv3是比较常见和常用的深度学习目标检测(Object Dection)算法。今天给大家介绍一下如何一步一步使用YOLOv3训练自己的数据集。

首先我们需要使用 labelimg 工具来标注图片数据集,例如图片是 .jpg 格式的,用矩形框标注图片中的目标位置,得到 .xml 文件。这里 labelimg 的使用方法就不作介绍了,读者自行查阅。

例如 100 张图片对应得到 100 个 .xml 文件:

得到 .jpg 和 .xml 文件之后,我们还需要把数据集整理成 VOC2007 规定的格式,方便我们使用 YOLOv3 进行训练。

方法很简单,建立如下目录层级:

然后将 100 张 .jpg 图片放入到 VOCdevkit/VOC2007/JPEGImages 目录下,将 100 个 .xml 文件放入到 VOCdevkit/VOC2007/Annotations 目录下。

至此,数据集准备完毕!

在我们的 Ubuntu 系统或者服务器上,使用 git 命令直接下载 YOLOv3 的源码工程:

下载完成之后,进入 darknet 目录,会发现如下:

YOLOv3 使用的是开源的神经网络框架 Darknet53,有 CPU 和 GPU 两种模式。默认使用的是 CPU 模式,如果我们使用 GPU 的话,需要修改 darknet 目录下的 Makefile 文件:

修改的几点如下:

修改的地方有 4 处。其中,第 1 处 ,,表示使用 GPU 和 CUDNN,若使用 CPU 的话,置为 0 即可;第 2 处将 设为本地安装 nvcc 的实际目录;第 3 处将 设为本地 cuda 的头文件目录;第 4 处将 设为 cuda 的库目录。

Makeflie 文件修改完成之后,保存退出。

将我们之前准备好的包含 100 张 .jpg 图片和 100 个 .xml 文件的 VOCdevkit 文件夹拷贝到 darknet 目录下,替换原来的 VOCdevkit 文件夹。

进入到 darknet/VOCdevkit/VOC2007/ 目录下,新建 test.py 脚本,脚本内容如下:

该 test.py 脚本的作用就是对 100 个样本进行训练集和测试集的划分, 表示划分 80% 的样本作为训练集,20% 的样本作为测试集。

在当前目录,运行该脚本:

运行完之后,在 /ImageSets/Main/ 目录下会生成 4 个文件:test.txt、train.txt、trainval.txt、val.txt。其中,trainval.txt 存放的是 80 个训练集的样本名,test.txt 存放的是 20 个测试集的样本名。

返回到 drknet 目录下,新建 脚本,也可以使用下面命令下载:

脚本内容如下:

该文件需要修改两个地方,分别是 sets 和 classes,classes 根据实际的类别进行修改。

修改完成之后,保存退出。在 darknet 目录下,运行该脚本:

运行之后,在当前目录下生成 3 个文件:2007_train.txt, 2007_val.txt, 2007_test.txt,存放的是训练集、测试集图片的路径。

运行下面的命令:

这样,train.txt 即为真正的训练集图片路径,2007_test.txt 即为真正的测试集图片路径。

同时,在 VOCdevkit/VOC2007 目录下也会多生成一个 labels 文件夹,labels 文件夹里存放的就是训练集每个图片包含的类别、矩形框四个坐标信息。这时候数据集正式完成。

1. 修改 voc.data 文件

在 drknet 目录下,打开 cfg/voc.data 文件,根据实际情况作如下修改:

其中, 是类别, 和 是之前运行 得到的 和 。 改为自己的实际路径, 为模型存放的路径。

2. 修改 voc.names 和 coco.names

在 darknet 目录下,打开 data/voc.names 和 data/coco.names 文件,修改成自己的类别:

保存退出!

3. 修改 yolov3-voc.cfg

下面需要修改配置文件,打开 cfg/yolov3-voc.cfg,搜索 yolo, 总共会搜出 3 个含有 yolo 的地方。 每个地方都必须要改 2 处:

参数 filters 由下式计算:3*(5+classes),例如本例中 classs=4,则filters=27;

参数 class 改为实际的类别个数;

yolov3-voc.cfg 文件中修改 filters 和 classes 的地方一共有 3 处,注意别遗漏了。

在 yolov3-voc.cfg 文件的开头处,修改训练的一些参数

一般根据具体情况作适当修改即可,注意,训练的时候, 的 和 需要注释掉, 是学习率, 是最大迭代训练次数,可根据训练集大小自行修改。

关于 yolov3-voc.cfg 中更详细的参数解释,可自行查阅。

刚才我们修改了 Makefile文件,并修改了各个配置文件,下面就对该工程进行编译,在 darknet 目录下输入下面的命令:

编译完成之后,生成 darknet 可执行程序。

在 darknet 目录下,

首先下载 YOLOv3 的预训练模型:

然后直接输入下面的命令进行训练:

其中, 表示使用 2 块 gpu 进行训练,编号是 0 和 1。根据你可使用的 gpu 个数进行调整。

当看到上面的打印内容,基本就表示训练开始了,慢慢等待吧~

关于 YOLOv3 详细的训练步骤就介绍到这里,下一篇我将带大家来学习一下使用 YOLOv3 训练好的模型进行实际的图片测试还有如何进行批量测试~

今天的文章 2026年yolov3教程(yolov3入门)分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2026-02-24 10:46
下一篇 2026-02-24 10:27

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/47859.html