识别并处理数据集中不配对图像和标签文件

2024-01-08 06:19:02

在这里插入图片描述

脚本如何工作

设置目录:
该脚本首先定义包含图像和文本文件的源目录。然后,您指定将移动未配对的文件的目标目录。这种设置就像在开始项目之前组织工作空间一样,确保一切都在正确的位置。

创建目标目录:
如果未配对文件的目标目录不存在,脚本将创建它。这类似于为不适合现有文件系统的文档设置一个新文件夹。

识别未配对的文件:
该脚本列出了源目录中的所有文件,然后将它们分为图像文件 ( .jpg) 和文本文件 ( .txt)。它比较这些列表以查找任何未配对的文件 - 没有相应文本文件的图像,反之亦然。此过程类似于对一副纸牌进行排序以查找丢失或不匹配的对。

移动未配对的文件:
一旦识别,脚本会将这些未配对的文件移动到目标目录。此步骤就像从报告中删除不完整或不相关的页面,以确保仅保留完整且相关的信息。

输出结果:
最后,脚本提供了未配对的图像和文本文件的列表。此反馈对于检查和了解哪些文件未配对且需要注意至关重要。

import os
import shutil

# 设置源文件夹的路径
source_directory = r'D:\Desktop\3.v2i.yolov5pytorch\train\images'  # 替换为你的源文件夹路径

# 生成目标文件夹的路径,保持和源文件夹相同的结构
target_directory = os.path.join(os.path.dirname(source_directory), '不成对')

# 如果目标文件夹不存在,创建它
if not os.path.exists(target_directory):
    os.makedirs(target_directory)

# 初始化列表,用于跟踪不成对的文件
unpaired_images = []
unpaired_texts = []

# 获取源文件夹中的所有文件
files_in_directory = os.listdir(source_directory)

# 识别所有的图片文件和对应的文本文件
image_files = set(file for file in files_in_directory if file.endswith('.jpg'))
text_files = set(file for file in files_in_directory if file.endswith('.txt'))

# 寻找不成对的图片文件
for image_file in image_files:
    text_file = image_file.replace('.jpg', '.txt')
    if text_file not in text_files:
        unpaired_images.append(image_file)

# 寻找不成对的文本文件
for text_file in text_files:
    image_file = text_file.replace('.txt', '.jpg')
    if image_file not in image_files:
        unpaired_texts.append(text_file)

# 将不成对的文件移动到目标文件夹
for file in unpaired_images + unpaired_texts:
    # 生成目标文件夹中的子目录路径,用于存储不成对文件
    relative_path = os.path.relpath(os.path.join(source_directory, file), source_directory)
    target_subdirectory = os.path.join(target_directory, os.path.dirname(relative_path))
    os.makedirs(target_subdirectory, exist_ok=True)

    # 移动文件到目标子目录
    shutil.move(os.path.join(source_directory, file), os.path.join(target_subdirectory, file))

# 输出不成对的图片和文本文件列表
print('不成对的图片文件:', unpaired_images)
print('不成对的文本文件:', unpaired_texts)

进一步探索:

为了加深您的理解,请考虑以下事项:

  • 该脚本如何适应不同的文件类型或更复杂的文件结构?
  • 机器学习数据集中存在不配对的文件会产生什么影响?它如何影响模型训练?
  • 如何将该脚本集成到机器学习项目的更大的自动化数据预处理管道中?

对于任何从事与图像相关的机器学习项目的人来说,该脚本都是一个非常宝贵的工具。通过自动化识别和管理未配对文件的过程,不仅可以节省时间,还有助于保持数据集的完整性和一致性,确保您的机器学习模型接受完整且准确的数据训练。
1. 使用 Python进行数据集分割:简洁完美的数据集划分脚本
2. 深度学习中的自动化标签转换:对数据集所有标签做映射转换
3. 识别并处理数据集中不配对图像和标签文件

文章来源:https://blog.csdn.net/lythinking/article/details/135372683
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。