Team Ai
Datasetpublic

Beothuk/cifar10-lt-federated

CIFAR-10 Long-Tail Federated Dataset Dataset Description This is a long-tailed version of CIFAR-10 designed for federated learning research. The dataset introduces class imbalance following an exponential decay distribution, making it ideal for studying long-tail classification in federated settings. Class Distribution (Training Set) The training set follows a long-tail distribution with imbalance factor 100: airplane (Class 0): 5,000 samples… See the full description on the dataset page: https://huggingface.co/datasets/Beothuk/cifar10-lt-federated.

sourceHugging Facemitupdated 1y agoView on Hugging Face
0likes35downloads
Dataset Card

CIFAR-10 Long-Tail Federated Dataset

Dataset Description

This is a long-tailed version of CIFAR-10 designed for federated learning research. The dataset introduces class imbalance following an exponential decay distribution, making it ideal for studying long-tail classification in federated settings.

Class Distribution (Training Set)

The training set follows a long-tail distribution with imbalance factor 100:

  • —airplane (Class 0): 5,000 samples
  • —automobile (Class 1): 2,997 samples
  • —bird (Class 2): 1,796 samples
  • —cat (Class 3): 1,077 samples
  • —deer (Class 4): 645 samples
  • —dog (Class 5): 387 samples
  • —frog (Class 6): 232 samples
  • —horse (Class 7): 139 samples
  • —ship (Class 8): 83 samples
  • —truck (Class 9): 50 samples

Actual Imbalance Ratio: 100.0:1 (Head:Tail)

Dataset Statistics

  • —Number of classes: 10
  • —Training samples: 12,406 (long-tail distribution)
  • —Test samples: 10,000 (balanced distribution)
  • —Image size: 32x32 pixels
  • —Channels: 3 (RGB)
  • —Head class samples: 5,000
  • —Tail class samples: 50

Dataset Structure

Data Fields

  • —img: PIL Image object (32x32x3)
  • —label: Integer class label (0-9)

Data Splits

  • —Train: 12,406 samples (long-tail distributed)
  • —Test: 10,000 samples (balanced for fair evaluation)

Class Labels

0: airplane 1: automobile 2: bird 3: cat 4: deer 5: dog 6: frog 7: horse 8: ship 9: truck

Usage with Flower Datasets

This dataset is optimized for federated learning research on long-tail classification:

python
from flwr_datasets import FederatedDataset
from flwr_datasets.partitioner import IidPartitioner

# Load the dataset with IID partitioning across clients
partitioner = IidPartitioner(num_partitions=10)
fds = FederatedDataset(
    dataset="your-username/cifar10-lt-federated", 
    partitioners={"train": partitioner}
)

# Get data for a specific client
client_data = fds.load_partition(0)
print(f"Client 0 has {len(client_data)} samples")

Federated Learning Scenarios

This dataset supports several FL research scenarios:

  1. 1.Long-tail FL: Study how federated learning handles class imbalance
  2. 2.IID distribution: Each client gets similar long-tail distribution
  3. 3.Non-IID variants: Can be combined with other partitioners for heterogeneous settings
  4. 4.Fairness research: Analyze performance across head vs tail classes

Comparison with Standard CIFAR-10

MetricStandard CIFAR-10CIFAR-10-LT (This Dataset)
Train samples per class5,000 (uniform)5,000 → 50 (exponential decay)
Test samples per class1,000 (uniform)1,000 (uniform, unchanged)
Total train samples50,00012,406
Class distributionBalancedLong-tail (IF=100)

Research Applications

This dataset is particularly useful for:

  • —Long-tail classification research: Studying methods to handle class imbalance
  • —Federated learning with imbalanced data: Real-world FL scenarios
  • —Fairness in ML: Analyzing model performance across different class frequencies
  • —Few-shot learning: Tail classes have limited samples
  • —Meta-learning: Learning from classes with varying sample sizes

Example Usage

python
from datasets import load_dataset
import matplotlib.pyplot as plt
import numpy as np

# Load the dataset
dataset = load_dataset("your-username/cifar10-lt-federated")

# Analyze class distribution
train_data = dataset["train"]
labels = train_data["label"]
class_counts = np.bincount(labels)

print("Class distribution:")
class_names = ['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']
for i, count in enumerate(class_counts):
    print(f"{class_names[i]}: {count} samples")

# Visualize class distribution
plt.figure(figsize=(10, 6))
plt.bar(range(10), class_counts)
plt.xlabel("Class")
plt.ylabel("Number of Samples")
plt.title("CIFAR-10 Long-Tail Class Distribution")
plt.xticks(range(10), [name[:4] for name in class_names], rotation=45)
plt.yscale('log')
plt.show()

# Access a sample
sample = train_data[0]
print(f"Image shape: {np.array(sample['img']).shape}")
print(f"Label: {sample['label']} ({class_names[sample['label']]})")

Performance Baselines

Due to the long-tail distribution, standard classification methods typically show:

  • —High accuracy on head classes (airplane: ~90%+)
  • —Poor accuracy on tail classes (truck: ~40-60%)
  • —Overall accuracy drop compared to balanced CIFAR-10

This creates opportunities for research on:

  • —Loss reweighting methods
  • —Data augmentation for tail classes
  • —Two-stage training approaches
  • —Ensemble methods

Citation

bibtex
@misc{cifar10-lt-federated,
  title={CIFAR-10 Long-Tail Federated Dataset},
  author={Created for Federated Long-Tail Classification Research},
  year={2024},
  url={https://huggingface.co/datasets/your-username/cifar10-lt-federated}
}

Original CIFAR-10 Citation

bibtex
@techreport{krizhevsky2009learning,
  title={Learning multiple layers of features from tiny images},
  author={Krizhevsky, Alex and Hinton, Geoffrey and others},
  year={2009},
  institution={Technical report, University of Toronto}
}

License

MIT License - Same as original CIFAR-10 dataset

Related Work