Data Formats
DIVE Desktop and Web support a number of annotation and configuration formats. The following formats can be uploaded or imported alongside your media and will be automatically parsed.
- DIVE Annotation JSON (default annotation format)
- DIVE Configuration JSON
- VIAME CSV
- KPF (KWIVER Packet Format)
- COCO and KWCOCO
DIVE Annotation JSON
Info
The current DIVE schema version is v2. Version 2 was introduced in DIVE version 1.9.0. It is backward-compatible with v1.
Files are typically named result_{dataset-name}.json. Their schema is described as follows.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | |
Reserved Attribute Names
Reserved Attribute Names
Certain attribute names are reserved by DIVE and cannot be used when creating custom attributes. Attempting to create attributes with these names will result in an error.
Reserved Detection Attributes (stored in Feature.attributes):
- rotation: Used to store the rotation angle in radians for rotated bounding boxes. When present, the bounds field represents an axis-aligned bounding box, and the actual rotated rectangle is computed by applying this rotation around the bbox center. Only stored if rotation is significant (|rotation| > 0.001 radians).
- userModified: Internal flag used by DIVE to track user modification status.
Reserved Track Attributes (stored in TrackData.attributes):
- userCreated: Internal flag used by DIVE to track user creation status.
These reserved names are enforced at both the UI level (when creating attributes) and the API level (when saving attributes). If you need to use similar names, consider alternatives like rotationAngle, isUserModified, or isUserCreated.
The full source TrackData definition can be found here as a TypeScript interface.
Example JSON File
This is a relatively simple example, and many optional fields are not included.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | |
DIVE Configuration JSON
This information provides the specification for an individual dataset. It consists of the following.
- Allowed types (or labels) and their appearances are defined by
customTypeStylingandcustomGroupStyling. - Preset confidence filters for those types are defined in
confidenceFilters - Track and Detection attribute specifications are defined in
attributes
The full DatasetMetaMutable definition can be found here.
1 2 3 4 5 6 7 8 | |
VIAME CSV
Read the VIAME CSV Specification.
Warning
VIAME CSV is the format that DIVE exports to. It doesn't support all features of the annotator (like groups) so you may need to use the DIVE Json format. It's easier to work with.
KWIVER Packet Format (KPF)
DIVE supports MEVA KPF
- Read the KPF Specification
- See example data in meva-data-repo
Info
KPF is typically broken into 3 files, but DIVE only supports annotations being loaded as a single file. However, the 3-file breakdown is just convention and KPF can be loaded from a single combined file.
1 2 | |
COCO and KWCOCO
DIVE Web and Desktop can import and export COCO for a single dataset at a time (an image-sequence dataset or a single video dataset). KWCOCO-compatible files are also accepted on import.
- Read the COCO Specification
- Read the KWCOCO Specification
Export Notes
- For image-sequence datasets, exported
images[].file_nameuses dataset image filenames. - For video datasets, DIVE exports per-frame synthetic names (for example,
frame_000123.jpg) because base COCO does not define a canonical video container field.
DIVE COCO Attribute Extensions
COCO does not define standard fields for arbitrary track or detection attributes.
To preserve DIVE attributes during COCO export/import, DIVE uses extension fields
on each COCO annotation object:
dive_detection_attributes: Detection/frame-level attributes (maps toFeature.attributes)dive_track_attributes: Track-level attributes (maps toTrack.attributes)
These extension keys are declared in the COCO info object as:
info.dive_extensions = ["dive_detection_attributes", "dive_track_attributes"]
Extension Field Details
The DIVE extension fields are JSON objects with user-defined key/value pairs. Values are typically strings, numbers, or booleans.
annotation.dive_detection_attributes- Scope: one COCO annotation (one frame-level detection)
- DIVE mapping:
Track.features[i].attributes annotation.dive_track_attributes- Scope: logical track identity across frames (
track_id) - DIVE mapping:
Track.attributes
When importing, DIVE merges any keys in these objects into the target detection/track attribute dictionaries. If the same key appears in multiple annotations belonging to the same track, later imported entries may overwrite earlier values for that track-level key.
Round-Trip Behavior
For COCO files produced by DIVE:
- DIVE writes
info.dive_extensionsto advertise the extension keys used. - DIVE writes
dive_detection_attributesanddive_track_attributeson each annotation when attributes are present. - Re-importing that file into DIVE preserves those attributes.
For COCO files not produced by DIVE:
- DIVE still imports standard COCO fields (
bbox, optional polygonsegmentation, optional keypoints), and reads extension fields when present.
Supported / Unsupported COCO Features
- Supported:
- Bounding boxes (
bbox) - Polygon segmentations in list format (
segmentation: [[x1, y1, ...]]) - Head/tail keypoints from category keypoint labels
- Partially supported:
- COCO has no direct equivalent for DIVE groups, so groups are not represented in COCO export.
- Unsupported:
- Run-length encoded segmentations (RLE)
Example COCO Annotation with DIVE Extensions
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | |