Repository navigation
Limitations and Roadmap
HIManish-G edited this page Nov 9, 2026
·
3 revisions
An honest list of what vidlabel does not do, what has not been verified, and what is deliberately left out.
| not included | why, and what to do |
|---|---|
| importers and exporters for COCO, YOLO, MOT, CVAT, ... | formats vary too much for one library to cover well. Write a converter on add_annotations (guide); a tested example is in examples/convert_csv.py
|
| a labelling interface | vidlabel is the format and library between labelling tools and training code. A local web interface (vidlabel ui) can browse, review, validate and release; drawing boxes, spans and masks works on the whole frame and inside a view; accessibility was checked by tools, not by assistive-technology users; drawing masks needs a pointer (see Web interface) |
| storing video pixels | datasets reference videos by path hint and content hash |
| sampling policy (class balancing, weighting, curriculum) | it is the user's decision; vidlabel arranges cheap reading of the frames you choose (ReadPlan) |
| keypoints, polygons, image-level classes as dedicated kinds | the three kinds are marker, box, mask. Keypoints and polygons can go in extra for now or be rasterised to masks; a new kind needs a spec change |
| a database or server | plain files by design |
- One writer per video. Writes are atomic but not locked; two people editing the same video can overwrite each other's changes. Different videos never conflict.
-
Release ids are not content-derived. The id hashes the Parquet file's bytes, which include random annotation ids, so re-creating
a dataset from a script gives a new id. Share the folder, including
compiled/(releases). - One table per video. Many tiny videos (or images registered as one-frame videos) mean many small files. Millions of rows across hundreds of videos work; tens of thousands of videos have not been tried.
- Labels cannot be renamed or deleted by a command; see how-to.
-
Single-frame boxes and masks. A tracked object is one row per frame, linked by
track_id; interpolation between keyframes is not built in. -
The loader cannot see a small trim or a re-encode of the same length. It warns when a file's frame count clearly differs from the
metadata. Only
vidlabel check-video --hashproves it is the same file. -
Random access has a floor of roughly 25 to 30 ms per seek in OpenCV, whatever the keyframes.
ReadPlanand the cache are the answers. - No importer means no free ride from existing data. Converting is a small script, but it is a script you write.
| area | status |
|---|---|
| Windows and macOS | tested in CI only (Python 3.12), not by hand; no timings |
| codecs and containers other than H.264 in MP4 | untested |
| real variable-frame-rate datasets | the logic is tested on constructed files only |
| Parquet against alternatives (Lance and others) at scale | no head-to-head benchmark |
| several simultaneous writers | unsupported |
| many-GPU training, very large datasets | untested |
the effect of ReadPlan on training quality beyond one small test |
see performance |
| satellite data | tested with derived (not human) labels on real imagery; no labelled satellite video was available |
| PyPI release | not done |
- Testing the local web interface with assistive technology and on touch and pen screens; a keyboard way to draw masks (design).
- Publish to PyPI; add changelog automation and a signed release process.
- Decide on image collections (many images in one table) if people ask for them: single images already work as one-frame videos.
- More annotation kinds (keypoints, polygons) if a clear need appears; each needs a spec change and validator rules.
Have a case that does not fit? The extra field and x- origins exist so that you do not have to wait for the format to change.
Source: docs/limitations.md
vidlabel 0.6.0 · pages are generated from the repository's docs/ folder; to change one, edit docs/ and run python docs/build_wiki.py.
Start here
Tutorials
Guides
Reference
Background
- Architecture
- Design decisions
- Performance
- Compatibility and versioning
- Limitations and roadmap
- Security
- Web interface design
Project