yolov3-tiny训练自己的数据集-程序员宅基地

技术标签: 迫于科研的搬运工  

仅作笔记整理搬运使用,没有任何程序原创部分,主要给自己提个醒,避免重复搜索工作

一、制作VOC数据集

https://blog.csdn.net/Sunhansong/article/details/107281225

二、darknet框架下载

yolov3官方网站
https://pjreddie.com/darknet/yolo/

AlexeyAB 版本darknet
https://github.com/AlexeyAB/darknet
训练直接可视化,权重有best.weights

三、训练

  1. 把数据集放在darknet/script中
  2. 修改voc_label.py中的classes变成自己需要的类别名称,此外将classes上一行的带括号的2012删除,以及最后两句注销.
python3 ./voc_label.py
cat 2007_train.txt 2007_val.txt > train.txt
  1. 修改配置

    修改data/voc.names里面的类别为自己需要的类别名称
    修改cfg/voc.data文件

classes= 3
train  = /home/shs/darknet/scripts/2007_train.txt
valid  = /home/shs/darknet/scripts/2007_test.txt
names = data/voc.names
backup = /home/shs/darknet/backup/

注:classese:类别数量
train:路径为voc数据集文件夹下的2007_train.txt文件的路径
test:路径为voc数据集文件夹下的2007_test.txt文件的路径
names:为data文件夹下的voc.names
backup:为主目录下backup文件夹(主要用来存放训练生成的.weights文件(模型)和.backup文件(用于训练过程中断后继续训练时所用文件))
eval:为voc评价标准

  1. 修改cfg文件
    若用yolov3-tiny.cfg
[net]
#Testing
#batch=1
#subdivisions=1
#Training
batch=64
subdivisions=16    #原来是2,后来运行时总出核心已转储的错,改大了就好了
width=416
height=416
channels=3
[convolutional]
size=1
stride=1
pad=1
filters=93   ##改为3*(classes+1+4)
activation=linear

[yolo]
mask = 0,1,2
anchors = 10,13,  16,30,  33,23,  30,61,  62,45,  59,119,  116,90,  156,198,  373,326
classes=26    ##改为你自己的数量
num=9
jitter=.3
ignore_thresh = .5
truth_thresh = 1
random=1

其中有两处需要修改!yolov3-voc.cfg有三处!

  1. 训练:

(1)模型下载:

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

(2)可设置训练次数
系统默认会迭代45000次batch,如果需要修改训练次数,进入cfg/yolo3_tiny.cfg修改max_batches的值。
(3)模型保存
训练时默认:迭代次数小于1000时毎迭代100次保存一次模型,迭代次数大于等于1000时毎一万次保存一次模型,保存的模型结果保存在主目录下的backup文件夹下,同时,会保存.backup模型(该模型为:当训练中断时,若想要继续接着上次训练可以使用这个模型),若想修改毎多少次保存一次模型的次数,可以在DarkNet主目录下examples/detector.c文件138行中进行修改
修改完成后,在DarkNet主目录下鼠标右键打开终端输入命令:make,回车进行重新编译
(4)训练终端输入:

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

加上-map可在训练时看到map

./darknet detector train cfg/voc.data cfg/yolov3-tiny.cfg darknet53.conv.74  2>1 | tee train_yolov3.log

后面命令可保存训练日志train_yolov3.log
(5)
训练时,终端看Avg IOU **这个值越大说明训练效果越好,出现大量的nan则证明训练无效

Region 106 Avg IOU: 0.494182, Class: 0.494590, Obj: 0.000736, No Obj: 0.000152, .5R: 0.000000, .75R: 0.000000,  count: 1
658(迭代次数): 6.408302(总的loss损失), 6.909904 avg(平均loss), 0.000187 rate(学习率), 3.666400 seconds(训练batchsize用到的时间), 42112 images(当前已经训练多少图片)
Loaded: 0.000028 seconds

参数信息:
Avg IOU: 当前迭代中,预测的box与

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Sunhansong/article/details/107211930

智能推荐

GIS地理空间数据免费获取_diva gis-程序员宅基地

文章浏览阅读1.1w次,点赞20次,收藏183次。GIS地理空间数据免费获取国内:一、测绘地理信息局会提供权威的数据。需要进入全国地理信息资源目录服务系统网站(http://www.webmap.cn/main.do?method=index),该网站提供:30米全球地表覆盖数据,GlobeLand30能够提供包括:地理位置、分布范围和景观格局等直观的陆表地表覆盖的空间分布和信息。1:100万全国基础地理数据库全国1:100万基础地理数..._diva gis

王者竞速游戏服务器维护了,《王者荣耀》不停机更新维护-程序员宅基地

文章浏览阅读170次。今天王者荣耀的服务器似乎出了点小问题,玩家在游戏里出现了许多BUG,所以官方对全服的玩家进行了一次不停机的更新,那么此次更新的内容相信大家都很想知道吧,小编为大家整理了相关的资讯,感兴趣的玩家就跟着小编一起来看看吧,希望能帮到你。王者荣耀7月17日进行了不停机更新维护,下面给大家带来具体的更新内容,一起来看看吧。亲爱的召唤师:我们计划在2019年7月17日 8:30-9:30 对全服进行不停机更新..._为什么王者荣耀今天不停机

将LGBM用作二分类问题之上_matlablgbm模型-程序员宅基地

文章浏览阅读460次,点赞8次,收藏9次。LGBM(Light Gradient Boosting Machine)可以用于解决二分类问题。事实上,LGBM在实际应用中被广泛用于分类问题,包括二分类问题。在使用LGBM进行二分类问题时,你可以指定目标变量的类型和相关参数。对于二分类问题,你可以使用。指定了二分类问题的目标。你可以根据具体问题和数据集的特点调整其他参数,以优化模型性能。表示使用对数损失作为损失函数,是二分类问题的默认设置。被用于创建一个二分类模型,_matlablgbm模型

Java包装类;基本数据类型与字符串的相互转换_java 基本类型转包装类-程序员宅基地

文章浏览阅读531次。Java包装类;基本数据类型与字符串的相互转换_java 基本类型转包装类

【重构架构设计】_重构设计-程序员宅基地

文章浏览阅读368次,点赞9次,收藏9次。通过以上两个示例,可以看到领域驱动设计的特点:每个领域都有自己的模型(User和Order类),聚合根(User和Order类的实例)和业务逻辑(changePassword、addItem等方法)。引入领域驱动设计(DDD):DDD是一种面向领域模型设计的方法,通过将业务领域划分为多个小的子领域来进行解耦。通过使用微服务架构,可以将系统解耦为多个独立的服务,提高系统的可用性和可伸缩性。通过以上的步骤,可以有效进行业务解耦,提高代码的高可用性和可维护性。在订单管理领域中,专注于订单的信息、行为和业务规则。_重构设计

cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration的解决-程序员宅基地

文章浏览阅读2.3w次,点赞7次,收藏12次。导入了一个工程,编译什么的都还好,但是报了一个XML的错误。cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'dubbo:application'. 具体错误如下:Multiple annotations found at this line: ..._cvc-complex-type.2.4.c: the matching wildcard is strict, but no declaration

随便推点

Solidworks装配体打包/Pack and Go和另存为两种方法的区别-程序员宅基地

文章浏览阅读7.6k次。Solidworks装配体打包/Pack and Go和另存为两种方法的区别_pack and go

戴尔笔记本怎么安装统信uos系统?戴尔笔记本安装统信uos+win双系统_win7和uos双系统-程序员宅基地

文章浏览阅读2.6k次。答案是肯定的,还有的网友问,能不能保留本地windows系统然后再安装统信uos形成双系统,答案也是肯定的,下面小编就教大家在保留本地windows系统的同时安装统信uos系统形成双系统的方法教程。1,插入制作好的统信uos系统盘,重启按F12或FN+F12调出启动管理对话框,默认因为是uefi的引导,所以要选择uefi开头的USB HDD识别到U盘启动进入统信uos系统安装界面,如下图所示;3,接着进入统信uos系统安装界面后,因为我们要保留本地的windows系统,所以这里选择自定义安装,如下图所示;_win7和uos双系统

react-router v6实现动态的title(react-router-dom v6)_react router v6 改 title-程序员宅基地

文章浏览阅读5.2k次,点赞3次,收藏2次。react-router v6实现动态的title(react-router-dom v6)_react router v6 改 title

掌握之分布式-6.分布式数据库-程序员宅基地

文章浏览阅读162次。掌握高并发、高可用架构第三章 分布式本章介绍分布式架构的底层技术。主要说明面试过程中可能被问到的技术点。第六节 分布式数据库MyCat分库分表 Sharding1. 分库分表的方法垂直切分,也就是因为表多而数据多,将关系紧密(比如统一模块)的表切分出来放到一个服务器中水平切分,表不多,而是表中数据量庞大,也就是把表的数据按照某种规则切分到多个服务器中现实中多是这两种的混合2. 分..._分布式数据库使用group by 代价大吗

克隆的虚拟机无法修改静态ip_vm克隆的虚拟机ip不能改为静态ip-程序员宅基地

文章浏览阅读547次。job for network.service failedsystemctl restart network.service failed造成这种情况,一般可能是由于克隆的虚拟机,MAC地址与本机的对应不上,所以需要修改MAC地址与本机对应上。ip addr#查看本机的MAC地址vim /etc/sysconfig/network-script/ifcfg-ens33#修改MAC地址有时候ip地址会莫名的消失,因为有2套网络管理工具将NetworkManager关闭systemctl s_vm克隆的虚拟机ip不能改为静态ip

OpenOCD的调试_c# openocd的配置-程序员宅基地

文章浏览阅读4.3k次,点赞2次,收藏5次。1、工具本文使用的软、硬件工具如下:目标开发板:STSPEAr310EVB2.0(官网www.st.com)及其交叉编译环境。仿真器:OpenJTAG(官网www.100ask.net)驱动(www.ftdichip.com/Drivers/D2XX.htm)操作系统:Fedora(官网fedoraproject.org)调试软件:openocd(官网openocd.sourceforge.net)2、安装OpenJTAG驱动本文不介绍交叉编译环境的安装,若有需要请..._c# openocd的配置