[yolov5]LabelImg标注数据转yolov5训练格式

极简要点:

yolov5需要的数据格式为:

{类别class} {目标区域中心x点} {目标区域中心y点} {目标区域宽度w} {目标区域高度h}

例: 2 0.4169034090909091 0.73125 0.3366477272727273 0.5166666666666666

LabelImg标注出的数据为目标区域左上与右下的xy坐标,需要转一道才是yolov5需要的数据格式。

文件结构格式:

datasets
├── image
│   ├── train
│   └── val
└── label
     ├── train
     └── val

文件夹image内的train内装训练图片,文件夹label内的train内装对应的标注。

文件名一一对应,例如在image/train内放了一张名为0001.jpg的图片,那就需要在label/train内放一份0001.txt,一份txt对应一张图片。

配置yolov5:

1)在yolov5/data/添加{自定义名字}.yaml,文件内容产考同目录下的coco128.yaml。

单纯训练的话download、test、val不需要

2)修改yolov5/train.py文件:

parser.add_argument部分的--data参数,修改为上面添加的{自定义名字}.yaml

--weights、--epochs、--batch-size、--img看自己的需求也可以修改

LabelImg标注数据转yolov5代码:

改parser.add_argument中的xml_path与txt_path相关即可

如果不想改,想直接用,文件结构如下放置运行python3 export.py即可

.
├── data(内放xml)
├── labels(输出txt)
└── export.py(就下面的代码)

# -*- coding: utf-8 -*-
import xml.etree.ElementTree as ET
import os
from os import getcwd
import random
import argparse

classes = ["head", "helmet", "clothes"]

def convert(size, box):
    dw = 1. / (size[0])
    dh = 1. / (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
    y = y * dh
    w = w * dw
    h = h * dh
    return x, y, w, h

def convert_annotation(in_path,out_path):
    in_file = open('%s.xml'%(in_path),encoding='UTF-8')
    out_file = open('%s.txt'%(out_path),'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'):
        cls = obj.find('name').text
        if cls not in classes:
            continue
        cls_id = classes.index(cls)
        xmlbox = obj.find('bndbox')
        xmin = float(xmlbox.find('xmin').text)
        ymin = float(xmlbox.find('ymin').text)
        xmax = float(xmlbox.find('xmax').text)
        ymax = float(xmlbox.find('ymax').text)
        if xmin<0:
            xmin=0
        if ymin<0:
            ymin=0
        if xmax>w:
            xmax=w
        if ymax>h:
            ymax=h
        out = convert((w,h),(xmin,ymin,xmax,ymax))
        out_file.write(str(cls_id) + " " + " ".join([str(a) for a in out]) + '\n')


parser = argparse.ArgumentParser()
parser.add_argument('--xml_path', default='data', type=str, help='input xml label path')
parser.add_argument('--txt_path', default='labels', type=str, help='output txt label path')

xml_path = parser.parse_args().xml_path
txt_path = parser.parse_args().txt_path
xml_name = os.listdir(xml_path)
if not os.path.exists(txt_path):
    os.makedirs(txt_path)

num=len(xml_name)
list_index = range(num)
for i in list_index:
    convert_annotation(xml_path+'/'+xml_name[i][:-4],txt_path+'/'+xml_name[i][:-4])

(当时写代码时有参考他人代码,想起来写博客时一时间找不到了,如有侵权,私聊加索引)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用labelimg标注yolov5需要按照以下步骤进行: 1. 下载并安装labelimg软件,可以在GitHub上找到该软件的源代码并进行下载。 2. 打开labelimg软件,选择要标注的图片,并在左侧的工具栏中选择“Create RectBox”工具。 3. 在图片中选择要标注的物体,并用鼠标拖动出一个矩形框将其框起来。 4. 在矩形框下方的标签栏中选择该物体的标签,并在右侧的属性栏中填写该物体的其他信息。 5. 点击“Save”按钮保存标注结果,并将标注结果保存为yolov5所需的格式(如txt或xml格式)。 6. 将标注结果与原始图片一起放入yolov5训练集中,并使用yolov5进行训练和测试。 需要注意的是,在标注过程中要尽量减少误差,确保标注结果的准确性和可靠性。同时,要根据具体的应用场景和需求选择合适的标签和属性,以便更好地训练和测试yolov5模型。 ### 回答2: labelimg是一种标注工具,用于标注图像中的特定物体。其中,yolov5是一种基于深度学习的目标检测模型,能够在复杂背景下准确定位并识别物体。使用labelimg标注yolov5,需要以下步骤: 1. 下载labelimg工具并安装。该工具支持多种操作系统环境,包括Windows、Linux和MacOS。 2. 准备训练数据集,包括正样本(包含目标物体)和负样本(没有目标物体)。数据集需要按照一定规则组织,如每个图片应该有一个对应的XML文件,包含目标物体的位置和类别信息。 3. 使用labelimg打开数据集中的图片,通过标注工具手动画框选择目标物体,并设置所属的类别。同时,在右侧的XML编辑框中输入标注信息,可设置目标物体的坐标、宽度、高度和类别等。 4. 标注完一张图片后,保存标注信息并重复标注其他图片。需要注意的是,labelimg提供快捷键和自动保存功能,能够提高标注效率和准确性。 5. 标注完整个数据集后,将生成的XML文件导出到同一个文件夹中,并按照一定格式命名。在训练前,需要将数据集和标签文件统一换为yolov5所需的格式,即txt文本格式,方便后续导入模型进行训练。 总的来说,使用labelimg标注yolov5需要一定的专业知识和技术基础,能够快速标注图片并生成训练所需的数据集。同时需要注意标注过程中的精度和准确性,以提高模型的检测效果和准确度。 ### 回答3: yolov5是一种目标检测算法,可以对图片或视频中的目标进行快速准确的检测和识别。要训练yolov5模型,就需要一个标注好的数据集。标注工具可以让我们快速准确地对图片进行目标标注,不仅可以加快训练速度,也可以避免模型产生错误。 LabelImg是一种开源的标注工具,支持多种文件格式,包括PascalVOC、YOLO和ImageNet等。它可以在Windows、Linux和Mac系统中运行,功能强大、易于使用。以下是使用LabelImg进行yolov5目标检测模型训练的步骤: 第一步:安装LabelImg工具。可以在官网下载,也可以在Github上直接clone。 第二步:准备数据集。先把需要检测的图片放在同一个文件夹下,再根据需要识别的目标,新建一份label文件,以xml格式保存在同一文件夹下。标注时需要把图片批量导入到标注工具中,一张一张进行标注。 第三步:打开LabelImg工具,在界面上方选择Open Dir…,在弹出的文件选择框中选中需要标注的图片所在目录,即可打开目标图片。 第四步:选择创建lable的格式,此处需要开启YOLO格式,选择YOLO->yolov5。 第五步:添加物体。选择Create RectBox,然后使用鼠标框选出需要标注的物体,接着弹出一个窗口,输入所选区域对应的物体类别、置信度等信息,最后保存标注信息。 第六步:在保存当前标注xml的同时,在同一文件夹下生成对应的txt文件。 第七步:进行批量标注。在界面上方选择 Next Image,即可切换至下一张需要标注的图片,重复以上操作即可。 第八步:批量换。多张图片标注完成后,需要把xml与图片一起存储在同一个目录下,使用工具集中的换程序进行批量换即可,换后得到的标注文件可以直接用于yolov5的训练过程。 以上就是使用LabelImg进行yolov5目标检测模型训练的步骤,需要注意的是标注时需要保持精准、快速的节奏,确保标注数据质量和多样性,从而提高训练模型的准确性和鲁棒性。同时,需要充分利用yolov5模型的优势,调整模型的超参数和训练条件,进一步提高模型的性能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值