FiftyOne(图像数据集工具)——WIN10下安装与简单测试

FiftyOne——图像数据集的开源工具

引言

在深度学习研究中,与数据集打交道是常有的事情。经常为了训练一个新的模型,或者提高现有模型的性能,亦或者尝试新的模型的时候,需要对原始数据进行再处理,然后在调参过程中为了提高数据载入的速度,保存了需要喂入的不同类型的数据, 数据备份1 ,数据备份2,数据备份3. 浪费大量的硬盘空间。数据小还可以接受,但是遇到类似上10G的,那就很头疼。
又或者,拿到一个新任务,自己建立数据库需要死命的拍摄,换角度换对象,还需要爆肝拿着数据集标注器一个一个标,训练出来的泛化效果又不好。想要用公开的数据集,一看coco数据集30多个G,里面能用的只有2-3个类别,谷歌的 image v6 500多个G,只想用里面的10个类,又开始头疼,咋么下载。
再例如,拿到数据库了,也有了标注信息,但是想要重新按其它类别来组织,例如把阿猫阿狗放到动物里面,把黑人白人黄人放到人里面,又需要一顿敲代码,脑壳继续疼。
这个时候,你就需要用FiftyOne了(当然功能远不止能解决上面说的那些情况)。
FiftyOne这个工具比较新,是VOXEL51最新开发的一个数据集工具,同时也受Coco数据集团队支持。旨在加快机器学习中涉及图像数据集方面的研究。其主要功能有

这部分不严谨,待完善。先上后面的操作
1、下载现有的经典数据集,如coco和谷歌open dataset等大型数据集,并提供了依照类别(如 dog 、cat、person)、任务类型(如目标检测,图像分类,语义分割等)等下载所需的子集。
2、可视化图像和标签,并可以根据条件(如标签等)筛选可视化的图像类型
3、模型评估。
4、分析、评估现有数据集的质量。

官方文档
Github工程

安装

系统环境:Win10
该开源工具是基于Python语言的。安装的过程也比较简单。

pip install fiftyone 

也可以下载桌面版,桌面版的效果还没有试过

pip install fiftyone-desktop

示范下载初步数据集

测试代码,大概的意思是从网上现下一个小的数据库,并做显示演示:


import fiftyone as fo
import fiftyone.zoo as foz

dataset = foz.load_zoo_dataset("quickstart")

session = fo.launch_app(dataset,port = 5151)  # 没有指定port则默则5151
session.wait()  # 官网给的示例没有这一句,记得加上,不然程序不会等待,在网页中看不到我们要的效果

数据库下载中
在这里插入图片描述
下载后完成后显示让你访问网页,默认会自动弹出:
在这里插入图片描述
网页显示的效果是这样的:
在这里插入图片描述

注意:下载coco等数据集的时候,存在多进程的问题,可以先看我后面问题记录中的问题4

如何指定类型下载coco数据集中的图片放到另外一篇里面介绍。

问题

据官网所说,大部分问题可以通过更新一些包来解决,具体操作如下两行代码

pip install --upgrade pip setuptools wheel
pip install fiftyone

但是我运动第一行代码的时候,发现他把我原本的pip给卸载了,但是没有成功安装上新的pip。
因此需要用其它的代码来重新安装下pip,具体如下

python -m ensurepip
python -m pip install --upgrade pip

1 AttributeError: type object ‘MongoClient’ has no attribute ‘topology_description’

问题截图:在这里插入图片描述

措施1:更新下其它的依赖库,然后再安装一次

pip install --upgrade pip setuptools wheel
pip install fiftyone

可以看到自动更新了pymogo这个包
在这里插入图片描述

2 测试时显示访问超时

案例说这应该是不能访问谷歌网盘引起的,但不知道为什么在使用了VPN的时候出现”ValueError: check_hostname requires server_hostname“错误后,我更新了”urllib3“库。突然这边也就好使了。 建议遇到这个问题先不要用vpn,直接更新下”urllib3“的库。
测试代码:


import fiftyone as fo
import fiftyone.zoo as foz

dataset = foz.load_zoo_dataset("quickstart")

session = fo.launch_app(dataset)
session.wait()  # 官网给的示例没有这一句,记得加上,不然程序不会等待,在网页中看不到我们要的效果

更新代码如下

pip install urllib3==1.25.11

3 ValueError: check_hostname requires server_hostname

在这里插入图片描述
使用VPN出现上述问题
参考出处
更新下下库的版本

pip install urllib3==1.25.11

4 ImportError: DLL load failed: 页面文件太小,无法完成操作。

下载COCO数据集的时候,内存不断飙高,然后显示上面的错误,严重点还直接关闭了Pyhcharm
原因:Window下不支持Python多进程,所以一直在多开Python。 将进程数设置为1即可。

原因详解参考
解决方法:

  1. 具体的load_zoo_dataset()这个函数中指定进程数为1
    dataset = foz.load_zoo_dataset(
        "coco-2017",
        split="validation",
        label_types=["detections"],
        classes=["cat"],
        max_samples=1,
        only_matching=True,
        num_workers=1,  # 在这边指定进程数为1
        dataset_name="open"
    )
  1. 把load_zoo_dataset()放到if __name__ == "main" 下面进行保护
    main是python的最高命名空间,在这里面的代码不会被子进程重新读取。
if __name__ == "__main__":

    dataset = foz.load_zoo_dataset(
        "coco-2017",
        split="validation",
        label_types=["detections"],
        classes=["cat"],
        max_samples=1,
        only_matching=True,
        # num_workers=1,
        dataset_name="open"
    )

5 import fiftyone 报error 100 错误,NoSuchProcess

在这里插入图片描述
在这里插入图片描述
参考出处
在这里插入图片描述

估计是进程出了问题。

解决方法:

1. 重新安装MongnDB
下载传送门

2. 重新启动
3. 删除mongoab在C盘的log文件

Guess you like

Origin blog.csdn.net/scy261983626/article/details/119327350