最近了解了一个令人难以置信的工具,叫做Voxel51的FiftyOne,无法推荐它足够用于你的工作或研究。在文中,将解释如何使用该工具进行图像分类。
介绍
FiftyOne是一个开源工具,为数据集标记和计算机视觉模型分析提供了强大的图形界面。“提高数据质量和了解模型的故障模式是提高模型性能的最有效方法。”[1]拥有一个标准化工具极大地加快和简化了数据和模型质量分析过程。作为一个开放源码项目是最重要的。该工具的官方文档写得很漂亮,可在以下位置获取:
https://voxel51.com/docs/fiftyone/
该工具既可以作为独立应用程序运行,也可以在Jupyter笔记本中运行。
FiftyOne安装[1]
要安装FiftyOne,可以使用pip。使用以下命令创建名为fo的conda环境,然后使用pip安装FiftyOne库。
[注意:对于M1芯片的MacBooks,你需要手动设置MongoDB后端,因为捆绑的DB安装无法开箱即用。你可以在此处阅读:https://voxel51.com/docs/fiftyone/getting_started/install.html#troubleshooting].
conda create -n fo python=3.8 -y
conda activate fo
pip install fiftyone
如果一切正常,你应该能够在python中加载包。接下来,我们将看两个基本的核心类,共有50个。
FiftyOne数据集和示例[2]
1.数据集:这个类是fiftyone的核心,具有强大的功能来表示数据,并使用python库和fiftyoneUI对其进行操作。你可以加载、修改、可视化和评估数据以及标签(分类、检测等)[2]
即使你有未标记的数据,也可以在FiftyOne应用程序中完成初始探索阶段。它还与CVAT和其他标签平台集成。数据集是Sample类的有序集合,它们被分配了用于检索的唯一ID。
你可以使用以下代码实例化名为“emotion-datase”的空数据集。
import fiftyone as fo
dataset = fo.Dataset("emotion-dataset")
dataset.persistent = True # Use this line if you want your dataset to be persistent and be avialable after system restarts.
2.示例:数据集由存储与任何给定数据示例相关的信息的示例类对象组成。每个示例都有一个文件路径作为必填字段。除此之外,只要数据类型在所有示例中一致,你可以添加任意多个关键字字段。让我们看看下面的一个例子。
sample = fo.Sample(filepath="/path/to/some/image.jpg", ground_truth="class1")
这将创建一个包含filepath和ground_truth字段的示例。请注意,对于整个数据集,ground_truth需要是字符串类名。如果要使用整数,则必须对整个数据集保持一致。
向数据集添加样本非常容易。
dataset.add_samples([sample]) #adds a list of samples to the dataset
方法论
对于本教程,将使用FiftyOne库从Open Images