darknet yolo标注、训练详细说明
文章目录
- 1、标注数据
- 1.1、标注
- 1.2、生成训练列表文件train.txt
- 1.3、转换数据标注格式
- 2、训练数据整理
- 2.1、修改train.txt路径
- 2.2、修改yolov3.cfg
- 2.3、obj.name和obj.data
- 2.4、训练脚本文件trian.sh
- 2.5、测试脚本文件test.sh
- 3、训练
本文对应的脚本文件和程序下载链接 darkent yolo自定义数据标注训练全流程说明示例,也可发私信获取。
1、标注数据
使用labelImg.exe工具对数据进行标注,默认使用voc的数据集格式,之后使用脚本转换为yolo专用的数据格式,并且生成一些训练依赖的准备数据。
准备工作:
- (1)执行脚本 0——清理train文件下的img、xml、txt文件文件 ,将上次训练的所有数据删除(需要的话进行备份)
- (2)复制训练图片到 train/JPEGImages 目录下 (图片过大建议等比缩放到1080以下)
exe和train的目录结构
1.1、标注
使用脚本 1——LabelImg.cmd 打开工具,
按钮 Open Dir 选择待标注的图片数据目录 这里为 to_path/train/JPEGImages
按钮 Change Save Dir,选择存放标注文件xml目录,to_path/train/Annotations
加载图片之后,点击 Edit label按钮 标注目标的类别标签
按键 a 、d 切换图片, 按键 w 开始绘制标准框, ctrl+s 保存当前标注图片数据。
详细参考互联网内容,搜索 yolov3标注自定义数据。标注完成后,目录下train/Annotations会得到每一张图片对应的的xml标注文件,
1.2、生成训练列表文件train.txt
训练需要给出所有图片的绝对地址,这里注意,标注机器可能和后期训练不在一个机器,路径会变化,后期根据实际路径进行批量修改替换。
执行脚本 2——Label_generate_traintxt.cmd 即可,会在当前目录生成train.txt文件。如下
红框目录可能变化,可以通过修改脚本的参数,自动生成
1.3、转换数据标注格式
先修改脚本文件 exe/label_conver_voc_2_yolo.py
中的classes 列表为标注工具中的标签名,例如有4个标签 car,huoche,guache和keche,那么将之前行用#注释,修改如下图。
修改后保存之后,执行脚本 3——Label_conver_voc_2_yolo.cmd ,之后可以在目录 train\labels看到txt格式的标注文件
格式为 标签序号 x y w h
:这里标签序号从0开始,值为python脚本中 classes 列表的下标;位置为相对图像宽高尺寸的百分比例。
这里实际是通过标注文件目录下train/Annotations的xml文件转换得到,一一对应(txt,xml,图片都要一一对应)。
可能出现的问题:
- LabelImage.exe标注得到的xml文件中图像宽高尺寸为0,导致txt转换错误,训练时报错。脚本使用PIL库增加验证修复环节,保证转换正确无误。
- 提示标签不存在:因为标注时lable输入错误,和脚本中的classes列表元素不一致
2、训练数据整理
在训练机器上的训练工具目录darknet下,拷贝标注文件目录train和列表文件train.txt到新建训练目录如data-vehicle-0926-772,这里的目录结构如下
2.1、修改train.txt路径
修改图片列表文件路径的真实路径,前面 1.2、 生成训练列表文件train.txt 已经说明。注意要换行格式,要求unix、utf8格,否可能在训练出错、但会提示STB类似错误。
2.2、修改yolov3.cfg
从darknet目录复制一份原始yolov3.cfg
文件到当前训练目录。修改地方有两快
-
(1) 修改网络结构参数
找到cfg文件中的
所有[yolo]标签段(共3个)
,修改红框中的数据
classes修改为标注时的类别数量,例如4类,filters修改 (类别数+5)*3,这里就修改为(4+5)*3 = 27。(后期其他类别对应修改即可)
注意,一共是修改3组数据。 -
(2) 修改训练参数
这里参数比较专业,在大量数据训练时,需要不断调参设计。当前我们使用默认设计。训练时使用 batch=64, subdivision=16,如果机器GPU性能好显存足够,可以将subdivision降低为8、4、2等(3090可以修改为2)。
2.3、obj.name和obj.data
照着修改即可
2.4、训练脚本文件trian.sh
脚本内容为
cd ..
./darknet detector train data-vehicle-0926-772/obj.data data-vehicle-0926-772/yolov3.cfg /yolov3.cfg darknet53.conv.74 -i 0 -clear
例如机器上已有的脚本文件为
2.5、测试脚本文件test.sh
(训练完成后进行)使用训练的指定模型文件对图片进行测试,并生成结果图片。
例如在服务器的darknet目录下执行
./darknet detector test car-0612-400/obj.data car-0612-400/yolov3-tiny.cfg car-0612-400/weights/yolov3-tiny_best.weights -i 0 -thresh 0.25 ./car-0612-400/train/JPEGImages/11.jpg -ext_output
控制台会打印检测的结果,运行完成后,会生成一个 predictions.jpg 的文件,
3、训练
在训练数据目录下,执行train.sh训练脚本即可,根据控制台训练数据输入检查是否存在错误,进行针对性调整。
正式训练时,后台执行,使用 命令 nohup train.sh &
即可, 生成nohup.out 的训练日志。
训练中间的输出,关注中间的 avg loss,直观上一般越低越好。
后面可以使用脚本drawLossPlot.py绘制loss(train)曲线
相关文章:
darknet yolo标注、训练详细说明
文章目录 1、标注数据1.1、标注1.2、生成训练列表文件train.txt1.3、转换数据标注格式 2、训练数据整理2.1、修改train.txt路径2.2、修改yolov3.cfg2.3、obj.name和obj.data2.4、训练脚本文件trian.sh2.5、测试脚本文件test.sh 3、训练 本文对应的脚本文件和程序下载链接 darke…...
chatgpt赋能python:Python如何产生随机整数?
Python如何产生随机整数? Python是一种高级编程语言。它允许程序员轻松地创建各种类型的应用程序,包括生成随机整数。本文将介绍如何在Python中使用内置的随机数函数来生成随机整数。 random模块 Python中的random模块提供了生成随机数的函数。这些函…...
大话Stable-Diffusion-Webui-客制化主题(四)
文章目录 目标效果开始重要说明单选框以及复选框图标样式更改gradio主题构建器上传主题方式代码上传主题方式目标 在DIY的主题中更改gradio单选框组件以及复选框组件的勾选后图标样式 效果 开始 笔者在使用gradio的主题构建器的过程中发现,gradio的复选框以及单选框组件勾选…...
Excel函数VLOOKUP常用方法
一、基础用法 1、精确匹配 公式:VLOOKUP(待匹配值,查找范围,范围列数,查找方式) 定义好要输出表的表头和第一列,第一列即为要查找和匹配的父内容,在第二列输入公式,被查找表中一定也要将待查…...
systemV的工作原理+原理代码
概念 我们知道进程间的通信有管道的方式进程通信管道制作_云的小站的博客-CSDN博客 但是我们的管道通信其实属于一种取巧的方式,利用了打开的文件可读写的特性上,两个进程对此分别进行读写操作就会产生所谓的通信现象,但是外面的管道依旧得…...
Kubeflow--TFJob实现机制学习
2023暑期学习 TF Job实际场景应用Vertex AI TF Job 链接 https://www.kubeflow.org/docs/components/training/tftraining/ https://developer.aliyun.com/article/601779 TFJob实际上遵循Kubernetes标准的API定义. TFJob 对象 apiVersion --> string --> api版本&…...
百度出品,Nature重磅 -- 优化的mRNA设计算法可改善mRNA的稳定性和免疫原性
摘要 尽管mRNA疫苗已用于COVID-19的预防,但仍然面临不稳定和易降解的风险,这是mRNA疫苗存储、配送、效价等面临的重要障碍。先前的研究已表明,增加二级结构可延长mRNA的半衰期,再加上选择优化的密码子,可改善蛋白表达。…...
CKA 01_docker部署Kubernetes 部署docker 使用kubeadm引导集群 安装Pod网络
文章目录 1. 虚拟机步骤2. Docker 部署 Kubernetes2.1 部署 docker2.1.1 环境要求2.1.2 安装 docker 引擎2.1.3 worker 节点对 master 节点免密2.1.4 设定 docker 开机自启2.1.5 打开桥接,查看桥接流量2.1.6 设定 systemd 方式管理 cgroup2.1.7 docker部署完成2.1.8…...
Redis的使用规范小建议
Redis 核心技术与实战 笔记 作者: 蒋德钧 毕竟,高性能和节省内存,是我们的两个目标,只有规范地使用Redis,才能真正实现这两个目标。如果说之前的内容教会了你怎么用,那么今天的内容,就是帮助你用…...
操作受限的线性表——栈
本文主要内容:本文主要讲解栈的基本概念、基本操作和栈的顺序、链式实现。 目录 栈一、栈的基本概念1、基本概念2、基本操作 二、栈的顺序存储结构1、顺序栈的实现2、顺序栈的基本运算1)初始化2)判栈空3)进栈4)出栈5&a…...
C++基类指针或引用指向或引用派生类对象(实现动态多态四种手段)父类指针访问子类成员变量(需要dynamic_cast)
文章目录 背景多态示例:父类指针指向子类对象父类指针指向子类对象,如何通过父类指针访问到子类特定的成员变量实现动态多态的四种手段:基类的指针或引用指向或引用一个派生类对象(new或不new) 背景 比如有父类Animal…...
WTM框架运行报错0308010C:digital envelope routines::unsupported
WTM框架运行报错0308010C:digital envelope routines::unsupported 错误描述报错原因解决方式 错误描述 我所使用WTM搭建的程序是选择的.net5.0Vue前后端分离的方式,项目结构选择的是“各层分离的多个项目”;本人并非初次使用WTM平台框架搭建项目&#…...
(二)CSharp-索引器
1、索引器定义 什么是索引器 索引器(indexer)是这样一种成员:它使对象能够用与数组相同的方式(即使用下标)进行索引 索引器的声明参见 C# 语言定义文档注意:没有静态索引器 索引器是一组 get 和 set 访问…...
配合AI刷leetcode 实现1170
题目如下: 1170. 比较字符串最小字母出现频次 难度中等 75 定义一个函数 f(s),统计 s 中(按字典序比较)最小字母的出现频次 ,其中 s 是一个非空字符串。 例如,若 s "dcce",那么…...
English Learning - L3 作业打卡 Lesson5 Day36 2023.6.9 周五
English Learning - L3 作业打卡 Lesson5 Day36 2023.6.9 周五 引言🍉句1: So next time you are on a train, look around and see what other people are reading, but dont jump to any conclusions.成分划分弱读连读爆破语调 🍉句2: You will probab…...
前端框架笔记
Vue.js的安装 安装Vue.js有两种方法: (1)类似于Bootstrap或jQuery,直接通过HTML文件中的标签引用。为了方便开发者使用,Vue.js提供了相关的CDN,通过如下代码可以引用最新版本的Vue.js: <sc…...
详细设计文档
1. 引言 1.1 目的 1.2 范围 1.3 定义、缩略语和缩写 1.4 参考文献 1.5 概述 2. 系统架构设计 2.1 总体架构 2.2 模块划分 2.3 数据流程设计 2.4 接口设计 3. 模块详细设计 3.1 登录模块详细设计 3.1.1 类设计 3.1.2 方法设计 3.1.3 数据库表设计 3.1.4 界面设计 3.2 文章管理模…...
Java011——Java数据类型转换(基本数据类型)
回顾:Java八大基本数据类型 大类 类型名称 关键字 占用内存 取值范围 --------------------------------------------------------------------------------------------|字节型 byte 1 字节 -128~127 整型 |短整型 short 2 字节 -32768~32…...
mybatis-plus用法(二)
(5条消息) mybatis-plus用法(一)_渣娃工程师的博客-CSDN博客 AR模式 ActiveRecord模式,通过操作实体对象,直接操作数据库表。与ORM有点类似。 示例如下 让实体类User继承自Model package com.example.mp.po; import com.bao…...
SQL笔记-存储过程+循环
存储过程循环使用方法 Oracle Oracle中存储过程的循环使用方法如下: DECLAREi NUMBER; BEGINi : 1;WHILE i < 10 LOOPDBMS_OUTPUT.PUT_LINE(i || i);i : i 1;END LOOP; END;其中,DECLARE用于声明变量,BEGIN和END用于标识存储过程的开始…...
HNU-操作系统OS-作业1(4-9章)
这份文件是OS_homework_1 by计科2102 wolf 202108010XXX 文档设置了目录,可以通过目录快速跳转至答案部分。 第四章 4.1用以下标志运行程序:./process-run.py -l 5:100,5:100。CPU 利用率(CPU 使用时间的百分比)应该是多少?为什么你知道这一点?利用 -c 标记查看你…...
springboot 精华
一、基础 官方文档地址:Spring Boot 注:以下部分例子 有些用到 .properties 方式,有些用 .yml方式,两者可自行学习,这里部分是为了省空间而写 .properties 方式。 1、泛谈 (1)优势 快速构建…...
我用ChatGPT写2023高考语文作文(三):新课标I卷
2023年 新课标I卷 适用地区:山东、福建、湖北、江苏、广东、湖南、河北、浙江 好的故事,可以帮我们更好地表达和沟通,可以触动心灵、启迪智慧;好的故事,可以改变一个人的命运,可以展现一个民族的形象……故…...
HTML 标签的学习
1.HTML 的结构 前端三剑客: HTML CSS JS,本章我们学习的是HTML HTML > 超文本标记语言 HTML代码是由"标签"构成的. 形如 <body>hello</body>标签名 (body) 放到 < > 中大部分标签成对出现. 为开始标签, 为结束标签.少数标签只有开始标签…...
计算耗时为微秒的方法(包含:时/分/秒/毫秒/微秒/纳秒)
计算耗时为微秒的方法1 #include<stdio.h> #include <windows.h> int main() {int a[10002];int i 0;double run_time;_LARGE_INTEGER time_start; //开始时间_LARGE_INTEGER time_over; //结束时间double dqFreq; //计时器频率LARGE_INTEGER f; //计时器频率Qu…...
通过 Python 封装关键词搜索阿里巴巴商品api接口
以下是使用 Python 封装关键词搜索阿里巴巴商品列表数据的步骤: 使用 requests 库向阿里巴巴搜索接口发送 HTTP 请求,可以使用 GET 或 POST 方法,请求参数中应包含搜索关键词、每页展示数量、当前页码等信息。 解析返回的 response 中的 HTM…...
分布式光伏消纳的微电网群共享储能配置策略研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
C语言写网络爬虫总体思路
使用C语言编写爬虫可以实现网络数据的快速获取和处理,适用于需要高效处理海量数据的场景。与其他编程语言相比,C语言具有较高的性能和灵活性,可以进行底层操作和内存管理,适合处理较复杂的网络请求和数据处理任务。 但是…...
机器学习实战六步法之训练模型、优化模型、部署模型(七)
要落地一个机器学习的项目,是有章可循的,通过这六个步骤,小白也能搞定机器学习。 看我闪电六连鞭!🤣 训练模型 当确定好机器学习算法之后,就可以通过训练数据集中的特征和标签,根据样本数据的…...
《C++高级编程》读书笔记(七:内存管理)
1、参考引用 C高级编程(第4版,C17标准)马克葛瑞格尔 2、建议先看《21天学通C》 这本书入门,笔记链接如下 21天学通C读书笔记(文章链接汇总) 1. 使用动态内存 1.1 如何描绘内存 在本书中,内存单…...
公司变更股东要交税吗/北京seo顾问服务
在上周的 Vue.js 伦敦大会上,Vue.js 作者尤雨溪简要介绍了 Vue 下一个主要版本要发布的内容,9 月 30 日,尤雨溪在 medium 个人博客上发布了 Vue 3.0 的开发路线,我们不妨看看 Vue 3.0 将会有怎样的发展。 兼容 按照尤雨溪的说法…...
河北建设集团网站/软件制作
1. 问题描述 使用 Iris 数据集,在一个 figure 中绘制出右侧的 16 个子图。 分别使用花瓣长度、花瓣宽度、花萼长度和花萼宽度这四种数据,两两组合,形成散点。 找一组自己感兴趣的真实数据,绘制出饼图。并看看数据的项数在什么范围…...
沧州做网站哪家公司好/网络营销推广主要做什么?
心若倦了泪也干了这份深情难舍难了曾经拥有天荒地老这一份情永远难了愿来生还能再度拥抱爱一个人如何斯守到老怎样面对一切我不知道回忆过去痛苦的相思忘不了为何你还来拨动我心跳爱你怎么能了今夜的你应该明了缘难了情难了music.......已不见你暮暮与朝朝这一份情永远难了愿来…...
网站建设 教程/百度关键词怎么优化
Arduino开发环境搭建 获取Arduino IDE开发工具 下载地址 :http://arduino.cc/en/Main/Software 可以下载release 版、Beta版和前期版本 Arduino的开发性,支持源码下载 支持的平台有 Windows、MAC OS X、Linux Windows 平台上面 Arduino IDE下载后为zip包…...
合肥网站制作建设/营销型网站有哪些功能
文章目录引言I、 上架指南1.1 iOS上架干货汇总1.2 上架相关操作技巧1.3 iOS被拒绝的解决方案汇总1.4 系统框架(API)适配II、 开发基础知识III、渲染3.1 动画3.2 文字/图像处理3.2.1 Quartz2D使用指南IV、 网络与数据存储4.1 数据存储4.2 数据搜索4.3 http/https/dns(…...
阿里巴巴企业网站怎么做/sem分析
贵州2019年3月全国计算机四级考试报名入口已开通,报名时间为2018年12月18日00:00至12月28日24:00,考生可登录全国计算机等级考试贵州信息网(http://210.40.13.97/)进行报名。根据《贵州省2019年3月全国计算机等级考试报名通知》得知ÿ…...