class documentation

Parse a directory with COCO annotations into LDF.

Expected formats:

dataset_dir/
├── train/
│   ├── data/
│   │   ├── img1.jpg
│   │   ├── img2.jpg
│   │   └── ...
│   └── labels.json
├── validation/
│   ├── data/
│   └── labels.json
└── test/
    ├── data/
    └── labels.json

This is default format returned when using FiftyOne package.

or:

dataset_dir/
    ├── train/
    │   ├── img1.jpg
    │   ├── img2.jpg
    │   └── ...
    │   └── _annotations.coco.json
    ├── valid/
    └── test/

This is one of the formats that Roboflow can generate.
Class Method discover_dir_splits Return present and valid split directories keyed by their canonical split names.
Class Method validate Validate whether the dataset directory has the expected format.
Static Method validate_split Validate whether a split directory has the expected format.
Method from_dir Parse all COCO splits in a source dataset directory.
Method from_split Parse COCO annotations into LDF records.
Static Method _detect_dataset_dir_format Detect whether a dataset uses FiftyOne or Roboflow layout.
Static Method _is_coco_json Check if JSON file has required COCO format fields.
Method _finalize_split_definitions Undocumented
Method _parse_available_splits Undocumented
Method _resolve_dir_format_and_keypoint_paths Undocumented

Inherited from BaseParser:

Method __init__ Create a parser for a target dataset.
Method get_parser_issue_messages Return parser issue messages collected during the last parse.
Method parse_dir Parse an entire dataset directory into the target dataset.
Method parse_split Parse one split subdirectory into the target dataset.
Method reset_parser_issue_messages Clear collected parser issue messages.
Static Method _apply_counts_to_pool Distribute images across splits based on requested counts.
Static Method _apply_counts_to_splits Apply count-based split requests to existing splits.
Static Method _canonicalize_split_name All current parsers use train and test split names whereas validation splits can vary in name between val valid and validation.
Static Method _compare_stem_files Compare sets of files by stem.
Static Method _get_added_images Return unique images yielded by a dataset generator.
Static Method _list_images List OpenCV-supported images in a directory.
Static Method _sample_from_splits Sample from each original split independently.
Method _get_parser_issue_messages Return parser issue messages collected during the last parse.
Method _log_skipped_annotation_summary Undocumented
Method _parse_split Parse data in one split subdirectory.
Method _remove_unsplit_records Remove records that are not assigned to any split.
Method _reset_parser_issue_messages Clear collected parser issue messages and warning counters.
Method _warn_skipped_annotation Undocumented
Method _wrap_generator Add configured task names to generated records.
Constant _CANONICAL_SPLIT_NAMES Undocumented
Constant _SKIPPED_WARNING_LIMIT Undocumented
Constant _SPLIT_NAMES Undocumented
Instance Variable _dataset Undocumented
Instance Variable _dataset_type Undocumented
Instance Variable _full_warnings Undocumented
Instance Variable _logged_skipped_annotation_warnings Undocumented
Instance Variable _parser_issue_messages Undocumented
Instance Variable _seen_parser_issue_messages Undocumented
Instance Variable _skipped_annotation_counts_by_reason Undocumented
Instance Variable _suppressed_skipped_annotation_warnings Undocumented
Instance Variable _task_name Undocumented
@classmethod
@override
def discover_dir_splits(cls, dataset_dir: Path) -> dict[str, dict[str, Any]]:

Return present and valid split directories keyed by their canonical split names.

@classmethod
def validate(cls, dataset_dir: Path) -> bool:

Validate whether the dataset directory has the expected format.

Parameters
dataset_dir:PathSource dataset directory.
Returns
boolWhether the dataset is in the expected format.
@staticmethod
def validate_split(split_path: Path) -> dict[str, Any] | None:

Validate whether a split directory has the expected format.

Parameters
split_path:PathPath to a split directory.
Returns
dict[str, Any] | NoneKeyword arguments for from_split, or None if the split is not in the expected format.
def from_dir(self, dataset_dir: Path, use_keypoint_ann: bool = False, keypoint_ann_paths: dict[str, str] | None = None, split_val_to_test: bool = True) -> tuple[list[Path], list[Path], list[Path]]:

Parse all COCO splits in a source dataset directory.

Parameters
dataset_dir:PathSource dataset directory.
use_keypoint_ann:boolWhether to use separate COCO keypoint annotation files for FiftyOne-style datasets.
keypoint_ann_paths:dict[str, str] | NoneOptional paths to keypoint annotation files, relative to dataset_dir and keyed by "train", "val", and "test".
split_val_to_test:boolWhether to split validation images 50 ⁄ 50 into validation and test when no test annotations are available.
Returns
tuple[list[Path], list[Path], list[Path]]Added images for the train, validation, and test splits.
Raises
ValueErrorIf the dataset directory, train split, validation split, or present test split is not in a recognized COCO layout.
def from_split(self, image_dir: Path, annotation_path: Path) -> ParserOutput:

Parse COCO annotations into LDF records.

Annotations include classification, segmentation, object detection, and keypoints when present.

Parameters
image_dir:PathDirectory with images.
annotation_path:PathAnnotation JSON file.
Returns
ParserOutputParser output containing annotation records, skeleton metadata, and added images.
@staticmethod
def _detect_dataset_dir_format(dataset_dir: Path) -> tuple[COCOFormat | None, list[str]]:

Detect whether a dataset uses FiftyOne or Roboflow layout.

@staticmethod
def _is_coco_json(json_path: Path) -> bool:

Check if JSON file has required COCO format fields.

def _finalize_split_definitions(self, split_definitions: dict[str, list[Path]], split_val_to_test: bool) -> dict[str, list[Path]]:

Undocumented

@override
def _parse_available_splits(self, dataset_dir: Path, use_keypoint_ann: bool = False, keypoint_ann_paths: dict[str, str] | None = None, split_val_to_test: bool = True) -> dict[str, list[Path]]:
def _resolve_dir_format_and_keypoint_paths(self, dataset_dir: Path, use_keypoint_ann: bool, keypoint_ann_paths: dict[str, str] | None) -> tuple[COCOFormat, list[str], dict[str, str] | None]:

Undocumented