Datumaro Format#
So far, in the field of computer vision, there are various tasks such as classification, detection,
and segmentation, as well as pose estimation and visual tracking, and public data is used by providing
a format suitable for each task. Even within the same segmentation task, some data formats provide
annotation information as polygons, while others provide mask form. In order to ensure compatibility
with different tasks and formats, we provide a novel Datumaro format with .json
(Datumaro) or .datum
(DatumaroBinary) extensions.
A variety of metadata can be stored in the datumaro format. First of all, dm_format_version
field
is provided for backward compatibility to help with data version tracing and various metadata can be
added to the info
field. For example, you can record task types such as detection and segmentation,
or record data creation time. Labels and attributes can be saved in the categories
field, and mask
colormap information can be saved. In addition, in the datumaro format, in order to respond to
hierarchical classification or multi-label classification tasks, label_group
is provided to record
whether or not enabling multiple selection between labels in a group and the parent
is provided to
specify the parent label for each label. Finally, in the item
field, we can write the annotation
information for each media id, and additionally write the data path and data size.
Here is the example of json
annotation file:
{
"dm_format_version": "1.0",
"info": {
"task": "anomaly_detection",
"creation time": "2023.4.1"
},
"categories": {
"label": {
"labels": [
{
"name": "Normal",
"parent": "",
"attributes": []
},
{
"name": "Anomalous",
"parent": "",
"attributes": []
}
],
"label_groups": [
{
"name": "Label",
"group_type": "exclusive",
"labels": [
"Anomalous",
"Normal"
]
}
],
"attributes": []
},
"mask": {
"colormap": [
{
"label_id": 1,
"r": 255,
"g": 255,
"b": 255
}
]
}
},
"items": [
{
"id": "good_001",
"annotations": [
{
"id": 0,
"type": "label",
"attributes": {},
"group": 0,
"label_id": 0
}
],
"image": {
"path": "good_001.jpg",
"size": [
900,
900
]
}
},
{
"id": "broken_small_001",
"annotations": [
{
"id": 0,
"type": "bbox",
"attributes": {},
"group": 0,
"label_id": 1,
"z_order": 0,
"bbox": [
350.8999938964844,
151.3899993896484,
275.1399841308594,
126.4900054931640
]
}
],
"image": {
"path": "broken_small_001.jpg",
"size": [
900,
900
]
}
},
]
}
A Datumaro format directory have the following structure:
dataset/
├── dataset_meta.json # a list of non-format labels (optional)
├── images/
│ ├── train/ # directory with training images
│ | ├── img001.png
│ | ├── img002.png
│ | └── ...
│ ├── val/ # directory with validation images
│ | ├── img001.png
│ | ├── img002.png
│ | └── ...
│ └── ...
├── videos/ # directory to store video files
└── annotations/
├── train.json # annotation file with training data
├── val.json # annotation file with validation data
└── ...