Yolo模型的训练参考官网:https://pjreddie.com/darknet/yolo/

(1)在VOC数据集上训练YOLO

如果您想使用不同的训练方式,超参数或数据集,可以从头开始训练YOLO。 这是在Pascal VOC数据集上运行它的方法。

1) 获取 Pascal VOC 数据集

要训练YOLO,您需要2007年至2012年的所有VOC数据。您可以在此处找到指向这些数据的链接。 要获取所有数据,请创建一个目录以存储所有数据,然后从该目录运行:

要执行wget命令需要是linux操作系统,如果是windows系统就需要手动下载了,当然也可以使用win10下的Linux子系统,但是那网速,不说了,都是泪,建议还是去其他下载速度快的地方或者使用下载工具下载这些数据。

现在将有一个VOCdevkit /子目录,其中包含所有VOC训练数据。

2) 生成VOC数据集标签

现在我们需要生成Darknet使用的标签文件。 Darknet希望为每个图像提供一个.txt文件,并为图像中的每个真实对象添加一行,如下所示:

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

其中x,y,宽度和高度是相对于图像的宽度和高度。 为了生成这些文件,我们将在Darknet的scripts /目录中运行voc_label.py脚本。 让我们再次下载它,因为我们很懒。

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

几分钟后,此脚本将生成所有必需文件。 通常,它会在VOCdevkit / VOC2007 / labels /和VOCdevkit / VOC2012 / labels /中生成许多标签文件。 在目录中,您应该看到:

ls
2007_test.txt VOCdevkit
2007_train.txt voc_label.py
2007_val.txt VOCtest_06-Nov-2007.tar
2012_train.txt VOCtrainval_06-Nov-2007.tar
2012_val.txt VOCtrainval_11-May-2012.tar

诸如2007_train.txt之类的文本文件列出了该年份的图像文件和图像集。 Darknet需要一个文本文件,其中包含要训练的所有图像。 在此示例中,让我们训练除2007测试集以外的所有内容,以便我们可以测试模型。 执行:

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

现在,我们将所有2007年和2012年的训练集合成一个大清单。 这就是我们要做的所有数据设置!

3) 修改Pascal Data的配置文件cfg

现在转到您的Darknet目录。 我们必须更改cfg / voc.data配置文件以指向您的数据:

  1 classes= 20
2 train = <path-to-voc>/train.txt
3 valid = <path-to-voc>2007_test.txt
4 names = data/voc.names
5 backup = backup

您应该用放置VOC数据的目录替换<path-to-voc>。

4)下载预训练模型

为了进行训练,我们使用在Imagenet上预先训练的卷积权重。 我们使用darknet53模型的权重。 您可以在此处下载卷积图层的权重(76 MB)。

wget https://pjreddie.com/media/files/darknet53.conv.74

5)训练模型

现在我们可以训练! 运行命令:

./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74

---------------------------------------------------------------------------------------------------------------------------------------------------------------

*****************************************************************************************************************************************

(2)在COCO数据集上训练YOLO

如果您想使用不同的训练方式,超参数或数据集,可以从头开始训练YOLO。 这是在COCO数据集上运行它的方法。

 1) 获取COCO数据

要训练YOLO,您将需要所有COCO数据和标签。 脚本scripts / get_coco_dataset.sh将为您执行此操作。 找出要放置COCO数据并下载的位置,例如:

cp scripts/get_coco_dataset.sh data
cd data
bash get_coco_dataset.sh

现在,您应该具有为Darknet生成的所有数据和标签。

2) 修改COCO配置文件cfg

现在转到您的Darknet目录。 我们必须更改cfg / coco.data配置文件以指向您的数据:

  1 classes= 80
2 train = <path-to-coco>/trainvalno5k.txt
3 valid = <path-to-coco>/5k.txt
4 names = data/coco.names
5 backup = backup

您应该将<path-to-coco>替换为放置COCO数据的目录。

您还应该修改模型cfg以进行培训,而不是进行测试。 cfg / yolo.cfg应该看起来像这样:

[net]
# Testing
# batch=1
# subdivisions=1
# Training
batch=64
subdivisions=8
....

3) 训练模型

现在我们可以训练! 运行命令:

./darknet detector train cfg/coco.data cfg/yolov3.cfg darknet53.conv.74

如果要使用多个GPU,请运行:

./darknet detector train cfg/coco.data cfg/yolov3.cfg darknet53.conv.74 -gpus 0,1,2,3

如果要停止并从检查点重新开始训练,请执行以下操作:

./darknet detector train cfg/coco.data cfg/yolov3.cfg backup/yolov3.backup -gpus 0,1,2,3

yolov3 讲解的更多相关文章

  1. Opencv+Yolov3算法实现社交距离安全检测讲解和实战(Social Distance Detector)

    在我们进行交流谈话时,人与人之间总要保持一定的距离,尤其是在疫情的情况下,人与人之间更要保持一定的安全距离,今天给大家来介绍一个检测社交距离的项目,实现社交距离检测器. 社交距离(Social Dis ...

  2. 万字长文,以代码的思想去详细讲解yolov3算法的实现原理和训练过程,Visdrone数据集实战训练

    以代码的思想去详细讲解yolov3算法的实现原理和训练过程,并教使用visdrone2019数据集和自己制作数据集两种方式去训练自己的pytorch搭建的yolov3模型,吐血整理万字长文,纯属干货 ...

  3. 整合Yolov3到游戏引擎

    这篇其实是前文 CUDA版Grabcut的实现 的后续,和上文一样,先放视频. (博客园好像不支持视频,gif文件太大,视频链接) 在上文用CUDA实现opencv下的grabcut后,当时问题主要是 ...

  4. 目标检测-基于Pytorch实现Yolov3(1)- 搭建模型

    原文地址:https://www.cnblogs.com/jacklu/p/9853599.html 本人前段时间在T厂做了目标检测的项目,对一些目标检测框架也有了一定理解.其中Yolov3速度非常快 ...

  5. Win10 + YOLOv3 环境配置,编译,实现目标检测----How to compile YOLOv3 on Windows

    其他比较好的参考链接: 环境配置: 环境配置的最终图片列表:https://blog.csdn.net/shanglianlm/article/details/80322718 视频讲解YOLOv1: ...

  6. Yolov3代码分析与训练自己数据集

    现在要针对我们需求引入检测模型,只检测人物,然后是图像能侧立,这样人物在里面占比更多,也更清晰,也不需要检测人占比小的情况,如下是针对这个需求,用的yolov3-tiny模型训练后的效果. Yolov ...

  7. Win10中用yolov3训练自己的数据集全过程(VS、CUDA、CUDNN、OpenCV配置,训练和测试)

    在Windows系统的Linux系统中用yolo训练自己的数据集的配置差异很大,今天总结在win10中配置yolo并进行训练和测试的全过程. 提纲: 1.下载适用于Windows的darknet 2. ...

  8. 转 Yolov3转化Caffe框架详解

    转自https://blog.csdn.net/watermelon1123/article/details/82083522 前些日子因工程需求,需要将yolov3从基于darknet转化为基于Ca ...

  9. pytorch版yolov3训练自己数据集

    目录 1. 环境搭建 2. 数据集构建 3. 训练模型 4. 测试模型 5. 评估模型 6. 可视化 7. 高级进阶-网络结构更改 1. 环境搭建 将github库download下来. git cl ...

随机推荐

  1. 第1章 JavaScript 简介

    第1章 JavaScript 简介 1.1 JavaScript简史 1.2 JavaScript实现 1.2.1 ECMAScript 1.2.2 文档对象模型(DOM) 1.2.3 浏览器对象模型 ...

  2. 根据词频生成词云(Python wordcloud实现)

    网上大多数词云的代码都是基于原始文本生成,这里写一个根据词频生成词云的小例子,都是基于现成的函数. 另外有个在线制作词云的网站也很不错,推荐使用:WordArt 安装词云与画图包 pip3 insta ...

  3. aov.h-1.1

    //AOV网与拓扑排序类 #ifndef _AOV_H_ #define _AOV_H_ #include<iostream> #include<cstdio> #includ ...

  4. 微信小程序后端开发流程

    微信小程序后端开发流程根据官网总结为两个步骤 1.前端调用 wx.login 返回了code,然后调用wx.getUserInfo获取到用户的昵称 头像 2.服务端根据code去微信获取openid, ...

  5. Windows 使用 TCPing 工具来获取 TCP延迟、端口通顺情况、已禁Ping服务

    https://elifulkerson.com/projects/tcping.php

  6. 使用Python库paramiko登录远程设备

    前言 手动下载paramiko库的安装包.在PyPi库中查找即可,但是不到是我的电脑问题还是网络问题,2.0.0以上版本我都安装不了,因此我自己是安装的paramiko 1.17.0版本,此版本经过测 ...

  7. 对象浅拷贝Object.assign

    const target = { a: { b: { c: { d: 1 } }, e: 5, f: 6, h: 10 } } const source = { a: { b: { c: { d: 1 ...

  8. Android布局样式

    本篇介绍一下Android中的几种常用的布局,主要介绍内容有: ·View视图 ·LinearLayout ·RelativeLayout 在介绍布局之前,我们首先要了解视图View的基本属性,因为所 ...

  9. 基于STL的字典生成模块-模拟搜索引擎算法的尝试

    该课题来源于UVA中Searching the Web的题目:https://vjudge.net/problem/UVA-1597 按照题目的说法,我对按照特定格式输入的文章中的词语合成字典,以满足 ...

  10. vue.js事件传值之子组件传向父组件以及$emit的使用

    在项目开发中,有时候会遇到一种需求比如是:在子组件中,通过一个事件,比如点击事件,去改变父组件中的某个值,下面来看看是怎么个流程 还是先截图目录结构 父组件为app.vue,components中的文 ...