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

news2025/1/13 2:34:03

使用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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024年第八届人工智能与虚拟现实国际会议(AIVR 2024)即将召开!

2024年第八届人工智能与虚拟现实国际会议(AIVR 2024)将2024年7月19-21日在日本福冈举行。人工智能与虚拟现实的发展对推动科技进步、促进经济发展、提升人类生活质量等具有重要意义。AIVR 2024将携手各专家学者,共同挖掘智能与虚拟的无限可能…

网易RAG问答知识库开源了,Star 6K!!

网易RAG问答知识库开源了,Star 6K!! RAG 问答知识库 QAnything 开源了QAnything 架构设计剖析整个架构的工作流程主要包含三个环节为什么需要两阶段检索?使用的基座大模型相关技术组件 QAnything 本地部署一键部署安装&#xff0c…

【MATLAB源码-第30期】基于matlab的内边界边缘检测算法。

操作环境: MATLAB 2022a 1、算法描述 在计算机视觉领域,图像分割(segmentation)指的是将数字图像细分为多个图像子区域(像素的集合)(也被称作超像素)的过程。图像分割的目的是简化…

从零开始实现一个RPC框架(一)

前言 在上一篇文章中我们先列举了大致的需求,定义了消息协议。这次我们着手搭建基本的RPC框架,首先实现基础的方法调用功能。 功能设计 RPC调用的第一步,就是在服务端定义要对外暴露的方法,在grpc或者是thrift中,这一…

Codeforces CodeTON Round 8(Div.1 + Div.2) A~E

A. Farmer John’s Challenge (模拟) 题意: 构造一个长度为 n n n的数组,将这些数组围成一个圈(顺时针)从任意一个位置打开,有且仅有 k k k个非降序排列的数组。 分析: k 1 k1 k1时,升序输…

WGCAT工单系统使用指南 - 工单有哪几种状态

WGCAT工单管理系统设计的工单生命周期比较简单易懂 1、待接收 2、处理中 3、已拒绝 4、已完成 5、已关闭

鸿蒙OS开发实例:【应用状态变量共享】

平时在开发的过程中,我们会在应用中共享数据,在不同的页面间共享信息。虽然常用的共享信息,也可以通过不同页面中组件间信息共享的方式,但有时使用应用级别的状态管理会让开发工作变得简单。 根据不同的使用场景,ArkT…

阿基米德签证管理系统源码正式发布啦,基于thinkphp8.0+element-plus+uni-app

太棒了!太棒了!太棒了! 阿基米德签证系统的上线将为签证申请流程带来更高效和便利。 为什么选择阿基米德软件? 专注于行业垂直细分领域 / 专业级系统软件开发服务商 一、用户前端支持小程序、H5、PC和APP等主流流量端口 这样可以覆盖更广泛…

【零基础学数据结构】顺序表实现书籍存储

目录 书籍存储的实现规划 ​编辑 前置准备: 书籍结构体: 书籍展示的初始化和文件加载 书籍展示的销毁和文件保存 书籍展示的容量检查 书籍展示的尾插实现 书籍展示的书籍增加 书籍展示的书籍打印 书籍删除展示数据 书籍展示修改数据 在指定位置之前…

学习鸿蒙基础(12)

目录 一、网络json-server配置 (1)然后输入: (2)显示下载成功。但是输入json-server -v的时候。报错。 (3)此时卸载默认的json-server (4)安装和nodejs匹配版本的js…

第十四篇:web后端开发-Springboot

文章目录 一、Web入门1. 什么是Spring2. SpringBootWeb入门3. HTTP 协议3.1 HTTP-概述3.2 HTTP-请求协议3.3 HTTP-响应协议 4. Web服务器4.1 Tomcat---简介4.2 基本使用 5. 请求/响应5.1 请求5.1.1 postman5.1.2 简单参数5.1.3 实体参数5.1.4 数组集合参数5.1.5 日期参数5.1.6 …

蓝桥备赛——循环+二分

题干 AC code n,kmap(int,input().split()) data[] for i in range(n):h,wmap(int,input().split())mid[]mid.append(h)mid.append(w)data.append(mid) front,tail1,100000 def find(edge_len):global kans0for wid,hei in data:ans(wid//edge_len)*(hei//edge_len)if ans>…

java Web 辅助学习管理系统idea开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 java Web 辅助学习管理系统是一套完善的信息管理系统,结合java 开发技术和bootstrap完成本系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 前段主要技术 bootstr…

【ArcGIS微课1000例】0107:ArcGIS加载在线历史影像服务WMTS

文章目录 一、WMTS历史影像介绍二、ArcGIS加载WMTS服务三、Globalmapper加载WMTS服务一、WMTS历史影像介绍 通过访问历史影响WMTS服务,可以将全球范围内历史影像加载进来,如下所示: WMTS服务: https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WM…

四川易点慧电子商务抖音小店品质之选,信赖之源

随着互联网的快速发展,电子商务以其便捷、高效的特点成为越来越多消费者购物的首选。四川易点慧电子商务抖音小店,作为众多电商平台中的佼佼者,以其卓越的品质和优质的服务赢得了广大消费者的信赖。 一、品质保证,消费无忧 四川易…

整合Mybatis(Spring学习笔记十二)

一、导入相关的包 junit 包 Mybatis包 mysql数据库包 Spring相关的包 Aop相关的包 Mybatis-Spring包(现在就来学这个) 提示jdk版本不一致的朋友记得 jdk8只支持spring到5.x 所以如果导入的spring(spring-we…

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

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

45.网络游戏逆向分析与漏洞攻防-角色管理功能通信分析-解码发送数据内容输出到日志

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果 现在的代码都是依据数据包来写的,如果看不懂代码,就说明没看懂数据包…

VUE3和SpringBoot实现ChatGPT页面打字效果SSE流式数据展示

在做这个功能之前,本人也是走了很多弯路(花了好几天才搞好),你能看到本篇博文,那你就是找对地方了。百度上很多都是使用SseEmitter这种方式,这种方式使用的是websocket,使用这种方式就搞复杂了&…

58 vue-cli 以及 webpack 提供的默认的插件, 配置

前言 vue-cli 这边作为驱动 webpack 的一个应用 它需要构造 webpack 所需要的上下文, 以及参数 这里 我们来关注一下 vue-cli 这边为 webpack 构造的参数 的相关处理 webpack 这边上下文的配置, 主要分为了几个部分, Entry, Output, Module, Resolve, Plugin, DevServer, O…