此页面由 AI 自动翻译。查看英文原版

LuxonisLoader

概述

LuxonisLoader 提供了一种简单高效的方式来加载和迭代以Luxonis 数据格式 (LDF) 存储的数据,并支持即时数据增强。 由于它还与 LuxonisTrain 原生集成,因此可以实现平滑无缝的训练工作流程。

数据集加载

要使用 LuxonisLoader 加载数据集,我们首先需要一个 LuxonisDataset 实例。 加载器使用要加载的数据集和数据集视图(即拆分)进行初始化。
Python
1from luxonis_ml.data.datasets import LuxonisDataset
2from luxonis_ml.data.loaders import LuxonisLoader
3
4dataset_name: str = ... # 现有 LDF 数据集的名称,例如 "parking_lot"
5dataset = LuxonisDataset(dataset_name)
6loader = LuxonisLoader(dataset, view="train")
可以通过简单的 for 循环迭代数据:
Python
1for images, labels in loader:
2    ...
对于单源数据集,images 通常是单个图像数组。对于多源数据集,它也可以是按源或组件名称键控的字典。labels 输出按任务名称分组。

增强

增强是通过应用转换来增加数据集多样性,从而改进模型训练。 我们可以通过将 Python 字典列表传递给 LuxonisLoader 构造函数的 augmentation_config 参数来定义它们,每个字典代表一个单独的增强:
Python
1{
2    "name": str,  # 增强的名称
3    "params": dict  # 增强的参数
4}
默认情况下,我们支持 albumentations 库中的大多数增强。 您可以在 Albumentations 文档 中找到增强及其参数的完整列表。 此外,我们还提供了一些自定义的批量增强:
  • Mosaic4 - 具有 4 张图像的 Mosaic 增强。将 4 张图像的裁剪图以马赛克图案组合成一张图像。
  • MixUp - MixUp 增强。以随机权重叠加两张图像。
每个增强条目还可以定义 use_for_resizing: true,当您希望该变换显式处理重定时使用。

示例

以下示例演示了一个简单的增强管道:
Python
1[
2  {
3    'name': 'HueSaturationValue',
4    'params': {
5      'p': 0.5,
6      'hue_shift_limit': 3,
7      'sat_shift_limit': 70,
8      'val_shift_limit': 40,
9    }
10  },
11  {
12    'name': 'Rotate',
13    'params': {
14      'p': 0.6,
15      'limit': 30,
16      'border_mode': 0,
17      'value': [0, 0, 0]
18    }
19  },
20  {
21    'name': 'Perspective',
22    'params': {
23      'p': 0.5,
24      'scale': [0.04, 0.08],
25      'keep_size': True,
26      'pad_mode': 0,
27      'pad_val': 0,
28      'mask_pad_val': 0,
29      'fit_output': False,
30      'interpolation': 1,
31      'always_apply': False,
32    }
33  },
34  {
35    'name': 'Affine',
36    'params': {
37      'p': 0.4,
38      'scale': None,
39      'translate_percent': None,
40      'translate_px': None,
41      'rotate': None,
42      'shear': 10,
43      'interpolation': 1,
44      'mask_interpolation': 0,
45      'cval': 0,
46      'cval_mask': 0,
47      'mode': 0,
48      'fit_output': False,
49      'keep_ratio': False,
50      'rotate_method': 'largest_box',
51      'always_apply': False,
52    }
53  },
54]
假设上面的增强列表存储在名为 augmentations.yamlYAML 文件中。 然后,我们可以使用它来创建一个加载器:
Python
1from luxonis_ml.data.datasets import LuxonisDataset
2from luxonis_ml.data.loaders import LuxonisLoader
3
4dataset_name: str = ...
5dataset = LuxonisDataset(dataset_name)
6loader = LuxonisLoader(
7    dataset,
8    view="train", 
9    augmentation_config="augmentations.yaml", 
10    augmentation_engine="albumentations",  # 默认
11    height=256,
12    width=320,
13    keep_aspect_ratio=True, # 默认
14    color_space="RGB",  # 默认,也可以是 BGR
15)
16for img, labels in loader:
17    ...

其他加载器选项

当前的加载器还支持一些在大型训练管道中很重要的有用选项:
  • exclude_empty_annotations=True 以从最终标签字典中删除空的标签条目
  • filter_task_names=[...] 以仅从多任务数据集中加载选定的任务组
  • keep_categorical_as_strings=True 以将分类元数据值保留为字符串而不是编码的整数
  • color_space={...} 以在处理多源数据集时为每个源设置颜色空间
  • update_mode="all""missing" 以控制远程数据集的本地同步行为
有关完整的构造函数签名和返回类型,请参阅 API 参考