Yolov5(用labelimg制作数据集)

本文介绍了如何使用labelimg工具创建Yolov5目标检测数据集,包括建立文件夹、标注图片、转换xml为txt以及训练模型的详细步骤。在训练模型部分,涉及预训练权重的选择、数据配置文件和模型配置文件的修改,以及使用tensorboard监控训练过程。
摘要由CSDN通过智能技术生成

一、制作数据集

1.1建立存放数据集的文件夹

├── VOCdevkit 

│├── VOC2007
││├── JPEGImages  存放需要打标签的图片文件
││├── Annotations  存放标注的标签文件
││├── predefined_classes.txt  定义自己要标注的所有类别

在VOC2007中cmd输入代码打开labelimg:

labelimg JPEGImages predefined_classes.txt

1.2labelimg中点击View,选择以下内容:

        Auto Save mode:切换到下一张图的时候,会自动保存标签。

        Display Labels:会显示标注框和标签

        Advanced Mode:标注的十字架会一直悬浮在窗口。

1.3labelimg常用快捷键如下:

        A:切换到上一张图片

        D:切换到下一张图片

        W:调出标注十字架

        del :删除标注框框

        Ctrl+u:选择标注的图片文件夹

        Ctrl+r:选择标注好的label标签存在的文件夹

1.4将xml转换为txt,划分训练集和验证集

        修改classes类别

        把代码 放在 文件夹VOCdevkit 同一目录下运行

import xml.etree.ElementTree as ET
import pickle
import os
from os import listdir, getcwd
from os.path import join
import random
from shutil import copyfile
 
classes = ["hat", "person"]
#classes=["ball"]
 
TRAIN_RATIO = 80
 
def clear_hidden_files(path):
    dir_list = os.listdir(path)
    for i in dir_list:
        abspath = os.path.join(os.path.abspath(path), i)
        if os.path.isfile(abspath):
            if i.startswith("._"):
                os.remove(abspath)
        else:
            clear_hidden_files(abspath)
 
def convert(size, box):
    dw = 1./size[0]
    dh = 1./size[1]
    x = (box[0] + box[1])/2.0
    y = (box[2] + box[3])/2.0
    w = box[1] - box[0]
    h = box[3] - box[2]
    x = x*dw
    w = w*dw
    y = y*dh
    h = h*dh
    return (x,y,w,h)
 
def convert_annotation(image_id):
    in_file = open('VOCdevkit/VOC2007/Annotations/%s.xml' %image_id)
    out_file = open('VOCdevkit/VOC2007/YOLOLabels/%s.txt' %image_id, 'w')
    tree=ET.parse(in_file)
    root = tree.getroot()
    size = root.find('size')
    w = int(size.find('width').text)
    h = int(size.find('height').text)
 
    for obj in root.iter('object'):
        difficult = obj.find('difficult').text
        cls = obj.find('name').text
        if cls not in classes or int(difficult) == 1:
            continue
        cls_id = classes.index(cls)
        xmlbox = obj.find('bndbox')
        b = (float(xmlbox.find('xmin').text), float(xmlbox.find('xmax').text), float(xmlbox.find('ymin').text), float(xmlbox.find('ymax').text))
        bb = convert((w,h), b)
        out_file.write(str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n')
    in_file.close()
    out_file.close()
 
wd = os.getcwd()
wd = os.getcwd()
data_base_dir = os.path.join(wd, "VOCdevkit/")
if not os.path.isdir(data_base_dir):
    os.mkdir(data_base_dir)
work_sapce_dir = os.path.join(data_base_dir, "VOC2007/")
if not os.path.isdir(work_sapce_dir):
    os.mkdir(work_sapce_dir)
annotation_dir = os.path.join(work_sapce_
你可以使用LabelImg工具来制作YOLOv5数据集。下面是一些步骤供你参考: 1. 安装LabelImg:首先,你需要安装LabelImg工具。你可以在GitHub上找到它的源代码并进行安装。 2. 准备图像:将你的图像文件存在一个文件夹中,确保它们是你想要标记的对象的图像。 3. 打开LabelImg:打开LabelImg工具,并点击"Open Dir"按钮选择你准备好的图像文件夹。 4. 设定标签:点击左上角的"Create RectBox"按钮,然后在图像上拖动鼠标来创建一个矩形框,框出你想要标记的对象。在弹出的对话框中,输入该对象的标签。 5. 进行标记:继续在图像上创建矩形框并标记其他对象。你可以使用快捷键Ctrl + s来保存标记。 6. 导出标签:点击左上角的"Save"按钮,将标签以XML格式保存在一个文件夹中。每个图像都应有相应的XML文件。 7. 转换为YOLOv5格式:使用脚本将XML标签转换为YOLOv5格式。你可以在GitHub上找到一些脚本来完成这个任务。 8. 划分训练集和验证集:根据你的需求,将数据集划分为训练集和验证集。通常,80%的数据用于训练,20%用于验证。 9. 调整图像大小:YOLOv5需要将图像调整为相同的大小。你可以使用图像处理库(如OpenCV)来实现这一步骤。 10. 创建数据集配置文件:创建一个配置文件,指定训练和验证数据集的路径、类别等信息。 11. 开始训练:使用YOLOv5框架进行训练。你可以参考YOLOv5的文档来了解如何进行训练。 这些步骤应该可以帮助你制作YOLOv5数据集。请记住,根据你的具体需求,可能还需要进行一些额外的步骤或调整。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值