Datumaro: a Python library and CLI for converting and validating computer vision datasets
Dataset Management Framework, a Python library and a CLI tool to build, analyze and manage Computer Vision datasets.
At a glance
- What is it?
- Datumaro reads, transforms, splits and checks CV datasets across COCO, VOC, YOLO, CVAT and other formats through one Python API and a matching CLI. Its value is in the conversion and validation layer, not in training or annotation.
- Who is it for?
- Adopt Datumaro if your work is moving annotations between formats, merging sources, or splitting a dataset without breaking label distributions, and you are willing to pin a version and re-run your conversion tests on each upgrade; the release cadence in this repository is fast enough that an unpinned install will change under you. Do not adopt it as an annotation tool or a training framework, because it is neither.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The conversion and validation gap Datumaro targets
Most computer vision projects accumulate datasets in whatever format the tool that produced them used. A team may hold PASCAL VOC XML from an older pipeline, COCO JSON from a public release, YOLO text files from a quick training run, and CVAT exports from an in-house annotation effort. Training code expects one shape. Evaluation code expects another. Datumaro sits in that middle position: the README diagram shows VOC, COCO and CVAT annotations feeding into Datumaro, and Datumaro feeding an annotation tool, model training, or publication and statistics. The audience is therefore engineers maintaining dataset plumbing, not model researchers and not annotators. The library is written in Python and shipped under the MIT licence, with a CLI that exposes the same operations without writing code. If your problem is that you have four dataset directories and no single description of what is inside them, this is the category of tool you are looking for.
What the format list actually covers
The README enumerates the supported formats and, importantly, the task variants within each. COCO appears as image_info, instances, person_keypoints, captions, labels, panoptic and stuff. PASCAL VOC appears as classification, detection, segmentation, action_classification and person_layout. Kitti is listed with segmentation, detection and 3D raw or velodyne points. LFW covers classification, person re-identification and landmarks. CIFAR-10/100 and MNIST are classification only. YOLO is listed for bboxes, and the TF Detection API for bboxes and masks. That granularity matters more than the headline format names, because two projects both saying they use COCO can mean panoptic versus instances, and those are different conversion problems. The README also points to a separate formats page for formats beyond this list, which is where you should look before assuming your variant is covered. Nothing in the supplied material states how faithful a round trip is for any given format, so that is something to establish on your own data rather than assume.
Merging, filtering and splitting as first-class operations
Beyond conversion, the README describes a dataset building layer. Merging combines multiple datasets into one. Filtering removes items by criteria, and the examples given are concrete: remove polygons of a certain class, remove images without annotations of a specific class, remove occluded annotations, keep only vertically-oriented images, remove small-area bounding boxes. Annotation conversion is separate and includes polygons to instance masks and back, applying a custom colormap to mask annotations, and renaming or removing dataset labels. Splitting produces train, val and test subsets, either randomly or with task-specific logic that tries to preserve the initial label and attribute distributions. For detection the split is based on bboxes; for re-identification it avoids placing the same IDs in both training and test splits. That last behaviour is the kind of detail that is easy to get wrong by hand and expensive to discover after training, so it is a reasonable reason to use the tool even if you only ever consume one format.
Quality checking and statistics
The README lists dataset quality checking as a feature group: simple checking for errors, comparison with model inference, merging and comparison of multiple datasets, and annotation validation based on task type. Dataset statistics are also listed, including image mean and standard deviation and annotation statistics. Read this section of the README carefully, because the wording is deliberately modest. Simple checking for errors is not a schema validator with a published error taxonomy, and the README does not enumerate which error classes are detected. Comparison with model inference implies you can feed predictions in and have them compared against ground truth, but the material here does not describe the interface for that. The honest position is that these features exist and are documented in the user manual, and that you should read that manual before treating quality checking as a substitute for a purpose-built validation suite.
Getting it running: install, CLI and Python API
The README links a quick-start guide and a user manual rather than embedding install commands, so the exact invocation belongs to those pages. What the material does establish is the shape of the tool: a Python package named datumaro, importable as a library, with a CLI that performs the same read, convert, merge, filter, split and statistics operations from a shell. The homepage at open-edge-platform.github.io/datumaro hosts the documentation, including the architecture design document, the user manual and the developer manual with module reference. For an upgrade path, the releases in the supplied material are v1.13.11, v1.13.10 and v1.13.9, dated within roughly two weeks of each other in August and September 2026. That cadence is the practical fact to plan around: pin the version in your environment and treat an upgrade as a change to be re-tested, not a background event.
Where Datumaro is the wrong tool
Two boundaries are clear from the material. First, Datumaro is not an annotation tool. The README diagram places annotation tools upstream of it: CVAT output flows into Datumaro, not the reverse as a labelling interface. If your need is drawing boxes, this is not the project. Second, it is not a training framework. It prepares datasets for model training and compares datasets with model inference, but the README makes no claim about training, and there is no mention of model architectures, loss functions or GPU execution. A third limitation is subtler. A conversion layer is only as good as its handling of the parts of a format that do not map cleanly onto a common representation. Attributes, group ids, occlusion flags and class hierarchies differ between COCO, VOC and CVAT, and the README does not document a fidelity guarantee for any pair. If your dataset relies on a format-specific field, the round trip is the thing to test first, because a silent drop is far worse than a failed conversion.
How this differs from FiftyOne and from writing your own converters
FiftyOne is the closest well-known alternative in the same problem space: it also loads CV datasets across formats and offers a Python API plus a CLI. The difference in emphasis is visible in how each project describes itself. Datumaro's README is organised around conversion, merging, filtering, splitting and statistics, with a design document describing an internal dataset representation that formats map into and out of. FiftyOne is organised around exploring and curating datasets, with a strong interactive layer on top. If your task is a batch job in CI that converts VOC to COCO and validates the result, Datumaro's shape fits better. If your task is a human browsing samples to decide what to fix, the interactive side is the point and Datumaro's CLI is not competing there. The other alternative is a pile of per-format scripts, which works until you need a split that preserves label distribution or a merge across three sources, at which point you are reimplementing the parts of this project that are least fun to get right.
Licence, maintenance and what to verify before adopting
The repository is MIT-licensed, which is permissive and imposes few obligations beyond retaining the licence notice. That is a statement about the licence identifier in the repository metadata, not legal advice; check the LICENSE file in the tree and your own organisation's policy. Maintenance signals in the supplied material are a develop default branch, an active release series, a health check workflow, a code coverage badge and an OpenSSF Scorecard badge, plus a contributing guide and a developer manual. None of those guarantee that a specific format edge case is handled. The verification list is short and specific: confirm your format variant appears on the formats page, run a round trip on a small sample of your own data and diff the annotations rather than trusting the exit code, and pin the version you validated so the next release does not silently change conversion behaviour.
Editorial conclusion
Adopt Datumaro if your work is moving annotations between formats, merging sources, or splitting a dataset without breaking label distributions, and you are willing to pin a version and re-run your conversion tests on each upgrade; the release cadence in this repository is fast enough that an unpinned install will change under you. Do not adopt it as an annotation tool or a training framework, because it is neither. Before committing, verify that the specific format variant you need is listed in the format documentation, and check how your own dataset's attributes and group ids survive a round trip through the Datumaro representation.
Community notes