记录fifityone载入自己的数据集和查看

官方只有英文文档,在网上搜中文教程全是文档里最表层的示例,在被领导骂了两周后,算是捣鼓出了一丢丢东西,防止其他哥们的领导莫名其妙也非要搞个什么数据集可视化,我把我这套东西放这,我是使用yolov5进行训练的数据集也是v5格式的

先把官方文档连接放这

从磁盘加载数据集 — FiftyOne 0.24.1 文档 (voxel51.com)

注意数据文件夹格式必须采用下面这个格式

<dataset_dir>/
    dataset.yaml
    images/
        train/
            <uuid1>.<ext>
            <uuid2>.<ext>
            ...
        val/
            <uuid3>.<ext>
            <uuid4>.<ext>
            ...
    labels/
        train/
            <uuid1>.txt
            <uuid2>.txt
            ...
        val/
            <uuid3>.txt
            <uuid4>.txt
            ...

假设你有多个文件夹(像我一样按日期分的),那么每个文件夹都需要像这个格式一样,内部都得有个yaml的文件

然后开始编辑加载数据集的代码

import fiftyone as fo
import fiftyone.zoo as foz
import os  
import shutil  
import re  
from datetime import datetime  
 
import fiftyone as fo

dataset_dir = "放你自己的最表层文件夹"

dataset = fo.Dataset("给你的数据集取个名字")


#是否要永久保存,测试的时候建议不要保存,等测好了再保存
dataset.persistent = True 


for foldername in os.listdir(dataset_dir):  
    date_folder_path = os.path.join(dataset_dir, foldername)
    if foldername == 'labels':
        continue
    elif foldername == 'images':
        continue
    elif foldername == 'uavbird.yaml':
        continue
        
    print(f"==================当前操作文件夹: {foldername}===============================")

    # 遍历train和val子目录  
    for subdir in ['images', 'labels']:  
        subdir_path = os.path.join(date_folder_path, subdir)
        if subdir == 'labels':
                continue  
        # 遍历images和labels文件夹  
        for folder in ['train', 'val']:
            folder_path = os.path.join(subdir_path, folder) 

            dataset.add_dir(
                dataset_dir = date_folder_path,
                dataset_type = fo.types.YOLOv5Dataset,
                split = folder,
                
                #这里我将不同种类的内容放入不同文件夹,因此可以直接使用文件夹名作为一个tag
                tags = foldername,
            )
                


print(dataset)

print(dataset.head())


session = fo.launch_app(dataset)
 
session.wait()

如果选择永久保存后如何查看

使用 FiftyOne 数据集 — FiftyOne 0.24.1 文档 (voxel51.com)

import fiftyone as fo

//可以显示当前环境下全部数据集的名字
print(fo.list_datasets())

dataset = fo.load_dataset("你数据集的名字")

session = fo.launch_app(dataset)

session.wait()

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值