Source code for stable_datasets.images.imagenet_100
from pathlib import Path
from stable_datasets.schema import ClassLabel, DatasetInfo, Features, Image, Version
from stable_datasets.splits import Split, SplitGenerator
from stable_datasets.utils import BaseDatasetBuilder, download
from .imagenet_1k import _default_class_names, _ImageNetArchiveMixin
[docs]
class ImageNet100(_ImageNetArchiveMixin, BaseDatasetBuilder):
"""ImageNet-100 built by taking the first 100 class TARs from ImageNet-1K train archive."""
VERSION = Version("2.0.0")
SOURCE = {
"homepage": "https://www.image-net.org/challenges/LSVRC/2012/",
"assets": {
"train": "https://image-net.org/data/ILSVRC/2012/ILSVRC2012_img_train.tar",
},
"citation": """@article{deng2009imagenet,
title={ImageNet: A large-scale hierarchical image database},
author={Deng, Jia and others},
journal={CVPR},
year={2009}
}""",
}
def __init__(self, streaming: bool = True, **kwargs):
self.streaming = streaming
super().__init__(**kwargs)
def _info(self):
return DatasetInfo(
description="ImageNet-100 subset generated from ImageNet-1K class archives.",
features=Features({"image": Image(), "label": ClassLabel(names=_default_class_names(100))}),
supervised_keys=("image", "label"),
homepage=self.SOURCE["homepage"],
citation=self.SOURCE["citation"],
)
def _split_generators(self):
train_path = download(self.SOURCE["assets"]["train"], dest_folder=self._raw_download_dir)
return [SplitGenerator(name=Split.TRAIN, gen_kwargs={"data_path": train_path})]
def _generate_examples(self, data_path, split=None):
yield from self._iter_train_examples(Path(data_path), class_limit=100)