YOLOv8关键点检测数据转换及划分脚本

本文介绍了如何使用Python脚本对图像和标签文件进行组织,创建训练集和验证集,以支持YOLO(YouOnlyLookOnce)等深度学习对象检测模型的训练。函数`create_folders`用于创建所需的文件夹结构,`split_dataset`则根据给定的训练比例划分数据集。

在计算机视觉任务中,关键点检测(如人体姿态估计、面部关键点检测等)需要将标注数据转换为模型训练所需的格式。本文将详细介绍如何将JSON格式的关键点数据集转换为TXT格式,并合理划分训练集、验证集和测试集。

一、JSON转TXT格式详解

1.JSON格式解析

以常见的COCO关键点标注格式为例,JSON文件通常包含以下字段:

images: 图像信息(文件名、尺寸等)
annotations: 标注信息(边界框、关键点坐标及可见性)
categories: 类别定义(如关键点名称、骨架连接关系)

import os
import cv2
import numpy as np
import glob
import json
import tqdm

# 物体类别
class_list = ['person']
# 关键点的顺序
keypoint_list = ['1', '2']

# 新的txt文件保存路径(假设为当前目录下的"output_txts/")
output_folder = "./Yolo_Data/"


def create_output_folder_if_not_exists(folder_path):
    if not os.path.exists(folder_path):
        os.makedirs(folder_path)


def json_to_yolo(img_data, json_data):
    h, w = img_data.shape[:2]

    rectangles = {
   
   }
    # 遍历初始化
    for shape in json_data["shapes"]:
        label = shape["label"]  # pen, head, tail
        points = shape["points"]  # x,y coordinates
        shape_type = shape["shape_type"]

        # 只处理矩形
        if shape_type == "rectangle":
            if label in class_list:
                rect_id = len(rectangles)
                rectangles[rect_id] = {
   
   
                    "label": label,
                    "rect": points[0] + points[1],  # Rectangle [x1, y1, x2, y2]
                    "keypoints_list": []
                }

    # 遍历更新,将点加入对应的目标框中
    for shape in json_data["shapes"]:
        label = shape["label"]
        points = shape["points"]
        # 如果匹配到了对应的keypoint
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

VisionX Lab

你的鼓励将是我更新的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值