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

LuxonisParser

概述

LuxonisParser 提供了一个简单的 API,可用于从几种常见的数据集格式创建数据集。这包括流行的 Roboflow 导出的布局、Ultralytics 风格的数据集、Luxonis 原生的 LDF 数据集以及一些专用格式,例如 SOLO:

- COCO

我们支持两种格式的 COCO JSON 格式:
Plain Text
1dataset_dir/
2    ├── train/
3    │   ├── data/
4    │   │   ├── img1.jpg
5    │   │   ├── img2.jpg
6    │   │   └── ...
7    │   └── labels.json
8    ├── validation/
9    │   ├── data/
10    │   └── labels.json
11    └── test/
12        ├── data/
13        └── labels.json
Plain Text
1dataset_dir/
2    ├── train/
3    │   ├── img1.jpg
4    │   ├── img2.jpg
5    │   └── ...
6    │   └── _annotations.coco.json
7    ├── valid/
8    └── test/
  • Roboflow 格式(支持 YOLOv8-v12)
Plain Text
1dataset_dir/
2    ├── train/
3    │   ├── images/
4    │   │   ├── img1.jpg
5    │   │   ├── img2.jpg
6    │   │   └── ...
7    │   ├── labels/
8    │   │   ├── img1.txt
9    │   │   ├── img2.txt
10    │   │   └── ...
11    ├── valid/
12    ├── test/
13    └── *.yaml
  • Ultralytics 格式
Plain Text
1dataset_dir/
2    ├── images/
3    │   ├── train/
4    │   │   ├── img1.jpg
5    │   │   ├── img2.jpg
6    │   │   └── ...
7    │   ├── val/
8    │   └── test/
9    ├── labels/
10    │   ├── train/
11    │   │   ├── img1.txt
12    │   │   ├── img2.txt
13    │   │   └── ...
14    │   ├── val/
15    │   └── test/
16    └── *.yaml
Plain Text
1dataset_dir/
2    ├── train/
3    │   ├── img1.jpg
4    │   ├── img1.xml
5    │   └── ...
6    ├── valid/
7    └── test/
Plain Text
1dataset_dir/
2    ├── train/
3    │   ├── img1.jpg
4    │   ├── img1.txt
5    │   ├── ...
6    │   └── _darknet.labels
7    ├── valid/
8    └── test/
Plain Text
1dataset_dir/
2    ├── train/
3    │   ├── img1.jpg
4    │   ├── img2.jpg
5    │   ├── ...
6    │   ├── _annotations.txt
7    │   └── _classes.txt
8    ├── valid/
9    └── test/
Plain Text
1dataset_dir/
2    ├── images/
3    │   ├── train/
4    │   │   ├── img1.jpg
5    │   │   ├── img2.jpg
6    │   │   └── ...
7    │   ├── valid/
8    │   └── test/
9    ├── labels/
10    │   ├── train/
11    │   │   ├── img1.txt
12    │   │   ├── img2.txt
13    │   │   └── ...
14    │   ├── valid/
15    │   └── test/
16    └── data.yaml
Plain Text
1dataset_dir/
2    ├── train/
3    │   ├── img1.jpg
4    │   ├── img2.jpg
5    │   └── ...
6    │   └── _annotations.createml.json
7    ├── valid/
8    └── test/
Plain Text
1dataset_dir/
2    ├── train/
3    │   ├── img1.jpg
4    │   ├── img2.jpg
5    │   ├── ...
6    │   └── _annotations.csv
7    ├── valid/
8    └── test/
Plain Text
1dataset_dir/
2    ├── train/
3    │   ├── metadata.json
4    │   ├── sensor_definitions.json
5    │   ├── annotation_definitions.json
6    │   ├── metric_definitions.json
7    │   └── sequence.<SequenceNUM>/
8    │       ├── step<StepNUM>.camera.jpg
9    │       ├── step<StepNUM>.frame_data.json
10    │       └── (OPTIONAL: step<StepNUM>.camera.semantic segmentation.jpg)
11    ├── valid/
12    └── test/

- 分类目录

一个包含每个类别子目录的目录。支持两种结构:
  • 带有 train/valid/test 子目录的拆分结构:
Plain Text
1dataset_dir/
2    ├── train/
3    │   ├── class1/
4    │   │   ├── img1.jpg
5    │   │   ├── img2.jpg
6    │   │   └── ...
7    │   ├── class2/
8    │   └── ...
9    ├── valid/
10    └── test/
  • 扁平结构(类别子目录直接放在根目录,在解析时应用随机拆分):
Plain Text
1dataset_dir/
2    ├── class1/
3    │   ├── img1.jpg
4    │   └── ...
5    ├── class2/
6    │   └── ...
7    └── info.json  (可选元数据文件)
FiftyOneImageClassificationDataset 格式,图像位于 data/ 文件夹中,标签位于 labels.json 中。支持两种结构:
  • 带有 train/validation/test 子目录的拆分结构:
Plain Text
1dataset_dir/
2    ├── train/
3    │   ├── data/
4    │   │   ├── img1.jpg
5    │   │   └── ...
6    │   └── labels.json
7    ├── validation/
8    │   ├── data/
9    │   └── labels.json
10    └── test/
11        ├── data/
12        └── labels.json
  • 扁平结构(在解析时应用随机拆分):
Plain Text
1dataset_dir/
2    ├── data/
3    │   ├── img1.jpg
4    │   └── ...
5    └── labels.json
labels.json 格式:
JSON
1{
2    "classes": ["class1", "class2", ...],
3    "labels": {
4        "image_stem": class_index,
5        ...
6    }
7}

- Native LDF

原生 Luxonis 数据集导出,带有拆分级别的 annotations.json 文件。
Plain Text
1dataset_dir/
2    ├── train/
3    │   └── annotations.json
4    ├── valid/
5    └── test/

- Segmentation Mask Directory

一个包含图像和相应掩码的目录。
Plain Text
1dataset_dir/
2    ├── train/
3    │   ├── img1.jpg
4    │   ├── img1_mask.png
5    │   ├── ...
6    │   └── _classes.csv
7    ├── valid/
8    └── test/
掩码存储为灰度 PNG 图像,其中每个像素值对应一个类。 像素值与类之间的映射定义在 _classes.csv 文件中。
Csv
1Pixel Value, Class
20, background
31, class1
42, class2
53, class3

数据集解析

解析从使用数据集目录路径初始化 LuxonisParser 对象开始。 可选地,您可以指定数据集的名称、任务名称和类型(即格式)(默认情况下,名称设置为所提供数据集目录的名称,类型根据数据集目录结构推断)。 数据集目录可以是本地目录的路径,也可以是远程数据集标识符。该解析器目前接受本地路径、.zip 存档、gcs://...s3://...roboflow://workspace/project/version/format 数据集标识符。 您也可以将数据集目录提供为 .zip 文件。
Python
1from luxonis_ml.data.parsers import LuxonisParser
2from luxonis_ml.enums import DatasetType
3
4dataset_dir = "roboflow://workspace/project/version/coco"
5
6parser = LuxonisParser(
7    dataset_dir=dataset_dir,
8    dataset_name="my_dataset",
9    dataset_type=DatasetType.COCO,
10    task_name="detection",
11)
初始化 LuxonisParser 对象后,可以通过调用其 .parse() 方法来运行解析:
Python
1dataset = parser.parse()
这将创建一个包含来自提供的数据集的数据的 LuxonisDataset 实例,并在源格式定义它们时保留原始拆分。如果数据集已以 Luxonis 格式存在,则会跳过解析并返回现有数据集。

CLI 参考

可以通过使用 luxonis_ml data parse 命令调用解析功能。
Command Line
1luxonis_ml data parse path/to/dataset --name my_dataset --type coco
有关更详细的信息,请运行 luxonis_ml data parse --help