Module coco

Module coco 

Source
Expand description

§COCO Dataset Format Support

This module provides comprehensive support for the COCO (Common Objects in Context) dataset format, enabling bidirectional conversion between COCO and EdgeFirst formats.

§Supported Workflows

  1. COCO → EdgeFirst Arrow: Convert COCO JSON/ZIP to Arrow-based EdgeFirst format
  2. EdgeFirst Arrow → COCO: Convert Arrow format back to COCO JSON
  3. COCO → Studio: Import COCO directly into EdgeFirst Studio via API
  4. Studio → COCO: Export Studio dataset to COCO format

§Scope

Phase 1 supports:

  • Bounding boxes (box2d)
  • Polygon segmentation (mask)
  • RLE segmentation (decoded to polygons)

Not yet supported: keypoints, captions, panoptic segmentation.

§Example

use edgefirst_client::coco::{CocoReader, CocoToArrowOptions, coco_to_arrow};

// Read COCO annotations
let reader = CocoReader::new();
let dataset = reader.read_json("annotations/instances_val2017.json")?;
println!(
    "Found {} images and {} annotations",
    dataset.images.len(),
    dataset.annotations.len()
);

// Convert to EdgeFirst Arrow format
let options = CocoToArrowOptions::default();
let count = coco_to_arrow(
    "annotations/instances_val2017.json",
    "dataset.arrow",
    &options,
    None,
)
.await?;
println!("Converted {} samples", count);

Re-exports§

pub use studio::CocoExportOptions;
pub use studio::CocoImportOptions;
pub use studio::CocoImportResult;
pub use studio::CocoUpdateOptions;
pub use studio::CocoUpdateResult;
pub use studio::CocoVerifyOptions;
pub use studio::export_studio_to_coco;
pub use studio::import_coco_to_studio;
pub use studio::update_coco_annotations;
pub use studio::verify_coco_import;
pub use verify::BboxValidationResult;
pub use verify::CategoryValidationResult;
pub use verify::MaskValidationResult;
pub use verify::VerificationResult;

Modules§

studio
COCO import/export for EdgeFirst Studio.
verify
COCO dataset verification utilities.

Structs§

ArrowToCocoOptions
Options for Arrow to COCO conversion.
CocoAnnotation
Annotation for object detection and instance segmentation.
CocoCategory
Category definition.
CocoCompressedRle
Compressed RLE segmentation (LEB128 encoded).
CocoDataset
Top-level COCO dataset structure.
CocoImage
Image metadata.
CocoIndex
Lookup tables for efficient COCO data access.
CocoInfo
Dataset metadata.
CocoLicense
License information.
CocoReadOptions
Options for COCO reading.
CocoReader
Streaming COCO reader for large datasets.
CocoRle
Uncompressed RLE (Run-Length Encoding) segmentation.
CocoToArrowOptions
Options for COCO to Arrow conversion.
CocoWriteOptions
Options for COCO writing.
CocoWriter
COCO writer for generating JSON and ZIP files.

Enums§

CocoSegmentation
Segmentation format: polygon array or RLE.

Functions§

arrow_to_coco
Convert EdgeFirst Arrow format to COCO annotations.
box2d_to_coco_bbox
Convert EdgeFirst Box2d to COCO bbox [x, y, w, h] (top-left, pixels).
calculate_coco_area
Calculate area from COCO segmentation (in pixels²).
coco_bbox_to_box2d
Convert COCO bbox [x, y, w, h] (top-left, pixels) to EdgeFirst Box2d (top-left, normalized).
coco_polygon_to_mask
Convert COCO polygon segmentation to EdgeFirst Mask format.
coco_rle_to_mask
Convert RLE segmentation to EdgeFirst Mask.
coco_segmentation_to_mask
Convert any COCO segmentation to EdgeFirst Mask.
coco_to_arrow
Convert COCO annotations to EdgeFirst Arrow format.
decode_compressed_rle
Decode compressed RLE (LEB128) to binary mask.
decode_rle
Decode uncompressed RLE to binary mask.
infer_group_from_filename
Infer group name from COCO annotation filename.
infer_group_from_folder
Infer the group name from an image folder path.
mask_to_coco_polygon
Convert EdgeFirst Mask format to COCO polygon segmentation.
mask_to_contours
Convert binary mask to polygon contours.
read_coco_directory
Read all COCO annotation files from a directory.
validate_coco_bbox
Validate that a COCO bounding box is within image bounds.