Source code for stable_datasets.images.rock_paper_scissor

import os

import datasets
from PIL import Image


[docs] class RockPaperScissor(datasets.GeneratorBasedBuilder): """Rock Paper Scissors dataset.""" VERSION = datasets.Version("1.0.0") def _info(self): return datasets.DatasetInfo( description="Rock Paper Scissors contains images from various hands, from different races, ages, and " "genders, posed into Rock / Paper or Scissors and labeled as such.", features=datasets.Features( { "image": datasets.Image(), "label": datasets.ClassLabel(names=["rock", "paper", "scissors"]), } ), supervised_keys=("image", "label"), homepage="https://laurencemoroney.com/datasets.html", license="CC By 2.0", ) def _split_generators(self, dl_manager): urls = { "train": "https://storage.googleapis.com/download.tensorflow.org/data/rps.zip", "test": "https://storage.googleapis.com/download.tensorflow.org/data/rps-test-set.zip", } extracted_paths = dl_manager.download_and_extract(urls) return [ datasets.SplitGenerator( name=datasets.Split.TRAIN, gen_kwargs={"data_dir": extracted_paths["train"]}, ), datasets.SplitGenerator( name=datasets.Split.TEST, gen_kwargs={"data_dir": extracted_paths["test"]}, ), ] def _generate_examples(self, data_dir): for root, _, files in os.walk(data_dir): for file_name in files: if file_name.endswith(".png"): label = os.path.basename(root) # Folder name as label file_path = os.path.join(root, file_name) # Open image and ensure it is RGB with open(file_path, "rb") as img_file: image = Image.open(img_file).convert("RGB") yield file_path, {"image": image, "label": label}