碎点篇—— labelme json 数据制作 mask 实例分割 数据

本文介绍了如何使用labelme工具进行数据标注,生成json文件,并提供了数据转换的代码,最终用于深度学习中的实例分割任务。

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

返回主目录

 

一. labelme 标记数据

            

 生成的数据如下: 

               

将数据放入到对应文件夹中:

                

              

 

二. 数据转换代码:

   config.py  和 json_2_dataset.py 文件。

#!/usr/bin/env python
# _*_ coding:utf-8 _*_
# ============================================
# @Time     : 2020/04/15 22:53
# @Author   : WanDaoYi
# @FileName : config.py
# ============================================

import os
from easydict import EasyDict as edict


__C = edict()
# Consumers can get config by: from config import cfg
cfg = __C

# common options 公共配置文件
__C.COMMON = edict()

# 相对路径 当前路径
__C.COMMON.RELATIVE_PATH = "./"

# mask 默认背景 类别, 背景为第一个类别
__C.COMMON.DEFAULT_CLASS_INFO = [{"source": "", "id": 0, "name": "BG"}]

__C.COMMON.DATA_SET_PATH = os.path.join(__C.COMMON.RELATIVE_PATH, "dataset")

# 原始图像 文件 路径
__C.COMMON.IMAGE_PATH = os.path.join(__C.COMMON.RELATIVE_PATH, "dataset/images")
# labelme 生成的 json 注释文件 路径
__C.COMMON.JSON_PATH = os.path.join(__C.COMMON.RELATIVE_PATH, "dataset/ann_json")

# 生成的 info.yaml 文件 路径
__C.COMMON.INFO_YAML_PATH = os.path.join(__C.COMMON.RELATIVE_PATH, "dataset/info_yaml")
# 生成的 label.png 图像 文件 路径
__C.COMMON.LABEL_IMAGE_PATH = os.path.join(__C.COMMON.RELATIVE_PATH, "dataset/label_png")
# 生成的 label_name.txt 文件 路径
__C.COMMON.LABEL_NAME_PATH = os.path.join(__C.COMMON.RELATIVE_PATH, "dataset/label_name")
# 生成的 label_viz.png 图像 文件 路径
__C.COMMON.LABEL_VIZ_IMAGE_PATH = os.path.join(__C.COMMON.RELATIVE_PATH, "dataset/label_viz_png")

# 是否删除已有文件,True 为删除,False 为不删除
__C.COMMON.FILE_EXISTS_FLAG = True

# 数据划分比例
__C.COMMON.TEST_PERCENT = 0.7
__C.COMMON.VAL_PERCENT = 0.2
__C.COMMON.TEST_PERCENT = 0.1

# 文件后缀名
__C.COMMON.JSON_SUFFIX = ".json"
__C.COMMON.PNG_SUFFIX = ".png"
__C.COMMON.JPG_SUFFIX = ".jpg"
__C.COMMON.YAML_SUFFIX = ".yaml"
__C.COMMON.TXT_SUFFIX = ".txt"


# 划分数据的保存路径
__C.COMMON.TRAIN_DATA_PATH = os.path.join(__C.COMMON.RELATIVE_PATH, "infos/train_data.txt")
__C.COMMON.VAL_DATA_PATH = os.path.join(__C.COMMON.RELATIVE_PATH, "infos/val_data.txt")
__C.COMMON.TEST_DATA_PATH = os.path.join(__C.COMMON.RELATIVE_PATH, "infos/test_data.txt")



#!/usr/bin/env python
# _*_ coding:utf-8 _*_
# ============================================
# @Time     : 2020/04/25 14:40
# @Author   : WanDaoYi
# @FileName : json_2_dataset.py
# ============================================

import math
import json
import os
import io
import random
import shutil
import base64
from datetime import datetime
import matplotlib.pyplot as plt
from PIL import Image
from PIL import ImageDraw
import numpy as np
import yaml

from config import cfg


class Json2Dataset(object):

    def __init__(self):
        # 输入文件路径
        self.json_file = cfg.COMMON.JSON_PATH
        self.image_file = cfg.COMMON
### YOLO 实例分割数据集格式要求 YOLO 进行实例分割时,其数据集通常需要满足特定的格式需求。以下是关于 YOLO 实例分割数据集的主要格式说明: #### 1. 数据标注工具的选择 为了实现高效的标注工作,可以选用 Labelme 工具来完成图像中的目标区域标记[^2]。通过该工具,用户能够轻松绘制多边形边界框并为其分配类别名称。 #### 2. JSON 文件生成 当使用 Labelme 完成标注后,会自动生成一系列 `.json` 文件,这些文件包含了每张图片对应的标注信息。具体而言,JSON 文件记录了以下内容: - 图像基本信息(如宽度、高度等) - 多边形顶坐标集合 - 对应的目标类别标签 #### 3. YAML 配置文件设置 在实际训练之前,还需要创建两个重要的配置文件——数据集配置文件和模型结构配置文件。前者用于描述数据路径及相关参数;后者则定义网络架构细节以及超参调整策略[^1]。 例如,在 `point-offer-seg.yaml` 中可能指定如下字段: ```yaml train: ./data/train/images/ val: ./data/valid/images/ nc: 80 # number of classes names: ['person', 'bicycle', ... ] # class names array ``` 而针对 `yolo11-seg.yaml` ,它更多涉及 backbone 设计、head 层构建等方面的内容。 #### 4. Mask 编码方式转换 由于原始 JSON 输出的是逐形式表示mask轮廓线段序列,因此需进一步处理转化为像素级掩膜矩阵或者RLE编码字符串以便于后续计算操作利用。此过程可通过脚本批量执行自动化流程简化繁琐步骤。 最终得到适配版本的数据组织形态应该遵循官方文档所推荐的标准布局目录树样式呈现出来供算法调用学习之用。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值