LuxonisParser
概述
LuxonisParser 提供了一个简单的 API,用于从几种常见数据集格式创建数据集。这些格式包括流行的 Roboflow 导出版本、Ultralytics 风格数据集、Luxonis 原生 LDF 数据集,以及一些专用格式(如 SOLO):注意:解析 ZIP 文件时,请勿在归档中包含顶级的
dataset_dir 文件夹。根据所选格式,train、validation 和 test 目录应直接放置在 ZIP 归档的根目录下。- COCO
- FiftyOne layout(FiftyOne 布局)
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.jsonPlain 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 └── *.yamlPlain 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.yamlPlain 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/- SOLO
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 │ └── (可选: 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 (可选的元数据文件)data/ 文件夹中,标签位于 labels.json 中。支持两种结构:- 带训练/验证/测试子目录的分割结构:
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.jsonlabels.json 格式:JSON
1{
2 "classes": ["class1", "class2", ...],
3 "labels": {
4 "image_stem": class_index,
5 ...
6 }
7}- 原生 LDF
annotations.json 文件。Plain Text
1dataset_dir/
2 ├── train/
3 │ └── annotations.json
4 ├── valid/
5 └── test/- 分割掩码目录
Plain Text
1dataset_dir/
2 ├── train/
3 │ ├── img1.jpg
4 │ ├── img1_mask.png
5 │ ├── ...
6 │ └── _classes.csv
7 ├── valid/
8 └── test/_classes.csv 文件中定义。Csv
1像素值, 类别
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 cocoluxonis_ml data parse --help。