YOLO数据集预处理:删除标签中的某一类

文章讲述了如何使用Python脚本删除或重命名文件标签,从原始的3类标签(0,1,2)转换为仅保留2类(0,2),并分别展示了两个脚本:delete-1.py用于直接删除1类标签,rename-2.py则将2类重命名为1类。
摘要由CSDN通过智能技术生成

 示例:初始数据集已标注了3类文件,但后期只需要检测其中2类,因此需要删除1类标签

以下代码演示了:遍历文件(train/test/val)下的txt标签文件,将原本2类标签(0,1,2)中的’1‘类型标签删除,操作后标签中只有(0,2)类型标签,再此基础上将’2‘类型标签rename为’1‘类型

初始标签文件:

脚本1运行效果:

脚本2运行效果:

脚本1(delete-1.py)

import os

# 定义一个函数,用于处理单个文件
def process_txt_file(file_path):
    with open(file_path, 'r') as file:
        lines = file.readlines()

    # 过滤掉以"1"开头的行
    filtered_lines = [line for line in lines if not line.strip().startswith("1")]

    with open(file_path, 'w') as file:
        file.writelines(filtered_lines)

# 定义一个函数,用于处理整个文件夹
def process_folder(folder_path):
    for root, dirs, files in os.walk(folder_path):
        for file in files:
            if file.endswith(".txt"):
                file_path = os.path.join(root, file)
                process_txt_file(file_path)
                print(f"Processed: {file_path}")

# 指定要处理的文件夹目录
folder_to_process = "your_folder_path_here"  # 替换成你的文件夹路径

# 调用函数来处理文件夹中的txt文件
process_folder(folder_to_process)

 脚本2(rename-2.py)

import os
import re

# 定义一个函数,用于处理单个文件
def process_txt_file(file_path):
    with open(file_path, 'r') as file:
        lines = file.readlines()

    modified_lines = []

    for line in lines:
        if re.match(r'^2', line.strip()):
            # 找到以2开头的行,替换第一个数字为1
            parts = line.strip().split(' ')
            if len(parts) > 1:
                parts[0] = '1'
                modified_line = ' '.join(parts)
                modified_lines.append(modified_line + '\n')
            else:
                # 行中只有一个数字2,不作处理
                modified_lines.append(line)
        else:
            modified_lines.append(line)

    with open(file_path, 'w') as file:
        file.writelines(modified_lines)

# 定义一个函数,用于处理整个文件夹
def process_folder(folder_path):
    for root, dirs, files in os.walk(folder_path):
        for file in files:
            if file.endswith(".txt"):
                file_path = os.path.join(root, file)
                process_txt_file(file_path)
                print(f"Processed: {file_path}")

# 指定要处理的文件夹目录
folder_to_process = "your_folder_path_here"  # 替换成你的文件夹路径

# 调用函数来处理文件夹中的txt文件
process_folder(folder_to_process)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

玩大侠

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值