如何使用yolov3训练自己的数据集
博客主要结构
1. 如何在ubuntu18.04上安装yolo
2 .如何配置yolov3
3 .如何制作自己的训练集测试集
4 .如何在自己的数据集上运行yolov3
1. 在ubuntu18.04下安装yolov3
安装darknet
按ctrl+atl+t 打开终端, 并在终端下依次输入以下命令
git clone https://github.com/pjreddie/darknet.git
cd darknet
make
如果成功的话你会看到以下信息
mkdir -p obj
gcc -I/usr/local/cuda/include/ -Wall -Wfatal-errors -Ofast....
gcc -I/usr/local/cuda/include/ -Wall -Wfatal-errors -Ofast....
gcc -I/usr/local/cuda/include/ -Wall -Wfatal-errors -Ofast....
.....
gcc -I/usr/local/cuda/include/ -Wall -Wfatal-errors -Ofast -lm....
编译完成后键入以下命令运行darknet
./darknet
你将会看到以下输出结果
usage: ./darknet <function>
使用GPU编译(可选)
如果想让yolo运行的更快的话, 可以使用GPU 加速。你的电脑中应该有Nvidia GPU并安装cuda。 在安装完cuda后,在本目录下修改 Makefile第一行
GPU=1
然后在终端键入
make
这样就可以使用cuda啦, darknet在默认情况下会使用你系统里第零个块显卡 (如果你成功安装了cuda, 在终端输入nvidia-smi可以看到自己的显卡情况)。 如果你想修改darknet可以使用的显卡,你可以给他一个可选的命令 -i <index>, 例如
./darknet -i 1 imagenet test cfg/alexnet.cfg alexnet.weights
这样darknet就会使用你的第一块显卡。
下载pre-trained model
可以在这里下载预训练模型, 或者在终端输入以下命令
wget https://pjreddie.com/media/files/yolov3.weights
然后训练你的detector
./darknet detect cfg/yolov3.cfg yolov3.weights data/eagle.jpg
正常情况下你会看到如下输出

darknet会把他的检测的结果, 以及confidence输出出来,因为我没有在darknet下编译opencv所以检测结果不会直接显示出来, 他会把这个结果保存在你的darknet目录下。
2 .配置yolov3
在darknet目录下创建一个dataset子目录, 并在dataset中创建yolo-tiny-obj.cfg 文件, 文件内容与yolov3_tiny.cfg(在darknet/cfg文件夹下)相同(可以直接把yolov3_tiny.cfg的文件内容复制过去), 然后
- 把batch所在行修改为batch=64
- 把subdivision设置为8
- 在每个[yolo]-层, 把classes=80修改成你要检测的类的数量
https://github.com/pjreddie/darknet/blob/master/cfg/yolov3-tiny.cfg#L135
https://github.com/pjreddie/darknet/blob/master/cfg/yolov3-tiny.cfg#L176
- 在每个[yolo]-层前的[convolution]-层中,修改filters=255, 改成filters=(classes+5)*3(只适用于yolov3, 对于yolov2如何计算filters,google/百度一下)
https://github.com/pjreddie/darknet/blob/master/cfg/yolov3-tiny.cfg#L127
https://github.com/pjreddie/darknet/blob/master/cfg/yolov3-tiny.cfg#L171
因此如果classes=1, 那么filters=18, 如果classes=2, 那么filters=21
(不要在cfg文件里这样写:filters=(classes+5)*3)
(一般情况下, filters取决于classes, coords, 以及mask的数量, 例如filters = (classes+coords+1)*<numbers of mask>, 这里的mask就是anchors的索引, 如果没有mask, 那么filters=(classes+coords+1)*num)
比如, 只有两个类, 那么你的yolo-tiny-obj.cfg 在每个yolo层中应该是如下设置
[convolutional]
filters=21 [region]
classes=2
在/darknet/dataset创建obj.names文件, 每行是你的类的名字, 如果你要检测的是猫和狗, 那么你的obj.names文件内容如下
cat
dog
在/darknet/dataset创建obj.data文件, 包含如下内容, (classes=你要检测的类的数量)
classes= 2
train = dataset/train.txt
valid = dataset/test.txt
names = dataset/obj.names
backup = backup/
3. 制作自己的训练集测试集
首先把你的训练集(测试集)图片放到/darknet/dataset/Train (/darknet/dataset/Test ) , 图片扩展名为.jpg
然后对你数据集图片上的每个物体作标记,你可以用这个工具在图片上画边框, 并生成标记文件。他会在同一个目录下,给每个.jpg文件生成一个名字相同的.txt文件,文件里应该包含物体的类的编号, 以及物体在图片中的坐标,每一行都表示一个物体 <物体类的编号><x_center> <y_center> <width> <height>
- <类的编号> :是正整数, 从0-<类的数目-1>
<x_center> <y_center> <width> <height>:都是浮点数范围从0到1,通过图片的长宽计算得出,例如<y_center>=<边框中心的纵坐标>/图片的高,<height> = <边框的高>/图片的高- 注意<x_center> <y_center>:是你画得边框的中心
比如对于img1.jpg你会创建一个img1.txt文件,包含以下内容
1 0.716797 0.395833 0.216406 0.147222
0 0.687109 0.379167 0.255469 0.158333
1 0.420312 0.395833 0.140625 0.166667
在/darknet/dataset目录下创建train.txt文件,文件中每一行都是到你训练集的地址, 可以使绝对路径, 也可以是相对路径, (相对darknet这个文件夹的路径), 例如文件内容如下
dataset/Train/img1.jpg
dataset/Train/img2.jpg
dataset/Train/img3.jpg
这里你需要重新根据你自己的数据集计算anchors值, 可以参开这个python script来计算, 然后把yolo-tiny-obj.cfg文件中的anchors值替换成你计算的结果
4 .在自己的数据集上运行yolov3
下载yolov3-tiny的权重文件:https://pjreddie.com/media/files/yolov3-tiny.weights 到darknet目录下
在终端输入以下命令得到预训练模型yolov3-tiny.conv.15
./darknet partial dataset/yolo-tiny-obj.cfg yolov3-tiny.weights yolov3-tiny.conv.15 15
输入以下命令开始训练
./darknet detector train dataset/obj.data dataset/yolo-tiny-obj.cfg yolov3-tiny.conv.15
如果一切正常应该是这样的结果

如果你运行中出现了nan, 这是正常现象,但如果全部都是nan的话,这就是训练过程出了问题,请仔细检查每一步是否按照操作进行
如何使用yolov3训练自己的数据集的更多相关文章
- Win10中用yolov3训练自己的数据集全过程(VS、CUDA、CUDNN、OpenCV配置,训练和测试)
在Windows系统的Linux系统中用yolo训练自己的数据集的配置差异很大,今天总结在win10中配置yolo并进行训练和测试的全过程. 提纲: 1.下载适用于Windows的darknet 2. ...
- 第十一节,利用yolov3训练自己的数据集
1.环境配置 tensorflow1.12.0 Opencv3.4.2 keras pycharm 2.配置yolov3 下载yolov3代码:https://github.com/qqwweee/k ...
- Win7+keras+tensorflow使用YOLO-v3训练自己的数据集
一.下载和测试模型 1. 下载YOLO-v3 git clone https://github.com/qqwweee/keras-yolo3.git 这是在Ubuntu里的命令,windows直接去 ...
- YoLov3训练自己的数据集
工具:labelimg.MobaXterm 1.标注自己的数据集.用labelimg进行标注,保存后会生成与所标注图片文件名相同的xml文件,如图.我们标注的是井盖和路边栏,名称分了NoManhole ...
- Ubuntu16.04中用yolov3训练自己的数据集
一.配置yolo v3 参考yolo v3官网https://pjreddie.com/darknet/yolo/ 下载darknet后进行编译: git clone https://github.c ...
- 利用YOLOV3训练自己的数据
写在前面:YOLOV3只有修改了源码才需要重新make,而且make之前要先make clean. 一.准备数据 在/darknet/VOCdevkit1下建立文件夹VOC2007. voc2007文 ...
- 使用yolo3模型训练自己的数据集
使用yolo3模型训练自己的数据集 本项目地址:https://github.com/Cw-zero/Retrain-yolo3 一.运行环境 1. Ubuntu16.04. 2. TensorFlo ...
- 【Tensorflow系列】使用Inception_resnet_v2训练自己的数据集并用Tensorboard监控
[写在前面] 用Tensorflow(TF)已实现好的卷积神经网络(CNN)模型来训练自己的数据集,验证目前较成熟模型在不同数据集上的准确度,如Inception_V3, VGG16,Inceptio ...
- YOLOv3训练自己的数据
1. 下载预训练权重文件 YOLOv3使用在Imagenet上预训练好的模型参数(文件名称: darknet53.conv.74,大小76MB)基础上继续训练. darknet53.conv.74下 ...
随机推荐
- 为什么说USDN是一种应用型稳定币?
USDN是由NGK Global出品的一种新型稳定币系统,里面是涵盖了包括货币供需.Bancor.抵押借贷等在内的一整套算法.该稳定币构想一经提出,便在社区引发了不小的热度. 官方对于USDN的定位是 ...
- Redis-第九章节-动态字符串
目录 概述 SDS(动态字符串) SDS(动态字符串)与c语言字符串的区别 1.概述 String类型底层实现的简单动态字符串sds,是可以修改的字符串.它采用预分配冗余空间的方式来减少内存的频繁分配 ...
- 【快速掌握】Redis 的五种数据类型
不同于MySQL的表结构所带来的复杂语句,Redis只需要维护好它的[key-value]结构就可以,因此相比于MySQL,语句非常简单. 今天介绍一下Redis 五种常用的数据类型: 这五种数据类型 ...
- java自学第5期——Object、Date、Calender、System、StringBuilder、基本类型包装类
一.Object类 作用:对象操作 位置:java.lang.Object 方法: public String toString() :返回对象的字符串表示形式. public boolean equ ...
- 在next主题添加微信公众号二维码
在侧边栏添加微信公众号二维码 首先,当然是准备一张微信公众号二维码.有两种添加方式,添加到侧边栏或者添加到推文的结尾处.我的next主题是7.x版本的,使用的主题是Gemini,设置的侧栏显示方式是一 ...
- 维格表2月更新:智能图表上线,唤醒全量工作数据堪比AI
你是否曾经想过,你的维格表数据有朝一日变化出如科幻电影般的数据图表? 你是否感到厌倦,对当前的后台系统密密麻麻的数据累觉不爱? 你是否一直期待,拥有一个专属大数据 BI 看板,让你的规划如有神助,挥斥 ...
- Redis6.0.9主从搭建
所谓主从,大家都知道主是写数据,而从是进行数据的拷贝. 1:配置 主节点 127.0.0.1 6379 从节点 127.0.0.1 6378 先将单机版的配置文件赋值两份出来,原先的配置中主要改动有: ...
- Linux关机指令详解
Linux关机指令 在linux领域内大多用在服务器上,很少遇到关机的操作.毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机. 正确的关机流程为:sync > shutdown ...
- 使用lua-nginx模块实现请求解析与调度
系统版本及需求: OS:CentOS 7.7.1908 OpenResty:1.15.8.2 目录 描述 安装配置 安装openresty 使用示例 HTTP请求复制 HTTP报文解析 总结 描述 l ...
- MHA架构搭建中遇到的问题
1. 两个包:mha4mysql-manager-0.56-0.el6.noarch.rpm 和 mha4mysql-node-0.56-0.el6.norch.rpm 地址:https://code ...