YOLOv5系列 1、制作自己的数据集

YOLOv5系列 1、制作自己的数据集
YOLOv5系列 2、使用yolov5识别自己的数据



前言

本文所使用的Yolov5为6.1版本,所用为GPU版(亲测CPU也一样能跑,只是速度会慢很多),使用的环境是torch1.7.1+cuda10.1。


一、下载Labelme

Labelme的安装很简单,如果想直接安装就直接在命令行中:

pip install labelme

如果是想把labelme安装在Anaconda的虚拟环境虚拟环境中,则需要先进入虚拟环境中,再安装:

activate 自己的想安装的环境名称
pip install labelme

如果想用Anaconda单独给Labelme装个虚拟环境则:

conda create -n labelme python=3.6
activate labelme
pip install labelme

二、Labelme使用步骤

1.打开Labelme

根据第一步中安装的位置,使用命令行在相应的位置中直接输入labelme,就可打开:

labelme

在这里插入图片描述
因为我是直接安装的,所以没有进虚拟环境。打开后就会自动跳出下面这个界面:
在这里插入图片描述
上面标注的是我们标记主要使用的功能,先使用Open dir打开我们图像数据所在文件夹:
在这里插入图片描述

2.Labelme标记数据集

这边是从kaggle上下载的一个检测口罩的数据集,然后点击Create Polygons,因为是使用Yolov5做的,所以在图像上点击右键,选择create Rectangle,再将口罩框起来。
在这里插入图片描述
然后点击ok,继续标记下一个口罩,全部标记好后,点击下一张或者点击保存:
在这里插入图片描述

3.保存为json格式

在这里插入图片描述
直接进行保存为.json格式即可(这个保存的名字名字是和照片的名字一样的),依照这样一直标记完。

三、json格式转换为txt格式

因为yolov5需要的是照片和txt格式,所以我们得到的json文件不能直接使用,需要先将json转换为txt格式,下面的代码就是将json转为txt

import json
import os

name2id = {'Mask': 0,}  #具体自己数据集类别
               
def convert(img_size, box):
    dw = 1./(img_size[0])
    dh = 1./(img_size[1])
    x = (box[0] + box[2])/2.0 - 1
    y = (box[1] + box[3])/2.0 - 1
    w = box[2] - box[0]
    h = box[3] - box[1]
    x = x*dw
    w = w*dw
    y = y*dh
    h = h*dh
    return (x,y,w,h)
 
def decode_json(json_floder_path,json_name):
    #转换好txt的标签路径
    txt_name = 'E:\\BaiduNetdiskDownload\\PyTorch-YOLOv3\\data\\custom\\labels\\' + json_name[0:-5] + '.txt'    
    txt_file = open(txt_name, 'w')
 
    json_path = os.path.join(json_floder_path, json_name)
    data = json.load(open(json_path, 'r', encoding='gb2312'))
 
    img_w = data['imageWidth']
    img_h = data['imageHeight']
 
    for i in data['shapes']:
        
        label_name = i['label']
        if (i['shape_type'] == 'rectangle'):
 
            x1 = int(i['points'][0][0])
            y1 = int(i['points'][0][1])
            x2 = int(i['points'][1][0])
            y2 = int(i['points'][1][1])
 
            bb = (x1,y1,x2,y2)
            bbox = convert((img_w,img_h),bb)
            txt_file.write(str(name2id[label_name]) + " " + " ".join([str(a) for a in bbox]) + '\n')
    
if __name__ == "__main__":
    #原始json标签路径
    json_floder_path = 'E:\\BaiduNetdiskDownload\\PyTorch-YOLOv3\\data\\custom\\json\\'
    json_names = os.listdir(json_floder_path)
    for json_name in json_names:
        decode_json(json_floder_path,json_name)

这边我们就已经得到了yolov5所需要的txt格式的标签文件。


四、建立自己的Yolov5数据集

我这边建立的数据集文件夹的位置如下:

--MaskDataSet
	--train
		--images
		--labels
	--test
		--images
		--labels
	--valid
		--images
		--labels
	--data.yaml
--yolov5源码位置

其中images放入图片,labels则放入相应的txt标签文件;data.yaml文件内容如下所示:

train: ../MaskDataSet/train/images
test: ../MaskDataSet/test/images
val: ../MaskDataSet/valid/images	
#如果按照上述方式建立文件夹,则上面train、test和val地址可以不变

nc: 1   							#标签类别个数
names: ['Mask',]  					#标签名
#上面nc和names可以根据自己的数据集进行修改

最后,数据集建立成功!下一步,可以开始训练我们标记的数据集啦~

  • 22
    点赞
  • 246
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 21
    评论
要创建自己的数据集,可以按照以下步骤进行操作: 1. 下载并安装Labelme工具,该工具可以用于标记数据集。\[1\] 2. 打开Labelme并使用该工具标记你的数据集。你可以在标记过程中选择需要标记的目标,并为每个目标添加标签。 3. 将标记后的数据集保存为json格式文件。 4. 将json格式文件转换为txt格式文件,以便与Yolov5模型进行兼容。 5. 修改Yolov5模型的配置文件。进入yolov5源码中的models文件夹,找到yolov5s.yaml文件,并进行相应的修改。你需要修改检测目标的类型个数,而anchors会由Yolov5自动生成。\[2\] 6. 建立自己的Yolov5数据集文件夹结构。你可以按照以下结构组织你的数据集文件夹: - MaskDataSet - train - images - labels - test - images - labels - valid - images - labels - data.yaml 7. 将标记后的图片和对应的标签文件分别放入相应的文件夹中。 8. 创建一个data.yaml文件,其中包含数据集的相关信息,如类别名称和路径等。\[3\] 9. 完成以上步骤后,你就可以使用自己创建的数据集来训练Yolov5模型了。 希望以上信息对你有所帮助! #### 引用[.reference_title] - *1* *3* [YOLOv5系列 1、制作自己的数据集](https://blog.csdn.net/fjlaym/article/details/123992962)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [YoloV5建立自己的数据集并进行训练](https://blog.csdn.net/weixin_44455827/article/details/123294165)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

冯璆鸣

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

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

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

打赏作者

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

抵扣说明:

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

余额充值