fiftyone之如何使用images dataset

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

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

准备工作

  • 安装fiftyone
pip install fiftyone
  • 我们会用一些 TensorFlow 模型和 PyTorch 来生成预测和嵌入,也会用 UMAP 方法(一种数据降维方法)来降低嵌入的维度,所以我们需要安装相应的包:
pip install tensorflow torch torchvision umap-learn
  • 安装Jupyter notebooks里交互式绘图工具
 pip install 'ipywidgets>=8,<9'

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,)

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

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

执行结果:
在这里插入图片描述:fiftyone连接到本地端口5151。如果未连接到远程会话,则可能需要启动新会话并指定端口。

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

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

# 1、加载纯图像
dataset = fo.Dataset.from_dir(
        dataset_type=fo.types.ImageDirectory,
        dataset_dir="G:\\lf\Anti-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,)         

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

print(dataset.info.keys())

返回: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",)

执行结果图:
在这里插入图片描述
在这里插入图片描述
例如,我们只下载包含与 “Wooden” 属性有关系的示例:

dataset = foz.load_zoo_dataset(
    	"open-images-v7",
    	split="validation",
    	label_types=["relationships"],
    	attrs
### COCO 2017 数据集下载方法 COCO (Common Objects in Context) 是一个广泛使用的计算机视觉数据集,提供了丰富的标注信息用于目标检测、分割和其他任务。以下是关于如何下载 COCO 2017 的训练集、验证集以及测试集的具体说明。 #### 下载地址 - 训练集 (`train2017`) 和其对应的标注文件可以从以下链接获取: - 图片压缩包:`http://images.cocodataset.org/zips/train2017.zip`[^1] - 标注文件压缩包:`http://images.cocodataset.org/annotations/annotations_trainval2017.zip`[^1] - 验证集 (`val2017`) 可通过如下链接获得: - 图片压缩包:`http://images.cocodataset.org/zips/val2017.zip`[^1] - 测试集 (`test2017`) 提供无标签图片,适用于提交模型预测结果到官方评测平台: - 图片压缩包:`http://images.cocodataset.org/zips/test2017.zip` #### 解压后的结构 解压后会得到以下目录结构: ``` coco/ ├── annotations/ │ ├── instances_train2017.json │ ├── captions_val2017.json │ └── ... ├── train2017/ │ ├── 000000000009.jpg │ ├── 000000000025.jpg │ └── ... ├── val2017/ │ ├── 000000000139.jpg │ ├── 000000000632.jpg │ └── ... └── test2017/ ├── 000000000885.jpg ├── 000000000889.jpg └── ... ``` #### 使用 FiftyOne 加载数据集 如果希望利用 FiftyOne 工具来加载这些数据集,则可以按照以下方式操作: ##### 加载训练集和验证集 对于 `train2017` 和 `val2017` 数据集,可以通过指定路径并设置相应的参数完成加载: ```python import fiftyone as fo dataset = fo.Dataset.from_dir( dataset_type=fo.types.COCODetectionDataset, data_path="/path/to/coco/train2017", labels_path="/path/to/coco/annotations/instances_train2017.json", name="coco-train-val" ) ``` ##### 加载测试集 由于测试集中不包含任何标注信息,因此仅需提供图片所在位置即可: ```python dataset_test = fo.Dataset.from_dir( dataset_type=fo.types.ImageDirectory, dataset_dir="/path/to/coco/test2017", name="coco-test" ) ``` 以上代码片段展示了如何基于 FiftyOne 库导入不同类型的子集[^2]。 #### 注意事项 在实际应用过程中需要注意网络状况可能影响下载速度;另外存储空间需求较大,请提前确认磁盘容量充足再执行下载动作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值