fiftyone之如何使用images dataset

原文:https://docs.voxel51.com/tutorials/open_images.html
教程涵盖以下内容

如何从fiftyone 数据库下载公开数据集;
如何使用fiftyone模型库进行预测,模型推理;
如何用fiftyone 进行数据集评估,模型计算输出mAP;
探索数据集和评估结果;
通过交互式绘图工具可视化嵌入特征。

准备工作

安装fiftyone

pip install fiftyone

1

我们会用一些 TensorFlow 模型和 PyTorch 来生成预测和嵌入,也会用 UMAP 方法(一种数据降维方法)来降低嵌入的维度,所以我们需要安装相应的包:

pip install tensorflow torch torchvision umap-learn

1

安装Jupyter notebooks里交互式绘图工具

 pip install 'ipywidgets>=8,<9'

1

1、加载数据集

官网为例,下载 100 个随机选择的图像 + 标注的小样本:

import fiftyone as fo
import fiftyone.zoo as foz

dataset = foz.load_zoo_dataset(
    "open-images-v7",
    split="validation",
    max_samples=100,
    seed=51,
    shuffle=True,)

123456789

现在让我们启动 FiftyOne 应用程序,以便我们可以探索刚刚下载的数据集。

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

1

执行结果:
fiftyone之如何使用images dataset:fiftyone连接到本地端口5151。如果未连接到远程会话,则可能需要启动新会话并指定端口。

session = fo.launch_app(dataset.view(), port=5150)
# 如果在网页中看不到我们要的效果,等待应用程序加载完成.
session.wait()

123

同时,我们可以加载其他常见几种格式,如voc,yolo格式的数据集,或者纯图像数据集:

# 1、加载纯图像
dataset = fo.Dataset.from_dir(
        dataset_type=fo.types.ImageDirectory,
        dataset_dir="G:\lfAnti-UAV-RGBT\train_data_mosaic_mixup",
        name="anti_aug_train",
        shuffle=False,)
# 2、加载yolo格式
dataset = fo.Dataset.from_dir(
        dataset_type=fo.types.YOLOv5Dataset,
        yaml_path = "H:\lf\Anti-UAV-RGBT\anti.yaml", # 数据根目录、train/val txt、类别(即为yolov5训练格式yaml)
        name ="anti",
        shuffle=True,)   
# 3、加载voc格式
dataset = fo.Dataset.from_dir(
        data_path='H:/lf/anti/voc/train/images', # 末尾不能加 /
    	labels_path='H:/lf/antin/voc/train/labels', # 末尾不能加 /
    	dataset_type=fo.types.VOCDetectionDataset,
    	label_field='ground_truth',
    	shuffle=True,)         


12345678910111213141516171819

使用 FiftyOne 加载 Open Images 还会自动存储相关的标签和元数据,例如类、属性和用于在数据集的 info 字典中评估的类层次结构。输出相应字典信息:

print(dataset.info.keys())

1

返回:dict_keys([‘hierarchy’, ‘attributes_map’, ‘attributes’, ‘segmentation_classes’, ‘point_classes’, ‘classes_map’])。

加载数据集可以将各种可用参数传递给 load_zoo_dataset() 以指定要下载的图像或标签类型的子集:

label_types – 加载的标签类型列表。Open Images V7 支持的值为(“detections”, “classifications”, “points”, “segmentations”, “relationships”)。Open Images v6 与此相同,只是它不包含 “points”。默认情况下,将加载所有可用的标签类型。指定 [] 将仅加载图像。
classes – 感兴趣的类的列表。如果指定,则仅下载指定类中至少具有一个object、segmentation或image-level label的样本。
attrs – 感兴趣的属性列表。如果指定,则仅当样本在 attrs 中至少包含一个属性或在 classes 中包含一个类时才下载样本(仅当 label_types 包含 “relationships” 时适用)。
load_hierarchy – 是否将类层次结构加载到 dataset.info[“hierarchy”] 中。
image_ids – 要下载的特定图像 ID 数组。
image_ids_file – 包含要下载图像 ID 的 .txt、.csv 或 .json 文件的路径。
max_samples – 要加载的最大样本数。
shuffle – 如果给出了 max_samples,是否随机选择要加载的样本。
seed – 随机排序时使用的随机种子。

接下来,我们使用其中一些参数来下载 Open Images 的 100 个示例子集,其中包含类“Burrito”、“Cheese”和“Popcorn”的segmentations和image-level labels。

dataset = foz.load_zoo_dataset(
    "open-images-v7",
    split="validation",
    label_types=["segmentations", "classifications"],
    classes = ["Burrito", "Cheese", "Popcorn"],
    max_samples=100,
    seed=51,
    shuffle=True,
    dataset_name="open-images-food",)

123456789

执行结果图:
fiftyone之如何使用images dataset
fiftyone之如何使用images dataset
例如,我们只下载包含与 “Wooden” 属性有关系的示例:

dataset = foz.load_zoo_dataset(
    	"open-images-v7",
    	split="validation",
    	label_types=["relationships"],
    	attrs
1234
© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...