Datasets¶
Hierarchy¶
Data in CN24 is managed in a three-level hierachy:
- Areas designate the data’s experimental purpose. There are 3 default areas: training, staging and testing.
- Bundles are the default unit of dataset serialization. They can be moved freely between areas. Bundles in the training Area can be assigned a weight that influences the likelihood of selecting training samples from them.
- Segments contain the samples themselves. They can be moved freely between Bundles. They exist to group samples, e.g., training and validation samples or samples of different classes.
CN24 will create two empty default Bundles: Default_Training and Default_Testing
Area Bundle Segment Samples
Training
|..............Default_Training 95
|..................Weight: 1
|.......................UM_road 95
Staging
|.............KITTIRoadTraining 193
|.......................UM_lane 95
|.......................UU_road 98
Testing
|...............Default_Testing 96
|......................UMM_road 96
Data Format¶
Data is provided to CN24 in the form of serialized Bundles. The serialization method of choice is JSON, provided by nlohnmann’s JSON library.
The Bundle format is best explained by an example:
{
"name": "SampleBundle",
"segments:" [
{
"name": "SampleSegmentA",
"samples": [ ]
},
{
"name": "SampleSegmentB",
"samples": [ ]
}
]
}
The samples themselves are JSON objects as well. Their exact schema depends on the task.
Detection¶
CN24 supports detection using the YOLO method. Samples need to specify the following:
- image_filename: Input image file
- boxes: JSON array of bounding boxes
Bounding boxes have the following properties:
- x, y: Coordinates of the center of the bounding box (pixels)
- w, h: Width and height of the bounding box (pixels)
- class: Class of the object inside the bounding box
Optionally, you can specificy these:
- difficult: If set to 1, the box is ignored during testing
- dont_scale: Instead of pixels, the coordinates and dimensions of the box are specified as normalized fractions of the image dimensions
The following is an example from the PASCAL VOC dataset:
{
"boxes": [
{
"class": "bird",
"difficult": 0,
"h": 286,
"w": 156,
"x": 338,
"y": 190
}
],
"image_filename": "2011_003213.jpg"
}
Classification¶
Binary Segmentation¶
Samples for binary segmentation consist of two image files with equal dimensions. One is the actual input image and the other the label image. At the moment, only binary segmentation is supported. Grayscale label images are preferred. However, CN24 will also accept RGB images as labels. In this case, the value of the third channel will be used as a label.
The following properties need to be specified:
- image_filename: Input image file
- label_filename: Label file
Optionally, you can supply a value for localized_error_function. Currently, the only supported values are default and kitti.
The following is an example from the KITTI-Vision Road Dataset:
{
"label_filename": "gt_image_2/umm_road_000049.png",
"localized_error_function": "kitti",
"image_filename": "image_2/umm_000049.png"
}