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

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


前言

本文主要介绍如何使用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

  • 38
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星石传说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值