YOLO标注文件清洗案例代码-学习篇

2024-09-06 13:04

本文主要是介绍YOLO标注文件清洗案例代码-学习篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景简介

YOLO标注文件清洗
训练一个人工智能算法需要一个庞大的数据集,这个数据集需要进行人为标注
但由于出现意外,造成部分数据丢失,使得标注文件和图片文件的文件名前缀不能一一对应
需要写一段代码将可以文件名前缀一一对应的文件保存到一个新的文件夹中,已完成数据的清洗

问题背景

待清洗的文件目录,images中是图片,labels中是txt标注文件,标注后images和labels中的文件名时相同的,现在数据丢失后,部分标注文件images和labels对不上了,
需要筛选出images和labels文件中img和txt文件名字相同的文件,
在这里插入图片描述
比对完导出的文件目录
在这里插入图片描述

代码文件如下:

#抽取的公共方法,拼接返回某个文件夹下所有的文件的路径集合
def get_info(root_from):file_full_path_list = []for root, dirs, files in os.walk(root_from):for file in files:file_full_path = os.path.join(root, file)file_full_path1 = file_full_path.split('\\')file_short_path  = os.path.join(file_full_path1[-2],file_full_path1[-1])#以\\分隔路径后,获取倒数第一第二个元素 拼接起来file_i_name = file_short_path.split(".")[0] #以.分隔字符串,去掉后缀file_full_path_list.append(file_i_name)return file_full_path_listroot_path_from = r'./fire_yolo_format' #待清洗的目录
root_path_save = r'./clean_data'  #清洗后保存的目录
#拼接出待清洗的文件夹下的子文件夹
root_images_from = os.path.join(root_path_from,'images')
root_labels_from = os.path.join(root_path_from,'labels')
#拼接出清洗后存储的子文件夹
root_images_save = os.path.join(root_path_save,'images')
root_labels_save = os.path.join(root_path_save,'labels')print(root_images_from)
print(root_labels_from)
print(root_images_save)
print(root_labels_save)#循环遍历创建清洗后文件存储文件夹
"""dir_list_1 = ['images','labels']
dir_name_list = ['train','test','val']
for dir1 in dir_list_1:for dir2 in dir_name_list:dir_full_path = os.path.join(root_path_save,dir1,dir2)if not os.path.exists(dir_full_path):os.makedirs(dir_full_path)"""#遍历待清洗的图片文件夹下的文件
image_file_full_path_list = get_info(root_images_from)
#print(image_file_full_path_list)
labels_file_full_path_list = get_info(root_labels_from)
print(labels_file_full_path_list)
#labels下的txt和images下的图片名称比较,只比较\\val\\small (28).txt 后面的这部分
#使用集合做交集比较
image_set = set(image_file_full_path_list)
label_set = set(labels_file_full_path_list)
intersection_set = image_set & label_set
print(len(image_set))
print(len(label_set))
print(len(intersection_set))print(intersection_set)#这些是两个集合里都有的,是能一一对上的。
#把这些路径拼接成完整路径再复制到clean_data文件夹
for intersection_i in intersection_set:#file_yolo_format中的能一一对上的文件intersection_i_image_full_path_from = os.path.join(root_images_from,intersection_i) + '.jpg'intersection_i_label_full_path_from = os.path.join(root_labels_from,intersection_i) + '.txt'#要保存到的clean_data的文件完整路径intersection_i_image_full_path_save = os.path.join(root_images_save, intersection_i) + '.jpg'intersection_i_label_full_path_save = os.path.join(root_labels_save, intersection_i) + '.txt'shutil.copy(intersection_i_image_full_path_from, intersection_i_image_full_path_save)shutil.copy(intersection_i_label_full_path_from, intersection_i_label_full_path_save)

这篇关于YOLO标注文件清洗案例代码-学习篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1142084

相关文章

Java中Map.Entry()含义及方法使用代码

《Java中Map.Entry()含义及方法使用代码》:本文主要介绍Java中Map.Entry()含义及方法使用的相关资料,Map.Entry是Java中Map的静态内部接口,用于表示键值对,其... 目录前言 Map.Entry作用核心方法常见使用场景1. 遍历 Map 的所有键值对2. 直接修改 Ma

六个案例搞懂mysql间隙锁

《六个案例搞懂mysql间隙锁》MySQL中的间隙是指索引中两个索引键之间的空间,间隙锁用于防止范围查询期间的幻读,本文主要介绍了六个案例搞懂mysql间隙锁,具有一定的参考价值,感兴趣的可以了解一下... 目录概念解释间隙锁详解间隙锁触发条件间隙锁加锁规则案例演示案例一:唯一索引等值锁定存在的数据案例二:

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

深入解析 Java Future 类及代码示例

《深入解析JavaFuture类及代码示例》JavaFuture是java.util.concurrent包中用于表示异步计算结果的核心接口,下面给大家介绍JavaFuture类及实例代码,感兴... 目录一、Future 类概述二、核心工作机制代码示例执行流程2. 状态机模型3. 核心方法解析行为总结:三

python获取cmd环境变量值的实现代码

《python获取cmd环境变量值的实现代码》:本文主要介绍在Python中获取命令行(cmd)环境变量的值,可以使用标准库中的os模块,需要的朋友可以参考下... 前言全局说明在执行py过程中,总要使用到系统环境变量一、说明1.1 环境:Windows 11 家庭版 24H2 26100.4061

Python数据分析与可视化的全面指南(从数据清洗到图表呈现)

《Python数据分析与可视化的全面指南(从数据清洗到图表呈现)》Python是数据分析与可视化领域中最受欢迎的编程语言之一,凭借其丰富的库和工具,Python能够帮助我们快速处理、分析数据并生成高质... 目录一、数据采集与初步探索二、数据清洗的七种武器1. 缺失值处理策略2. 异常值检测与修正3. 数据

pandas实现数据concat拼接的示例代码

《pandas实现数据concat拼接的示例代码》pandas.concat用于合并DataFrame或Series,本文主要介绍了pandas实现数据concat拼接的示例代码,具有一定的参考价值,... 目录语法示例:使用pandas.concat合并数据默认的concat:参数axis=0,join=

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

MySQL 表的内外连接案例详解

《MySQL表的内外连接案例详解》本文给大家介绍MySQL表的内外连接,结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录表的内外连接(重点)内连接外连接表的内外连接(重点)内连接内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我

C#代码实现解析WTGPS和BD数据

《C#代码实现解析WTGPS和BD数据》在现代的导航与定位应用中,准确解析GPS和北斗(BD)等卫星定位数据至关重要,本文将使用C#语言实现解析WTGPS和BD数据,需要的可以了解下... 目录一、代码结构概览1. 核心解析方法2. 位置信息解析3. 经纬度转换方法4. 日期和时间戳解析5. 辅助方法二、L