{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%%capture\n", "\n", "! pip install datasets transformers evaluate" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Load a dataset" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's start by loading a small image classification dataset and taking a look at its structure.\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from datasets import load_dataset\n", "\n", "dataset_name = \"jonathan-roberts1/Satellite-Images-of-Hurricane-Damage\"\n", "\n", "def get_ds():\n", " ds = load_dataset(dataset_name)\n", " ds = ds[\"train\"].train_test_split(test_size=0.5)\n", " ds[\"train\"][\"label\"].count(1), ds[\"test\"][\"label\"].count(0)\n", " ds_ = ds[\"test\"].train_test_split(test_size=0.5)\n", " ds[\"validation\"] = ds_[\"train\"]\n", " ds[\"test\"] = ds_[\"test\"]\n", " return ds\n", "\n", "ds = get_ds()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's take a look at the 400th example from the `'train'` split from the dataset. You'll notice each example from the dataset has 2 features:\n", "\n", "1. `image`: A PIL Image\n", "1. `image_file_path`: The `str` path to the image file that was loaded as `image`\n", "1. `labels`: A [`datasets.ClassLabel`](https://huggingface.co/docs/datasets/package_reference/main_classes.html?highlight=classlabel#datasets.ClassLabel) feature, which we'll see as an integer representation of the label for a given example. (Later we'll see how to get the string class names, don't worry)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'image': ,\n", " 'label': 0}" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ex = ds['train'][400]\n", "ex" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's take a look at the image 👀" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/jpeg": "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", "image/png": "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", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "image = ex['image']\n", "image" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since the `'labels'` feature of this dataset is a `datasets.features.ClassLabel`, we can use it to lookup the corresponding name for this example's label ID.\n", "\n", "First, lets access the feature definition for the `'label'`." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "DatasetDict({\n", " train: Dataset({\n", " features: ['image', 'label'],\n", " num_rows: 5000\n", " })\n", " test: Dataset({\n", " features: ['image', 'label'],\n", " num_rows: 2500\n", " })\n", " validation: Dataset({\n", " features: ['image', 'label'],\n", " num_rows: 2500\n", " })\n", "})" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ds" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "ClassLabel(names=['flooded or damaged buildings', 'undamaged buildings'], id=None)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "labels = ds['train'].features['label']\n", "labels" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, lets print out the class label for our example. We'll do that by using the [`int2str`](https://huggingface.co/docs/datasets/package_reference/main_classes.html?highlight=classlabel#datasets.ClassLabel.int2str) function of `ClassLabel`, which, as the name implies, lets us pass the int representation of the class to look up the string label." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "application/vnd.google.colaboratory.intrinsic+json": { "type": "string" }, "text/plain": [ "'flooded or damaged buildings'" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "labels.int2str(ex['label'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's write a function that'll display a grid of examples from each class so we can get a better idea of what we're working with." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "ae3ce1bae7f84edea0a27b833b1e2d1f", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Filter: 0%| | 0/5000 [00:00" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from transformers.utils.dummy_vision_objects import ImageGPTFeatureExtractor\n", "import random\n", "from PIL import ImageDraw, ImageFont, Image\n", "\n", "def show_examples(ds, seed: int = 1234, examples_per_class: int = 3, size=(350, 350)):\n", "\n", " w, h = size\n", " labels = ds['train'].features['label'].names\n", " grid = Image.new('RGB', size=(examples_per_class * w, len(labels) * h))\n", " draw = ImageDraw.Draw(grid)\n", " font = ImageFont.truetype(\"/usr/share/fonts/truetype/liberation/LiberationMono-Bold.ttf\", 24)\n", "\n", " for label_id, label in enumerate(labels):\n", "\n", " # Filter the dataset by a single label, shuffle it, and grab a few samples\n", " ds_slice = ds['train'].filter(lambda ex: ex['label'] == label_id).shuffle(seed).select(range(examples_per_class))\n", "\n", " # Plot this label's examples along a row\n", " for i, example in enumerate(ds_slice):\n", " image = example['image']\n", " idx = examples_per_class * label_id + i\n", " box = (idx % examples_per_class * w, idx // examples_per_class * h)\n", " grid.paste(image.resize(size), box=box)\n", " draw.text(box, label, (255, 255, 255), font=font)\n", "\n", " return grid\n", "\n", "show_examples(ds, seed=random.randint(0, 1337), examples_per_class=3)" ] } ], "metadata": { "language_info": { "name": "python" } }, "nbformat": 4, "nbformat_minor": 2 }