CIFAR-100 Dataset

Fine-grained image classification dataset (Krizhevsky, 2009).

Overview

  • Embedded: 100 samples (1 per fine class)
  • Full (hf-hub): 60,000 samples
  • Features: 3,072 pixels (32x32x3 RGB)
  • Fine classes: 100 object categories
  • Coarse classes: 20 superclasses
  • Task: Hierarchical multi-class classification

Loading

use alimentar::datasets::{cifar100, CanonicalDataset};

let dataset = cifar100()?;
assert_eq!(dataset.len(), 100);
assert_eq!(dataset.num_features(), 3072);
assert_eq!(dataset.num_classes(), 100);

Hierarchical Labels

CIFAR-100 provides two label levels:

// Schema includes both label types
// - fine_label: 0-99 (100 specific classes)
// - coarse_label: 0-19 (20 superclasses)

Class Names

use alimentar::datasets::{Cifar100Dataset, CIFAR100_FINE_CLASSES, CIFAR100_COARSE_CLASSES};

// Fine classes (100)
let fine = Cifar100Dataset::fine_class_name(0);   // Some("apple")
let fine = Cifar100Dataset::fine_class_name(99);  // Some("worm")

// Coarse classes (20)
let coarse = Cifar100Dataset::coarse_class_name(0);  // Some("aquatic_mammals")
let coarse = Cifar100Dataset::coarse_class_name(19); // Some("vehicles_2")

Superclass Mapping

Coarse ClassFine Classes (examples)
aquatic_mammalsbeaver, dolphin, otter, seal, whale
fishaquarium_fish, flatfish, ray, shark, trout
flowersorchid, poppy, rose, sunflower, tulip
fruit_and_vegetablesapple, mushroom, orange, pear, sweet_pepper
vehicles_1bicycle, bus, motorcycle, pickup_truck, train
vehicles_2lawn_mower, rocket, streetcar, tank, tractor

Full Dataset

[dependencies]
alimentar = { version = "0.1", features = ["hf-hub"] }
let full = Cifar100Dataset::load_full()?;

Train/Test Split

let dataset = cifar100()?;
let split = dataset.split()?;
assert_eq!(split.train.len(), 80);
assert_eq!(split.test.len(), 20);

Reference

Krizhevsky, A. (2009). "Learning Multiple Layers of Features from Tiny Images." Technical Report, University of Toronto.