制作 Pascal VOC 数据集:清洗无效数据
Pascal VOC 数据集是由 PASCAL 组织发布的,包含多个物体类别的图像及其对应的标注。每个图像的标注信息通常以 XML 格式保存,其中包含物体的边界框、类别等信息。清洗无效数据是确保数据集质量的重要一步。通过上述方法,我们可以有效地找出并处理 Pascal VOC 数据集中的无效数据,从而为后续的模型训练打下良好的基础。如果你在制作数据集或清洗数据的过程中有任何问题,欢迎留言讨论!
在计算机视觉的应用中,数据集的质量至关重要。Pascal VOC(Visual Object Classes)数据集是一个经典的数据集格式,广泛用于目标检测和图像分割任务。本文将介绍如何制作一个 Pascal VOC 数据集,并清洗数据集中的无效数据,例如缺少标注文件的图像或引用不存在图像的标注文件。
1. Pascal VOC 数据集简介
Pascal VOC 数据集是由 PASCAL 组织发布的,包含多个物体类别的图像及其对应的标注。每个图像的标注信息通常以 XML 格式保存,其中包含物体的边界框、类别等信息。
2. 清洗无效数据
在制作数据集的过程中,我们需要确保每个图像都有对应的标注,并且所有标注文件中的图像都是存在的。以下是一个 Python 脚本,用于清洗无效数据:
import os
import shutil
# 示例:指定两个文件夹路径
folder_images = "./helmet_data/images"
folder_annotations = "./helmet_data/annotations"
# 获取文件名(包括后缀)
yes_list = os.listdir(folder_annotations)
yes_list_1 = set(os.path.splitext(i)[0] for i in yes_list) # annotations 文件名集合
not_list = os.listdir(folder_images)
not_list_1 = set(os.path.splitext(i)[0] for i in not_list) # images 文件名集合
# 找到不重叠的文件名
not_common = not_list_1 - yes_list_1 # images 中不在 annotations 中的文件名
not_common_1 = yes_list_1 - not_list_1 # annotations 中不在 images 中的文件名
# 合并两个结果
unique_files = not_common.union(not_common_1)
# 打印不重叠的文件名
print("两个文件夹中不重叠的文件:", list(unique_files))
# 创建新文件夹
new_folder = "unique_files"
os.makedirs(new_folder, exist_ok=True)
# 移动文件到新文件夹
for filename in unique_files:
# 查找在两个文件夹中原始的带后缀的文件名
source_filename = next((f for f in not_list if os.path.splitext(f)[0] == filename), None)
if not source_filename: # 如果在 images 中找不到,则在 annotations 中查找
source_filename = next((f for f in yes_list if os.path.splitext(f)[0] == filename), None)
if source_filename:
source_path = os.path.join(folder_images if source_filename in not_list else folder_annotations, source_filename)
destination_path = os.path.join(new_folder, source_filename)
# 移动文件
if os.path.exists(source_path):
shutil.move(source_path, destination_path)
print(f"Moved: {source_filename} to {new_folder}")
else:
print(f"File not found: {source_filename}")
print("Files moved successfully!")
3. 代码解析
文件夹路径:指定包含图像和标注文件的文件夹路径。
获取文件名:使用 os.listdir() 获取文件夹中的所有文件名,并生成文件名集合。
查找无效数据:
找出存在图像但缺少对应标注的情况。
找出存在标注文件但缺少对应图像的情况。
移动无效数据:创建一个新的文件夹用于存放无效数据,并将无效的图像和标注文件移动到该文件夹中。
4. 总结
清洗无效数据是确保数据集质量的重要一步。通过上述方法,我们可以有效地找出并处理 Pascal VOC 数据集中的无效数据,从而为后续的模型训练打下良好的基础。如果你在制作数据集或清洗数据的过程中有任何问题,欢迎留言讨论!
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)