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")view 可以是单个拆分,也可以是拆分列表。for 循环来迭代数据:Python
1for images, labels in loader:
2 ...images 通常是一个单独的图像数组。对于多源数据集,它可以是一个以源或组件名称为键的字典。labels 输出按任务名称分组。数据增强
LuxonisLoader 构造函数的 augmentation_config 参数传递一个 Python 字典列表来定义它们,每个字典代表一个单独的增强操作:Python
1{
2 "name": str, # 增强操作的名称
3 "params": dict # 增强 操作的参数
4}albumentations 库的大部分增强操作。您可以在 Albumentations 文档 中找到完整的增强操作列表及其参数。此外,我们还提供了一些自定义的批量增强操作:Mosaic4- 使用 4 张图像的马赛克增强。将 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.yaml 的 YAML 文件中。然后我们可以使用它来创建一个加载器: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"用于控制远程数据集的本地同步行为