目标检测——清洗数据

ops/2025/3/28 7:43:52/

清洗VOC格式数据集代码示例

import os
import xml.etree.ElementTree as ETdef process_annotations(image_folder, annotation_folder):# 遍历标签文件夹中的所有XML文件for xml_file in os.listdir(annotation_folder):if not xml_file.endswith('.xml'):continuexml_path = os.path.join(annotation_folder, xml_file)tree = ET.parse(xml_path)root = tree.getroot()# 标记是否保留该文件keep_file = False# 遍历所有<object>标签for obj in root.findall('object'):name = obj.find('name').textif name == 'person':  # 需修改,保留哪个类别就写哪个类别keep_file = Trueelse:root.remove(obj)  # 移除非Pedestrian的<object># 如果没有Pedestrian类别,删除对应的图片和标签if not keep_file:image_name = root.find('filename').textimage_path = os.path.join(image_folder, image_name)if os.path.exists(image_path):os.remove(image_path)os.remove(xml_path)else:# 保存修改后的XML文件tree.write(xml_path)# 示例用法
image_folder = r'D:\BaiduNetdiskDownload\VOCdevkit\VOCdevkit\VOC2007\JPEGImages'  # 替换为图片文件夹路径
annotation_folder = r'D:\BaiduNetdiskDownload\VOCdevkit\VOCdevkit\VOC2007\Annotations'  # 替换为标签文件夹路径
process_annotations(image_folder, annotation_folder)

 需根据自己的数据集修改name及文件路径!!!

清洗YOLO格式数据集代码示例

import osdef process_labels(image_folder, label_folder):# 遍历标签文件夹中的所有标签文件for label_file in os.listdir(label_folder):if not label_file.endswith('.txt'):continuelabel_path = os.path.join(label_folder, label_file)image_name = os.path.splitext(label_file)[0] + '.png'image_path = os.path.join(image_folder, image_name)# 读取标签文件内容with open(label_path, 'r') as f:lines = f.readlines()# 需修改!!!根据自己想要的类别保留!筛选类别为0的行filtered_lines = [line for line in lines if line.strip().split()[0] == '0']# 如果没有类别为0的行,删除对应的图片和标签if not filtered_lines:if os.path.exists(image_path):os.remove(image_path)os.remove(label_path)else:# 保存修改后的标签文件with open(label_path, 'w') as f:f.writelines(filtered_lines)# 示例用法
label_folder = r'D:\BaiduNetdiskDownload\annotations_trainval2017\txt'  # 替换为图片文件夹路径
image_folder = r'D:\BaiduNetdiskDownload\val2017\val2017'  # 替换为标签文件夹路径
process_labels(image_folder, label_folder)

 需根据自己的数据集修改line及文件路径!!!


http://www.ppmy.cn/ops/167415.html

相关文章

如何基于Gone编写一个Goner对接Apollo配置中心(下)—— 对组件进行单元测试

项目地址&#xff1a;https://github.com/gone-io/gone 原文地址&#xff1a;https://github.com/gone-io/goner/blob/main/docs/test_goner.md 本文介绍的例子&#xff0c;代码在&#xff1a;https://github.com/gone-io/goner/blob/main/apollo 文章目录 引言编写“可测试”的…

Rust + WebAssembly 实现康威生命游戏

1. 设计思路 1.1 选择有限的世界 康威生命游戏的世界是 无限二维网格&#xff0c;但由于 计算机内存有限&#xff0c;我们可以选择三种有限宇宙方案&#xff1a; 动态扩展&#xff1a;仅存储“活跃区域”&#xff0c;按需扩展&#xff08;可能无限增长&#xff09;。固定大小…

Matlab 四分之一车辆被动悬架和模糊pid控制对比

1、内容简介 Matlab 183-四分之一车辆被动悬架和模糊pid控制对比 可以交流、咨询、答疑 2、内容说明 略 3.1 车辆多自由度模型建立 对于车辆动力学&#xff0c;一般都是研究其悬架系统&#xff0c;悬架系统由轮胎&#xff0c;轮胎空气&#xff0c;弹簧&#xff0c;减震器和…

Pytorch使用手册—自定义 C++ 和 CUDA 运算符(专题五十一)

你将学到什么 如何将用 C++/CUDA 编写的自定义运算符与 PyTorch 集成如何使用 torch.library.opcheck 测试自定义运算符先决条件 1. PyTorch 2.4 或更高版本 2. 对 C++ 和 CUDA 编程有基本了解 注意 本教程也适用于 AMD ROCm,无需额外修改。 PyTorch 提供了一个庞大的运算符库…

基于微信小程序的网上商城

4系统概要设计 4.1 概述 本系统基于Web服务模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示&#xff1a; 图4-1 系统工作原理图 4.2 系统结构 本系统架构网站&#xff0c;本系统的…

Linux内核传输层UDP源码分析

一、用户数据包协议&#xff08;UDP&#xff09; 1.UDP数据报头 UDP 提供面向消息的不可靠传输&#xff0c;但没有拥塞控制功能。很多协议都使用 UDP&#xff0c;如用于 IP 网络传输音频和视频的实时传输协议 (Real-time Transport Protocol&#xff0c;RTP)&#xff0c;此类型…

Go语言--安装和环境搭配

一.Go简介 Go 语言&#xff08;又称 Golang&#xff09;是由 Google 开发的一种开源编程语言&#xff0c;于 2009 年正式对外发布。下面从多个方面为你介绍它&#xff1a; 设计目标 Go 语言的设计初衷是为了解决大规模软件开发中的一些问题&#xff0c;比如编译速度慢、并发…

Unity URPShader:实现和PS一样的色相/饱和度调整参数效果

目录 前言&#xff1a; 一、色相&#xff08;Hue&#xff09; 二、饱和度&#xff08;Saturation&#xff09; 三、明度&#xff08;Lightness&#xff09; 四、全代码实现 五、效果对比 前言&#xff1a; PS中的色相/饱和度调节界面可通过快捷键CtrlU快速打开&#xff0…