FiftyOne 集成 Albumentations:在 App 中可视化与调试数据增强的完整指南
2026/9/16 12:41:51 网站建设 项目流程

FiftyOne 集成 Albumentations:在 App 中可视化与调试数据增强的完整指南

【免费下载链接】fiftyoneRefine high-quality datasets and visual AI models项目地址: https://gitcode.com/GitHub_Trending/fi/fiftyone

FiftyOne 将计算机视觉领域广泛使用的开源图像增强库 Albumentations 以插件(Plugin)形式深度集成到自身生态中,使开发者可以直接在 FiftyOne App 内对数据集应用 Albumentations 变换、实时预览增强效果、按标签筛选增强样本,并将变换管线保存到数据集实现可复现。读完本文,你将掌握该插件的安装步骤、augment_with_albumentations等核心操作符的完整使用方式、增强样本的持久化与运行信息追溯方法,以及如何借助源码理解其背后的标签过滤与自定义 Runs 机制。

集成概览

Albumentations 是机器学习领域领先的开源图像增强库,在计算机视觉社区中被广泛使用,以丰富的增强算子集合与高性能著称。FiftyOne 将 Albumentations 的变换管线直接集成到数据集工作流中,使开发者能够:

  • 在 FiftyOne App 中直接可视化 Albumentations 增强的效果;
  • 在真实数据上测试增强对样本的影响。

该集成以 FiftyOne 插件的形式提供,安装简单,并且可以完全通过便捷的图形化界面使用。借助 FiftyOne Albumentations 插件,你可以变换所有类型的标签——Detections(目标检测框)、Keypoints(关键点)、Segmentation(分割掩码)、Heatmap(热力图)——也可以只变换图像本身。

本文聚焦插件的安装流程与功能。关于如何策划你的增强策略(curate augmentations),可参考 Data Augmentation 教程。

从仓库证据看,该集成是 FiftyOne 官方文档体系的组成部分:集成索引页中列出了 Albumentations 条目,发布说明中也记录了这一集成的引入("Added an Albumentations integration for performing data augmentation on FiftyOne datasets"),对应源码中的插件化设计使它可以借助 FiftyOne 的 插件使用指南中的通用机制(操作符、委托执行等)运行。

支持的变换类型

Albumentations 提供 80+ 种变换,覆盖像素级变换、几何变换等多个类别。FiftyOne Albumentations 插件当前支持其中除以下变换之外的全部类型:

  • AdvancedBlur(高级模糊)
  • GridDropout(网格丢弃)
  • MaskDropout(掩码丢弃)
  • PiecewiseAffine(分段仿射)
  • RandomGravel(随机沙砾)
  • RandomGridShuffle(随机网格洗牌)
  • RandomShadow(随机阴影)
  • RandomSunFlare(随机太阳耀斑)
  • Rotate(旋转)

在使用插件时,如果需要在管线中用到上述变换,需要在实际应用前确认插件版本的支持情况,或考虑其他等价实现。

插件功能清单

FiftyOne Albumentations 插件提供以下核心功能:

  • 将 Albumentations 变换应用到整个数据集、当前视图(view)或选中的样本上;
  • 直接在 FiftyOne App 中可视化这些变换的效果;
  • 查看上一次应用变换生成的样本;
  • 将增强后的样本保存到数据集;
  • 获取上一次应用变换的相关信息;
  • 将变换管线保存到数据集,实现可复现。

这些功能分别由不同的操作符(operator)提供,下文将逐一展开。

环境安装与准备

安装 FiftyOne 与 Albumentations

首先确保已安装 FiftyOne 和 Albumentations:

$ pip install -U fiftyone albumentations

下载 Albumentations 插件

然后安装 FiftyOne Albumentations 插件:

$ fiftyone plugins download https://github.com/jacobmarks/fiftyone-albumentations-plugin

提示:如果你已安装@voxel51/plugins插件,也可以通过其中的install_plugin操作符,在社区插件下拉菜单中选择 Albumentations 插件完成安装。

准备数据集

你需要加载(必要时先下载)一个数据集用于应用增强。本文使用 quickstart 数据集作为示例:

import fiftyone as fo import fiftyone.zoo as foz # 仅取 5 个样本用于快速演示 dataset = foz.load_zoo_dataset("quickstart", max_samples=5) # 只保留 ground truth 标签 dataset.select_fields("ground_truth").keep_fields() session = fo.launch_app(dataset)

从 数据集动物园文档可以看到,quickstart 数据集来自 FiftyOne 数据集动物园(Dataset Zoo),可通过foz.load_zoo_dataset()一键加载。

注意:quickstart 数据集只包含Detections标签。如果你想在其他标签类型上测试 Albumentations 变换,可以利用 FiftyOne 的 Hugging Face Transformers 集成 和 Ultralytics 集成快速生成相应标签,示例代码如下:

pip install -U transformers ultralytics
import fiftyone as fo import fiftyone.zoo as foz from ultralytics import YOLO # 关键点(Keypoints) model = YOLO("yolov8l-pose.pt") dataset.apply_model(model, label_field="keypoints") # 实例分割(Instance Segmentation) model = YOLO("yolov8l-seg.pt") dataset.apply_model(model, label_field="instances") # 语义分割(Semantic Segmentation) model = foz.load_zoo_model( "segmentation-transformer-torch", name_or_path="Intel/dpt-large-ade", ) dataset.apply_model(model, label_field="mask") # 热力图(Heatmap) model = foz.load_zoo_model( "depth-estimation-transformer-torch", name_or_path="LiheYoung/depth-anything-small-hf", ) dataset.apply_model(model, label_field="depth_map")

应用 Albumentations 变换

要对数据集应用 Albumentations 变换,使用augment_with_albumentations操作符。在 FiftyOne App 中按下反引号键(),打开操作符弹窗,从下拉菜单中选择augment_with_albumentations` 即可。

随后你可以配置要应用的变换:

  • 每个样本的增强数量(Number of augmentations per sample):为每个输入样本生成的增强样本数量。默认值为 1,对于确定性变换来说已经足够;但对于概率性变换,你可能希望生成多个样本,以观察可能的输出范围。

  • 变换数量(Number of transforms):组合进管线、应用到每个样本的变换数量。默认值为 1,你可以根据需要设置更高的数值——变换越多,增强越复杂。每个变换都可以单独配置。

  • 目标视图(Target view):变换将应用到的视图。默认是dataset,你也可以将变换应用到当前视图或 App 中当前选中的样本。

  • 执行模式(Execution mode):如果设置delegated=False,操作会立即执行;如果设置delegated=True,操作会被排队为后台任务,随后可在终端中运行:

$ fiftyone delegated launch

对于每个变换,你可以选择来自 Albumentations 库的"原始(primitive)"变换,或选择之前保存到数据集的"已保存(saved)"变换管线。这些已保存的管线可以由一个或多个变换组成。

当应用原始变换时,你可以在 App 内直接配置该变换的参数。可用的参数、默认值、类型和 docstring 都直接集成自 Albumentations 库本身——这意味着你在界面中看到的就是 Albumentations 官方定义的参数语义,无需额外查表。

当应用已保存的管线时,则没有参数需要配置。

可视化变换效果

应用变换后,你可以直接在 FiftyOne App 中可视化变换的效果。所有增强样本都会被添加到数据集中,并被打上augmented标签,方便你在 App 中轻松筛选出增强样本或非增强样本。

你也可以通过match_tags()方法在代码中编程筛选增强样本。该方法定义于 fiftyone/core/collections.py(SampleCollection.match_tags),其签名支持tagsboolall参数:bool=False表示取反筛选(即不包含该标签的样本),all=True表示必须同时具备所有给定标签:

# 只取增强样本 augmented_view = dataset.match_tags("augmented") # 只取非增强样本 non_augmented_view = dataset.match_tags("augmented", bool=False)

然而,基于这些标签匹配会返回所有由增强生成的样本,而不仅仅是最后一次应用变换生成的样本——稍后你会看到,我们可以把增强保存到数据集中。要只获取上一次应用变换生成的样本,可以使用view_last_albumentations_run操作符:

注意:对于 FiftyOne Albumentations 插件添加到数据集的所有样本,都会有一个"transform"字段,其中不仅包含所应用管线的信息,还包含本次应用该管线的具体参数。例如,如果你有一个应用概率为p=0.5HorizontalFlip变换,那么"transform"字段的内容会告诉你该变换是否真的应用到了这个样本上——这对于理解概率性增强的实际行为非常有价值。

保存增强样本

默认情况下,所有增强都是临时的,因为 FiftyOne Albumentations 插件主要面向快速原型验证和实验。这意味着当你生成新一批增强样本时,上一批增强样本会从数据集中被移除,对应的图像文件也会从磁盘上删除。

如果你想把增强样本保存到数据集中,可以使用save_albumentations_augmentations操作符,它会将增强样本保存到数据集,同时保留样本上的augmented标签:

这一机制保证了"临时预览"与"正式落地"两种工作流的清晰分离:原型阶段无需担心磁盘被不断增长的增强样本占满,确认效果后再一键持久化。

获取上一次变换的信息

当你使用 FiftyOne Albumentations 插件对数据集中的样本应用变换管线时,相关信息会被捕获,并借助 FiftyOne 的自定义 Runs(custom runs)机制存储。这意味着你可以轻松访问上一次应用变换的信息。

在 FiftyOne App 中,可以使用get_last_albumentations_run_info操作符,以格式化的摘要形式展示相关信息:

注意:你也可以在代码中访问这些信息。Albumentations 插件的运行信息存储在键'_last_albumentations_run'下:

last_run_info = dataset.get_run_info("_last_albumentations_run") print(last_run_info)

get_run_info()是 FiftyOne 中查询自定义 Run 信息的标准接口(可参见 developing_plugins.rst 中关于managing-custom-runs的说明),插件选择以_last_albumentations_run为键,使得运行元数据与数据集深度绑定、随数据集持久化,方便审计与复现。

保存变换管线

如果你对自己创建的变换管线感到满意,可以把整个变换组合连同超参数一起保存到数据集。这意味着快速原型阶段结束后,你可以轻松过渡到更可复现的工作流,并且可以将变换分享给他人或移植到其他数据集。

要保存变换管线,使用save_albumentations_transform操作符。

保存之后,你可以使用get_albumentations_run_info操作符查看该已保存变换管线的相关信息:

此外,在augment_with_albumentations操作符弹窗中,每个变换的"saved"标签页下都可以访问到已保存的变换管线——这意味着你可以在后续的增强会话中直接复用此前保存的管线,实现"一次配置、处处复用"。

常见工作流小结

综合上述功能,一个典型的 Albumentations 增强工作流可以概括为:

  1. 安装pip install -U fiftyone albumentations,并通过fiftyone plugins download安装插件;
  2. 准备数据:加载数据集(如 quickstart),必要时用 Hugging Face 或 Ultralytics 模型生成KeypointsSegmentationHeatmap等标签;
  3. 应用变换:在 App 中通过反引号键打开操作符弹窗,运行augment_with_albumentations,配置增强数量、变换数量、目标视图与执行模式,并逐个配置原始变换参数或选择已保存管线;
  4. 可视化与筛选:在 App 中直接观察增强效果,使用augmented标签或match_tags()编程筛选,用view_last_albumentations_run定位上一次生成的样本,并通过样本的"transform"字段核验每个变换的实际应用情况;
  5. 沉淀与复用:满意后用save_albumentations_augmentations持久化增强样本,用save_albumentations_transform保存管线,通过get_last_albumentations_run_infoget_albumentations_run_info追溯运行细节。

整个过程无需编写任何增强代码即可在图形界面中完成,同时保留了通过 Python API 编程访问全部信息的灵活性。该插件的所有功能均建立在 FiftyOne 插件系统(操作符、委托执行、自定义 Runs)之上,相关机制可进一步参考 FiftyOne 插件使用指南 与 插件开发指南。

【免费下载链接】fiftyoneRefine high-quality datasets and visual AI models项目地址: https://gitcode.com/GitHub_Trending/fi/fiftyone

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询