使用labelImg标注yolov5数据集并在kaggle中使用yolov5

使用labelImg标注yolov5数据集并在kaggle中使用yolov5

文章目录

  • 前言
  • 一、labelImg标注
    • 1.1. 下载exe文件
    • 1.2. labelImg 下载(源码)
    • 1.3. 环境配置
    • 1.4. 使用
      • 1.4.1. 设置
      • 1.4.2. 导入图片并标注
  • 二、在kaggle中使用
    • 2.1. 下载源码
    • 2.2. 编辑配置文件
    • 2.3. 将压缩包上传至kaggle中
    • 2.4. 导出训练得到的文件
    • 2.5. 补充:
  • 总结


前言

本文主要介绍如何使用labelImg这个软件来对yolov5数据集进行标注,生成yolo格式的文件。以及如何在kaggle中使用yolov5代码进行目标检测。

一些资源分享,有需要自取:

链接:https://pan.baidu.com/s/1llTPjGmHsQiXEY75NkIC6g?pwd=1wht
提取码:1wht
–来自百度网盘超级会员V5的分享

视频:

使用labelImg标注数据集

在kaggle中运行yolov5


一、labelImg标注

1.1. 下载exe文件

直接下载windows支持的exe文件

https://github.com/HumanSignal/labelImg/releases

在这里插入图片描述

1.2. labelImg 下载(源码)

https://github.com/HumanSignal/labelImg

下载压缩文件或git clone 下来即可
在这里插入图片描述

1.3. 环境配置

使用编辑器(以pycharm为例)打开下载的源代码文件夹后

安装 pyqt5、PyQt5-tools、lxml、sip库

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyqt5

在这里插入图片描述

在这里插入图片描述

在终端输入

pyrcc5 -o resources.py resources.qrc  

这时在labelimg-master文件夹中,就会出现resources.py文件,然后把resources.py复制到libs文件夹中。

在这里插入图片描述

修改labelimg.py

将pyqt4改为pyqt5
在这里插入图片描述

启动程序

在终端输入:

python .\labelImg.py 

在这里插入图片描述
或者直接运行,成功后会弹出窗口:

在这里插入图片描述

1.4. 使用

1.4.1. 设置

提前建好一个文件夹,一个文件夹里再建俩个文件夹,一个是存放原始图片images,一个是打完标签后存放txt的文件夹annotations。

在这里插入图片描述

将要标注的图片放入images文件夹内,运行软件前可以更改下要标注的类别。这里选了10个类别
在存放labelimg源码的目录的data文件下找到predefined_classes.txt 这个txt文档,在里面输入自定义的类别名称,

在这里插入图片描述
在这里插入图片描述

功能键设置

在这里插入图片描述

在这里插入图片描述

1.4.2. 导入图片并标注

在这里插入图片描述
选择要标注的标签,比如“YNXSBN”
点击ok.
在这里插入图片描述

标签打完以后可以去annotations 文件下看到标签文件已经保存在这个目录下。

在这里插入图片描述
生成的标签文件的格式:
总共有5列,class x_center y_center width height 。
每行表示一个目标对象,每行中的第一个数表示目标类别,计数从0开始,比如这里有十个类别,故为0~9。后面的4个值代表目标真实框中心点(x,y)和真实框的宽、高信息。(并且已经全部做了归一化处理)

在这里插入图片描述

二、在kaggle中使用

2.1. 下载源码

https://github.com/ultralytics/yolov5

我们可以点击 Tags 来选择版本
在这里插入图片描述

在这里插入图片描述

我选的是v6.0,点击下载压缩文件即可

在这里插入图片描述

下载预训练权重, 地址:https://github.com/ultralytics/yolov5/releases
根据自己需要选择预训练权重(和源码版本对上)

在这里插入图片描述

2.2. 编辑配置文件

先使用编辑器打开项目文件夹

在这里插入图片描述

修改配置文件,在data目录下新建一个yaml文件(我的文件是san_ye.ymal),加入以下内容:

#path为自己数据集的文件夹名称,要根据的数据集放置自己项目路径下的哪个位置进行更改
path: /kaggle/input/yolov5-san/yolov5-6.0/data/dataset  #(因为等下要上传到kaggle中,所以路径直接改成这样)
#train是训练时加载的图片或者标签的路径
train: train/images
#val是验证时加载的图片或者标签的路径
val: val/images
#test是测试时加载的图片或者标签的路径
test: test/images
# 类别数
nc: 10
# 类别名称
names: ['ZJWZ','ZJTZ','GXGL','GZQXN','YNKM','GXYL','SXXA','GXBS','YNXSBN','GZBJ']

在这里插入图片描述

修改源码

因为改变了训练数据集,并且是在kaggle中进行训练,所以要进行源码的修改

yolov5s.yaml需要将nc: 80 -->nc:10,这是因为预训练使用的coco128共有80个类别,而我们的数据集共10个类别。

在这里插入图片描述

train.py中要修改训练结果的保存路径(适应kaggle的输出路径):

parser.add_argument('--project', default= '/kaggle/working/runs/train', help='save to project/name')

在这里插入图片描述

将loss.py中gain = torch.ones(7, device=targets.device)改为gain = torch.ones(7, device=targets.device).long()

参考文章 : https://zhuanlan.zhihu.com/p/651266615

在这里插入图片描述

2.3. 将压缩包上传至kaggle中

先新建一个存放数据集的dataset,我这里命名为(yolov5-san)

在这里插入图片描述
然后新建一个笔记本(notebook),用来运行代码

在这里插入图片描述

在这里插入图片描述

搭建环境

!pip install -U -r /kaggle/input/yolov5-san/yolov5-6.0/requirements.txt

检测是否能运行

!python /kaggle/input/yolov5-san/yolov5-6.0/train.py --data /kaggle/input/yolov5-san/yolov5-6.0/data/san_ye.yaml --batch-size 32 --epochs 5 --cfg /kaggle/input/yolov5-san/yolov5-6.0/models/yolov5s.yaml --weights  /kaggle/input/yolov5-san/yolov5-6.0/yolov5s6.pt

在这里插入图片描述

2.4. 导出训练得到的文件

先保存

在这里插入图片描述

然后去这个notebook的编辑界面,点击output

在这里插入图片描述

2.5. 补充:

前面遇到了numpy包版本问题,报错会显示numpy没有.int这个属性,说明较新的numpy包已经不支持np.int

我试过将numpy包版本降低,但是又显示numpy版本太低与pandas版本不符合。
所以我干脆将源码中的 np.int 全部改为 int.

如果遇到xxx没有.getsize()属性,我们可以将pillow包的版本降低

!pip install Pillow==9.5

如果也遇到这问题,可以参考。


总结

介绍了使用labelImg这个软件对yolo数据集进行标注;也介绍了如何在kaggle中训练yolov5数据。

古来青史谁不见,今见功名胜古人。

–2024-4-2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/517731.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言------冒泡法排序

一.前情提要 1.介绍 冒泡法排序法: 1)冒泡排序(Bubble Sort)是一种简单的排序算法,它重复地遍历要排序的列表,一次比较相邻的两个元素,并且如果它们的顺序错误就将它们交换过来。重复这个过程直到没有需…

【MATLAB第102期】基于MATLAB的BRT增强回归树多输入单输出回归预测模型

【MATLAB第102期】基于MATLAB的BRT增强回归树多输入单输出回归预测模型 BRT,即Boosted Regression Trees(增强回归树),是一种用于回归问题的集成学习方法。它结合了多个决策树模型,通过逐步改进的方式来提高整体模型的…

nuitka和pyinstaller打包文件大小对比

最近看到一篇文章,介绍nuitka打包Python程序:比较PyInstaller和Nuitka 听说Nuitka打包文件会获得更小的文件体积,我准备测试一下。 1、用两种方式打包程序 写一个简单的wxPython程序: # demo.pyimport wxapp wx.App() frame…

win11安装WSL UbuntuTLS

win11安装WSL WSL 简介WSL 1 VS WSL 2先决要求安装方法一键安装通过「控制面板」安装 WSL 基本命令Linux发行版安装Ubuntu初始化相关设置root用户密码网络工具安装安装1panel面板指导 WSl可视化工具问题总结WSL更新命令错误Ubuntu 启动初始化错误未解决问题 WSL 简介 Windows …

小组分享内容第一部分:总览+HttpClients

目录 1.网络爬虫的作用(人话): 2.使用的工具 3.不使用程序进行网页信息的获取的操作步骤 4.如何使用程序来进行上述操作 1.打开浏览器 2.输入网址 3.发送请求 4.获取响应 5.判断响应是否成功 6.获取响应里需要的内容 7.记得最后关…

window中如何在Anaconda虚拟环境中安装compressai

1, 进入CompressAI的Github代码页下载压缩包并解压到自己的项目路径 2,打开anaconda的prompt命令行,激活需要安装的虚拟环境,然后进入compressai文件夹,比如下操作: 3,输出安装命令行 pip install -e . -…

DNS和HTTP

DNS应用层协议 域名解析系统 使用IP地址,来描述设备在网络上的位置 IP地址并不适合来进行传播网站,就采用了域名的方式来解决网站传播的问题。如www.baidu.com这样类似的就很容易让人记住。其域名就直接代表了这个网站。而且有一套自动的系统会将域名解…

代码随想录阅读笔记-二叉树【二叉搜索树中的众数】

题目 给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。 假定 BST 有如下定义: 结点左子树中所含结点的值小于等于当前结点的值结点右子树中所含结点的值大于等于当前结点的…

聚合DNS管理系统v1.0全新发布 域名解析管理系统

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 聚合DNS管理系统可以实现在一个网站内管理多个平台的域名解析,目前已支持的域名平台有:阿里云、腾讯云、华为云、西部数码、CloudFlare。本系统支持多用户&…

LeetCode 2192.有向无环图中一个节点的所有祖先:拓扑排序

【LetMeFly】2192.有向无环图中一个节点的所有祖先:拓扑排序 力扣题目链接:https://leetcode.cn/problems/all-ancestors-of-a-node-in-a-directed-acyclic-graph/ 给你一个正整数 n ,它表示一个 有向无环图 中节点的数目,节点编…

Qt Creator实例之图标主题

Chart themes 是 Qt Creator 中图表的主题,它可以用于改变图表的外观和风格,使其更符合你的需求和设计。此示例显示了所有支持的图表类型的不同内置主题的外观。为了给结果一个更和谐的外观,应用程序的背景调色板是根据所选主题定制的。 char…

Api网关-使用Grafana可视化Apisix指标

文章目录 前言一、Apisix部署二、安装配置Grafana1. 安装Grafana2. 设置中文3. 启动4. 登录5. 启停命令5.1 启动和停止5.2 启禁用开机自启动5.3 查看状态 三、安装配置prometheus1. 安装2. 配置服务3. 启动4. 登录5. prometheus启停命令5.1 启动和停止5.2 启禁用开机自启动5.3 …

高等数学基础篇(数二)之定积分的应用

定积分的应用: 一、几何应用 二、物理应用 三、几何例题 四、物理例题 目录 一、几何应用 1.平面图形的面积 2.旋转体体积 3.曲线弧长 4.旋转体侧面积 二、物理应用 三、几何例题 四、物理例题 一、几何应用 1.平面图形的面积 2.旋转体体积 3.曲线弧长…

mysql 安装与连接

关系型数据库 SQL: MySql Oracle 非关系型数据库 NoSql : redis MangoDB 关系型数据库有局限性,它的局限性由非关系型数据库弥补。 手机端常用的数据库是:SqlLite mysql下载 https://www.mysql.com/ 社区版本(免费) -> 推荐第二种方式 安装 …

基于 Rust 标准库 API 使用 200 行代码实现 Http 1.1 协议简易服务

1. 背景 早在之前学过一波 Rust,但是由于没用武之地,没过多久又荒废了,最近想捡起来下。刚好看见有群里小伙伴说学习 Http 网络协议太难怎么办?其实很多技术都是相通的,只要你理解了技术的本质就可以自己实现它&#…

WWDC24定档6月 | 崩坏3将推Mac系统版 苹果AI启航 visionOS 2.0将系数登场WWDC24

这几天又有一件苹果用户圈大事发生了!WWDC24正式定档,将在6月10日-14日召开,届时一众软件系统,包括iOS18,iPadOS,WatchOS,VisionOS等等,都将迎来更新。另外就是手游崩坏3官宣&#x…

【JavaSE】接口 详解(上)

前言 本篇会讲到Java中接口内容,概念和注意点可能比较多,需要耐心多看几遍,我尽可能的使用经典的例子帮助大家理解~ 欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 前言 接口 语法…

《数据结构学习笔记---第十篇》--- 堆堆排序(超详细图解)

目录 1.堆是什么? 2.问题引入:当我们插入一个新的元素时,那么他还是堆吗。 3.堆的元素插入 4.问题引入:当我们删除一个堆顶元素时,我们又该如何调整呢? 5.堆顶元素删除 6.如何建堆? 6.1向上调整建堆…

栈的应用——用栈实现算数混合运算表达式的计算

1、单目运算符双目运算符 算数运算符分为单目运算符和双目运算符等 单目运算符只需要一个操作数,双目运算符需要两个操作数 双目运算符最常见:常见的算术运算符:*/,比较运算符:<>=等等以下是一些单目运算符:正号 (+): 用于表示正数或给数值一个正号。例如:+5 仍然…