labelme标注自定义数据集COCO类型

本文介绍了如何使用labelme创建COCO格式的数据集,包括文件组织、标注、txt文件生成和json文件转换等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用labelme制作COCO类型的自定义数据集

一、COCO类型数据集

本文重点介绍COCO类自定义数据集制作,关于COCO数据格式参考以下链接:COCO数据集格式

二、自定义数据集制作步骤

(1)数据集文件夹说明

最终需要的文件夹目录如下图所示,其中data位于mmdetection项目根目录下。

image-20240205150004089

(2)使用labelme标注工具进行标注

具体使用方法参考:LabelMe使用_labelme中所有的create的作用解释-优快云博客

(3)生成需要训练,验证,测试的图片txt文件

使用create_txt.py生成train2019.txt,val2019.txt,test2019.txt,分别对应需要训练,验证,测试的图片名(仅包括名,无扩展名.jpg)如:10001.jpg即保存为10001。create_txt.py文件代码 以及txt文件内容展示如下

# !/usr/bin/python
# -*- coding: utf-8 -*-
import os
import random

trainval_percent = 0.8  # 验证集+训练集占总比例多少
train_percent = 0.7  # 训练数据集占验证集+训练集比例多少
jsonfilepath = 'labels/total'
txtsavepath = './'
total_xml = os.listdir(jsonfilepath)

num = len(total_xml)
list = range(num)
tv = int(num * trainval_percent)
tr = int(tv * train_percent)
trainval = random.sample(list, tv)
train = random.sample(trainval, tr)

ftrainval = open('./trainval.txt', 'w')
ftest = open('./test.txt', 'w')
ftrain = open('./train.txt', 'w')
fval = open('./val.txt', 'w')

for i in list:
    name = total_xml[i][:-5] + '\n'
    if i in trainval:
        ftrainval.write(name)
        if i in train:
            ftrain.write(name)
        else:
            fval.write(name)
    else:
        ftest.write(name)

ftrainval.close()
ftrain.close()
fval.close()
ftest.close()

image-20240205150820218

(4)通过classify.py程序将json文件与图片分类

此步骤是为了 将所有标注文件与图片文件按照 上一步三个txt文件里的进行分类对应

此步骤需要创建文件夹如下图所示。注意!!!images

import shutil
import cv2 as cv

sets=['train',  'val', 'test']

for image_set in sets:
    #分别读取三个txt文件中内容并拼接出 所有图片名
    image_ids = open('./%s.txt'%(image_set)).read().strip().split()
    #将每一类的图片和对应的json文件存入对应的文件夹
    for image_id in image_ids:
        img = cv.imread('images/total2019/%s.jpg' % (image_id))
        json='labelme/total/%s.json'% (image_id)
        cv.imwrite(
### 使用 LabelMe 创建 COCO 格式数据集 #### 准备工作 为了将通过 LabelMe 工具标注的数据转换成 COCO 格式的数据集,需先准备好已标注好的图像及其对应的 JSON 文件。这些文件通常位于同一目录下[^1]。 #### 安装依赖库 确保安装了必要的 Python 库来处理这一过程。可以使用 pip 来安装 `labelme` 和其他可能需要的工具包: ```bash pip install labelme ``` 如果打算按照特定方式定制化转换流程,则还需要额外安装一些辅助脚本或模块,比如用于执行更复杂操作的第三方扩展功能[^2]。 #### 转换命令行指令 对于简单的场景可以直接利用官方提供的命令行接口完成转换任务。假设有一个名为 `path/to/labelme/dir` 的文件夹包含了所有的 LabelMe 注解文件,在终端输入如下命令即可将其转为 COCO 格式: ```bash labelme2coco path/to/labelme/dir output.json ``` 这条命令会读取指定路径下的所有 `.json` 文件并将它们汇总至单个 JSON 文件中作为最终输出的结果文件 `output.json`。 #### 自定义参数设置 当面对更加复杂的项目需求时——例如希望支持实例分割的任务类型或是有特殊的类别标签管理要求——可以通过编写自定义脚本来实现更为精细的操作。下面是一个例子,展示了如何调用带有更多选项的 python 命令来进行此类高级配置: ```python import argparse from pathlib import Path parser = argparse.ArgumentParser() parser.add_argument('input_dir', type=str, help='Input directory containing labeled images') parser.add_argument('--labels', required=True, dest='labels_file', metavar='FILE', help="Path to a file that contains class names per line.") args = parser.parse_args() # 这里省略具体逻辑... print(f"Converting {args.input_dir} with labels from {args.labels_file}") ``` 此段代码片段来自一个实际应用案例,它允许用户传入两个主要参数:一个是包含被标记图片所在的文件夹位置;另一个是指向保存分类名称列表文本的位置。这有助于构建适用于不同应用场景的具体解决方案[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值