通过fiftyone按分类下载open-images-v7数据集,并转成yolov5可直接训练的格式

import osimport fiftyone as fo
import fiftyone.zoo as foz
import yamlclasses = ['Person',  # 人  - 0'Car',  # 轿车 - 1'Taxi',  # 出租车 - 2'Ambulance',  # 救护车 - 3'Bus',  # 公共汽车 - 4'Bicycle',  # 自行车  - 5'Motorcycle',  # 摩托车  - 6'Dog',  # 狗  - 7'Cat',  # 猫  - 8'Mouse',  # 老鼠  - 9'Backpack',  # 背包 - 10'Glasses',  # 眼镜 - 11'Hat',  # 帽子 - 12'Helmet',  # 头盔 - 13'Traffic light',  # 交通信号灯 - 14'Knife',  # 刀 - 15'Mobile phone',  # 移动电话  - 16'Umbrella'  # 伞 - 17# 手持物 - 18# 烟雾 - 19# 火焰 - 20
]# 构建类别索引映射
class_to_index = {cls: idx for idx, cls in enumerate(classes)}def filter_samples_by_label(dataset, target_label):# 创建一个新数据集来保存筛选后的样本filtered_dataset = fo.Dataset()# 遍历原数据集for sample in dataset:# 保留与target_label匹配的检测框filtered_detections = [d for d in sample.ground_truth.detections if d.label == target_label]# 如果样本中还有匹配的检测框,创建样本副本并添加到新数据集中if filtered_detections:new_sample = sample.copy()new_sample.ground_truth.detections = filtered_detectionsfiltered_dataset.add_sample(new_sample)return filtered_datasetdef update_txt_file_class_indices(class_name):labels_dir = os.path.join("/yolov5/open-images-v7", class_name, 'labels/val')dataset_yaml = os.path.join("/yolov5/open-images-v7", class_name, 'dataset.yaml')os.remove(dataset_yaml)if os.path.exists(labels_dir):for filename in os.listdir(labels_dir):if filename.endswith('.txt'):filepath = os.path.join(labels_dir, filename)# 读取并处理.txt文件with open(filepath, 'r') as file:lines = file.readlines()# 更新类别索引updated_lines = []for line in lines:parts = line.strip().split()if len(parts) >= 5:  # 假设每行至少有5个元素(class index在第0个位置)class_idx_str = parts[0]  # 原类别索引(可能是名称也可能是数字)try:updated_class_idx = str(class_to_index[class_name])except ValueError:# 如果转换失败,则按类别名称补全updated_class_idx = class_nameparts[0] = updated_class_idxupdated_lines.append(' '.join(parts) + '\n')# 写回更新后的行with open(filepath, 'w') as file:file.writelines(updated_lines)print(f"{class_name}类别的所有.txt文件的索引已更新。")for class_name in classes:dataset = foz.load_zoo_dataset("open-images-v7",split="train",  # train validation testlabel_types=["detections"],  # "detections", "segmentations", "points"classes=[class_name],max_samples=100000,  # 筛选前十万个样本shuffle=True,only_matching=True,  # 指定仅下载符合条件的图片num_workers=1,  # 指定进程数为1dataset_name="base_100000",dataset_dir=f"/open-images-v7")filtered_dataset = filter_samples_by_label(dataset, class_name)if filtered_dataset.count() == 0:print(f"No samples found for class: {class_name}")continueprint(f"{class_name}类别的样本数量为:{filtered_dataset.count()}")# 导出这个筛选后的数据集result = filtered_dataset.export(export_dir=f"/yolov5/open-images-v7/{class_name}/",dataset_type=fo.types.YOLOv5Dataset,label_field="ground_truth",)update_txt_file_class_indices(class_name)data_yaml_content = {'train': '/yolov5/open-images-v7','val': '/yolov5/open-images-v7','test': '',  # 可以根据实际情况填写测试集路径'nc': len(classes),  # 类别数量'names': classes  # 类别名称列表
}
with open('/yolov5/open-images-v7/data.yaml', 'w') as f:yaml.dump(data_yaml_content, f, default_flow_style=False)

下载10万张样本 ( 如果测试可以将max_samples值调小)

下载后生成的文件目录结构如下:

数据转换后按类别划分为多个文件 如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/24058.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

000002 - Hadoop环境安装

Hadoop及其大数据生态圈 1. 背景2. 实践2.1 Linux服务器准备2.2 在其中一台服务器上安装JDK2.3 在其中一台服务器上安装HADOOP2.4 本地模式运行一个hadoop案例 3. 自动化部署 1. 背景 要搭建Hadoop集群环境,我们需要执行如下 准备三台Linux服务器,服务…

Python实现日志的记录

1 日志 1、介绍 日志(Log)是一个记录事件或系统活动的文件或数据集,日志是系统管理员和开发者用于诊断问题、监视系统性能、以及追踪用户活动的关键工具。包含以下: 系统日志:记录操作系统、应用程序、硬件组件等的事…

lcd屏幕verilog显示

一,VGA原理和时序 计算机显示区的显示有许多标准,常见的有VGA、SVGA等。在这里我们用VGA接口来控制显示器,也就是视频图形阵列。作为一 种标准的显示接口得到广泛的应用。 常见的彩色显示器一般由 CRT(阴极射线管)构成,色彩是由R、G、B(红、黄、 蓝)三基色组成。显示是…

前端UI框架Element Plus 和 Ant Design Vue哪个好

Element Plus 和 Ant Design Vue 都是基于 Vue.js 的 UI 组件库,它们具备一系列可复用的组件和丰富的功能,并且是当前国内主流的两个 UI 组件库。 (1)Element Plus 是饿了么前端团队推出的开源项目,是对 Element UI 的…

completefuture造成的rpc重试事故

前言 最近经历了一个由于 completefuture 的使用,导致RPC重试机制触发而引起的重复写入异常的生产bug。复盘下来,并非是错误的使用了completefuture,而是一些开发时很难意识到的坑。 背景 用户反馈通过应用A使用ota批量升级设备时存在概率…

文字游侠AI:一键创作头条爆文!(附渠道和保姆级教程)

在互联网的迅猛发展中,自媒体已然成为一条崭新的职业路径,吸引着越来越多的人通过各类平台分享观点与知识,同时获取相应的收益。今日头条便是一个极为出色的自媒体平台,旗下的图文项目更是一条实现收益的有效途径。 对于众多非专业…

【SpringBoot + Vue 尚庭公寓实战】租期管理接口实现(四)

【SpringBoot Vue 尚庭公寓实战】租期管理接口实现(四) 文章目录 【SpringBoot Vue 尚庭公寓实战】租期管理接口实现(四)1、查询全部租期列表2、保存或更新租期信息3、根据ID删除租期 租期管理共有三个接口,分别是 保…

IP纯净度对跨境电商有影响吗?

当我们谈论代理IP时,通常会提到一个重要概念,那就是“IP纯净度”。 IP纯净度是指代理IP服务中所提供的IP地址的质量、干净程度和安全性,纯净度高的IP地址通常具备低恶意软件攻击的风险、良好的访问效果、稳定性和速度以及隐私保护等特点。在…

动态内存管理(malloc,calloc,realloc,free)+经典笔试题

动态内存管理 一. malloc 和 free1. malloc2. free 二. calloc三. realloc四.动态内存的错误1.对NULL指针的解引用操作2.对动态开辟空间的越界访问3.对非动态开辟内存使用free释放4.使用free释放一块动态开辟内存的一部分5.对同一块动态内存多次释放6.动态开辟内存忘记释放&…

python连接Mongodb数据库,报错:pymongo.errors.ServerSelectionTimeoutError

python连接mongdb数据库,本来是可以的,但是研发更换新的数据库后,一直报错:pymongo.errors.ServerSelectionTimeoutError,但是在其他人电脑上脚本执行成功。 详见报错截图: 在网上找了很久的解决方案&…

图标绘制软件draw.io中文安装包

Draw.io(也称为Diagrams)是一款功能强大的免费在线图表绘制工具。它支持绘制多种类型的图表,如流程图、UML图、组织结构图等,满足了从商务到工程设计的多领域需求。软件界面直观友好,操作简单,用户无需安装…

【网络基础1】

文章目录 学习目标一、网络基础11.网络的重要性2.osi7层模式3.协议和osi7层模型的关系4.数据的封装和解封装5.tcp的三次握手6.Ddos攻击讲解7.Tcp的四次挥手 二、网络基础21.文字编码2.IP地址的划分3.子网掩码4.同网段ip才能直接通信5.DNS解析6.DNS解析命令7.短域名为什么值钱8.…

docker命令 docker ps -l (latest)命令在 Docker 中用于列出最近一次创建的容器

文章目录 12345 1 docker ps -l 命令在 Docker 中用于列出最近一次创建的容器。具体来说: docker ps:这个命令用于列出当前正在运行的容器。-l 或 --latest:这个选项告诉 docker ps 命令只显示最近一次创建的容器,不论该容器当前…

Python代码限定抽奖次数的方法

在许多应用场景中,抽奖活动需要限定参与次数以确保公平性和控制成本。本文将介绍如何使用Python代码实现抽奖次数的限定。我们将讨论基本的实现方法,并展示一个完整的代码示例。 基本思路 限定抽奖次数的基本思路是使用一个计数器来记录每个用户已经参…

png怎么变成jpg?教你3种方法一键批量转换

png怎么变成jpg?PNG转JPG在图像处理中扮演着重要的角色。除了能够显著减小文件大小,使图像更易于分享和传输外,这种转换还能确保图像在各种平台和设备上都能得到良好的展示效果。无论是网站加载速度的优化,还是移动设备上的流畅浏…

windows 系统通过 cmd 命令终止进程

windows 系统通过 cmd 命令终止进程 1、使用 netstat 命令查看特定端口的占用情况 例如,要查看端口号为 8015 的情况,可以执行以下命令: netstat -ano | findstr 8105此命令会显示所有占用端口 8105 的网络连接,并列出 PID&…

Shopee与Lazada卖家如何运用自养号测评稳定提升销量于评价

在跨境电商行业中,测评对于提高产品销量是个非常优秀的辅助方式。作为东南亚电商巨头,Shopee和Lazada这两大主流平台上,卖家竞争也尤为激烈,卖家们不断寻求有效的方法提升自己的产品销量。为了应对这一挑战,测评应运而…

若依框架改造多租户模式

当前使用版本3.6.416.20.2 (Currently using 64-bit executable)https://doc.ruoyi.vip/ruoyi-cloud/document/hjbs.html 一、若依Cloud改为多租户模式 当前使用版本3.6.4,既然要改为多租户模式,多租户重点是什么,数据隔离,那么…

4、后端本地环境搭建

后端本地环境搭建 4.1 安装jdk 下载完成后双击安装的 jdk ,点下一步,选择安装目录,一直点下一步,直到结束。 安装完成后同样需要配置环境变量 window s 搜索查看高级系统设置—— 高级 —— 环境变量 —— 系统变量 1、新建一…

java自动化之java基础03-09java基础之数组

数组 1、定义 数组是一种用于存储固定大小的同类型数据的数据结构 1)固定大小 2)同类型数据的存储 2、声明数组 1)数据类型[] 变量名称; 例如:int[] numsArry; 2)数据类型 变量名称[]; 例如&#xf…