快速入门
2.1 快速入门
在DSDL中,一个数据集会通过一个数据集描述文件来表示。
下面的例子为一个标准的数据集描述文件。
数据集描述文件可以是JSON格式或是YAML格式。
JSON格式:
{
"$dsdl-version": "0.5.0",
"meta": {
"name": "my-dataset",
"creator": "my-team",
"dataset-version": "1.0.0"
},
"defs": {
"MyClassDom": {
"$def": "class_domain",
"classes": [
"dog",
"cat",
"fish",
"tiger"
]
},
"ImageClassificationSample" : {
"$def": "struct",
"$fields": {
"image": "Image",
"label": "Label[dom=MyClassDom]"
}
}
},
"data": {
"sample-type": "ImageClassificationSample",
"sample-path": "$local",
"samples": [
{ "image": "xyz/0001.jpg", "label": "cat" },
{ "image": "xyz/0002.jpg", "label": "dog" }
]
}
}
YAML格式:
$dsdl-version: "0.5.0"
meta:
name: "my-dataset"
creator: "my-team"
dataset-version: "1.0.0"
defs:
MyClassDom:
$def: class_domain
classes:
- dog
- cat
- fish
- tiger
ImageClassificationSample:
$def: struct
$fields:
image: Image
label: Label[dom=MyClassDom]
data:
sample-type: ImageClassificationSample
sample-path: $local
samples:
- { image: "xyz/0001.jpg", label: "cat" }
- { image: "xyz/0002.jpg", label: "dog" }
JSON和YAML格式的数据集描述文件都可以准确地描述相同的数据结构。
由于YAML格式的内容更加简洁,并且允许注释,因此我们使用YAML格式作为本文档中后续示例的默认格式。YAML格式也可以很容易地转换为等价的JSON格式。
首先,一个数据集描述文件可以被大致分为四个部分:
- header:指明了当前的数据集描述文件需要被如何解析;
- meta section:提供了当前数据集的一些元信息;
- defs section:提供了一些全局的定义,比如:用户定义的类别域(class domain)和结构体(struct);
- data section:描述了数据集中的样本数据
注意:
- 带有前缀
$
的属性名为在DSDL中预留的有特殊含义的属性名。- DSDL版本(header中属性名为
$dsdl-version
)必须被明确地指明。因为DSDL解释器需要通过该属性知道当前文件的版本信息,从而正确的解析当前的数据集描述文件。- 通常情况下,一些通用类型的定义一般在标准库或扩展库中有提供。大多数情况下,用户不需要自己定义类别。在上面的例子中,我们定义
ImageClassificationSample
只是为了演示以及使该例子具有独立性。