Skip to content

DetectionDataset.as_coco having annotation id collision between splits #768

@adbcode

Description

@adbcode

Search before asking

  • I have searched the Supervision issues and found no similar bug report.

Bug

When exporting a YOLOv8 formatted dataset to COCO format (using the attached code), the JSON files associated with each split uses its own sequence for assigning annotation ID values.

This causes issues when trying to import the output dataset with other libraries, which expect a unique ID across all splits for each annotation.

Example from dataset with train, valid and test splits:

  • test
    image
  • train
    image
  • valid
    image

Kindly consider using a common sequence when generating annotation IDs for a dataset across splits.

Environment

Supervision 0.16.0

Minimal Reproducible Example

import supervision as sv

yolo = sv.DetectionDataset.from_yolo(
images_directory_path=f"{dataset_root}/images",
annotations_directory_path=f"{dataset_root}/labels",
data_yaml_path=f"{dataset_root}/data.yaml",
force_masks=True
)

yolo.as_coco(
images_directory_path=f"{target}/images",
annotations_path=f"{target}/annotations.json"
)

Additional

No response

Are you willing to submit a PR?

  • Yes I'd like to help by submitting a PR!

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions