diff --git a/assets/56_fine_tune_segformer/output.png b/assets/56_fine_tune_segformer/output.png
deleted file mode 100644
index 29cee1e75f..0000000000
Binary files a/assets/56_fine_tune_segformer/output.png and /dev/null differ
diff --git a/assets/56_fine_tune_segformer/pizza-scene.png b/assets/56_fine_tune_segformer/pizza-scene.png
deleted file mode 100644
index 009c194293..0000000000
Binary files a/assets/56_fine_tune_segformer/pizza-scene.png and /dev/null differ
diff --git a/assets/56_fine_tune_segformer/segformer.png b/assets/56_fine_tune_segformer/segformer.png
deleted file mode 100644
index 3dd5b098ef..0000000000
Binary files a/assets/56_fine_tune_segformer/segformer.png and /dev/null differ
diff --git a/assets/56_fine_tune_segformer/sidewalk-examples.png b/assets/56_fine_tune_segformer/sidewalk-examples.png
deleted file mode 100644
index 650ab82ddd..0000000000
Binary files a/assets/56_fine_tune_segformer/sidewalk-examples.png and /dev/null differ
diff --git a/assets/56_fine_tune_segformer/sidewalk-labeling-crop-poster.png b/assets/56_fine_tune_segformer/sidewalk-labeling-crop-poster.png
deleted file mode 100644
index 900e809b3b..0000000000
Binary files a/assets/56_fine_tune_segformer/sidewalk-labeling-crop-poster.png and /dev/null differ
diff --git a/assets/56_fine_tune_segformer/sidewalk-labeling-crop.mp4 b/assets/56_fine_tune_segformer/sidewalk-labeling-crop.mp4
deleted file mode 100644
index da291ae289..0000000000
Binary files a/assets/56_fine_tune_segformer/sidewalk-labeling-crop.mp4 and /dev/null differ
diff --git a/assets/56_fine_tune_segformer/widget-poster.png b/assets/56_fine_tune_segformer/widget-poster.png
deleted file mode 100644
index e29e8e796b..0000000000
Binary files a/assets/56_fine_tune_segformer/widget-poster.png and /dev/null differ
diff --git a/assets/56_fine_tune_segformer/widget.mp4 b/assets/56_fine_tune_segformer/widget.mp4
deleted file mode 100644
index cd0a32c117..0000000000
Binary files a/assets/56_fine_tune_segformer/widget.mp4 and /dev/null differ
diff --git a/fine-tune-segformer.md b/fine-tune-segformer.md
index 16355728c4..6840301855 100644
--- a/fine-tune-segformer.md
+++ b/fine-tune-segformer.md
@@ -14,7 +14,7 @@ authors:
-
+
@@ -27,7 +27,7 @@ Because semantic segmentation is a type of classification, the network architect
[SegFormer](https://huggingface.co/docs/transformers/model_doc/segformer) is a model for semantic segmentation introduced by Xie et al. in 2021. It has a hierarchical Transformer encoder that doesn't use positional encodings (in contrast to ViT) and a simple multi-layer perceptron decoder. SegFormer achieves state-of-the-art performance on multiple common datasets. Let's see how our pizza delivery robot performs for sidewalk images.
-
+
Let's get started by installing the necessary dependencies. Because we're going to push our dataset and model to the Hugging Face Hub, we need to install [Git LFS](https://git-lfs.github.com/) and log in to Hugging Face.
@@ -59,7 +59,7 @@ To create your semantic segmentation dataset, you'll need two things:
We went ahead and captured a thousand images of sidewalks in Belgium. Collecting and labeling such a dataset can take a long time, so you can start with a smaller dataset and expand it if the model does not perform well enough.
-
+
Some examples of the raw images in the sidewalk dataset.
@@ -68,7 +68,7 @@ To obtain segmentation labels, we need to indicate the classes of all the region
### Set up the labeling task on Segments.ai
First, create an account at [https://segments.ai/join](https://segments.ai/join?utm_source=hf&utm_medium=colab&utm_campaign=sem_seg).
-Next, create a new dataset and upload your images. You can either do this from the web interface or via the Python SDK (see the [notebook](https://colab.research.google.com/drive/1BImTyBjW3KtvHGVcjGpYYFZdRGXzM3-j?usp=sharing)).
+Next, create a new dataset and upload your images. You can either do this from the web interface or via the Python SDK (see the [notebook](https://colab.research.google.com/github/huggingface/blog/blob/main/notebooks/56_fine_tune_segformer.ipynb)).
### Label the images
@@ -81,7 +81,7 @@ Now that the raw data is loaded, go to [segments.ai/home](https://segments.ai/ho
style="max-width: 70%; margin: auto;"
autoplay loop autobuffer muted playsinline
>
-
+
Tip: when using the superpixel tool, scroll to change the superpixel size, and click and drag to select segments.
@@ -92,7 +92,7 @@ When you're done labeling, create a new dataset release containing the labeled d
Note that creating the release can take a few seconds. You can check the releases tab on Segments.ai to check if your release is still being created.
-Now, we'll convert the release to a [Hugging Face dataset](https://huggingface.co/docs/datasets/package_reference/main_classes.html#datasets.Dataset) via the Segments.ai Python SDK. If you haven't set up the Segments Python client yet, follow the instructions in the "Set up the labeling task on Segments.ai" section of the [notebook](https://colab.research.google.com/drive/1BImTyBjW3KtvHGVcjGpYYFZdRGXzM3-j#scrollTo=9T2Jr9t9y4HD).
+Now, we'll convert the release to a [Hugging Face dataset](https://huggingface.co/docs/datasets/package_reference/main_classes.html#datasets.Dataset) via the Segments.ai Python SDK. If you haven't set up the Segments Python client yet, follow the instructions in the "Set up the labeling task on Segments.ai" section of the [notebook](https://colab.research.google.com/github/huggingface/blog/blob/main/notebooks/56_fine_tune_segformer.ipynb#scrollTo=9T2Jr9t9y4HD).
*Note that the conversion can take a while, depending on the size of your dataset.*
@@ -192,7 +192,7 @@ repo_id = f"datasets/{hf_dataset_identifier}"
filename = "id2label.json"
id2label = json.load(open(hf_hub_download(repo_id=hf_dataset_identifier, filename=filename, repo_type="dataset"), "r"))
id2label = {int(k): v for k, v in id2label.items()}
-label2id = {v: k for k, v in id2label.items()
+label2id = {v: k for k, v in id2label.items()}
num_labels = len(id2label)
```
@@ -237,7 +237,7 @@ test_ds.set_transform(val_transforms)
The SegFormer authors define 5 models with increasing sizes: B0 to B5. The following chart (taken from the original paper) shows the performance of these different models on the ADE20K dataset, compared to other models.
-
+
Source
@@ -324,7 +324,7 @@ def compute_metrics(eval_pred):
references=labels,
num_labels=len(id2label),
ignore_index=0,
- reduce_labels=feature_extractor.reduce_labels,
+ reduce_labels=feature_extractor.do_reduce_labels,
)
# add per category metrics as individual key-value pairs
@@ -387,7 +387,7 @@ However, you can also try out your model directly on the Hugging Face Hub, thank
style="max-width: 70%; margin: auto;"
autoplay loop autobuffer muted playsinline
>
-
+
@@ -438,7 +438,7 @@ pred_seg = upsampled_logits.argmax(dim=1)[0]
Now it's time to display the result. We'll display the result next to the ground-truth mask.
-
+
What do you think? Would you send our pizza delivery robot on the road with this segmentation information?
diff --git a/notebooks/56_fine_tune_segformer.ipynb b/notebooks/56_fine_tune_segformer.ipynb
new file mode 100644
index 0000000000..ef86662647
--- /dev/null
+++ b/notebooks/56_fine_tune_segformer.ipynb
@@ -0,0 +1,6016 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "tOQZT_SpMJWb"
+ },
+ "source": [
+ "**This guide shows how you can fine-tune Segformer, a state-of-the-art semantic segmentation model. Our goal is to build a model for a pizza delivery robot, so it can see where to drive and recognize obstacles 🍕🤖. We'll first label a set of sidewalk images on [Segments.ai](https://segments.ai?utm_source=hf&utm_medium=colab&utm_campaign=sem_seg). Then we'll fine-tune a pre-trained SegFormer model by using [`🤗 transformers`](https://huggingface.co/transformers), an open-source library that offers easy-to-use implementations of state-of-the-art models. Along the way, you'll learn how to work with the Hugging Face hub, the largest open-source catalog of models and datasets.**\n",
+ "\n",
+ "Semantic segmentation is the task of classifying each pixel in an image. You can see it as a more precise way of classifying an image. It has a wide range of use cases in fields such as medical imaging and autonomous driving. As an example, for our pizza delivery robot, it is important to know exactly where the sidewalk is in an image, not just whether there is a sidewalk or not.\n",
+ "\n",
+ "Because semantic segmentation is a type of classification, the network architectures that are used for image classification and semantic segmentation are very similar. In 2014, [a seminal paper](https://arxiv.org/abs/1411.4038) by Long et al. used convolutional neural networks for semantic segmentation. More recently, Transformers have been used for image classification (e.g. [ViT](https://huggingface.co/blog/fine-tune-vit)), and now they're also being used for semantic segmentation, pushing the state-of-the-art further.\n",
+ "\n",
+ "[SegFormer](https://arxiv.org/abs/2105.15203) is a model for semantic segmentation introduced by Xie et al in 2021. It has a hierarchical Transformer encoder that doesn't use positional encodings (in contrast to ViT) and a simple multi-layer perceptron decoder. SegFormer achieves state-of-the-art performance on multiple common datasets. Let's see how it performs for sidewalk images in our pizza delivery robot."
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "UfYigrqXm8wj"
+ },
+ "source": [
+ "Let's get started by installing the necessary dependencies and logging in to Hugging Face."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "colab": {
+ "background_save": true,
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "4RtsVDEeI8KL",
+ "outputId": "9cf98b07-b2dc-4689-ae19-1db4e1396b8f"
+ },
+ "outputs": [],
+ "source": [
+ "!pip install -q transformers datasets segments-ai evaluate"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 299
+ },
+ "id": "lECco8JEveg4",
+ "outputId": "fa55cd96-1d69-41b0-82ff-bb9f8cb5b642"
+ },
+ "outputs": [],
+ "source": [
+ "from huggingface_hub import notebook_login\n",
+ "\n",
+ "notebook_login()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "1WSBI4zoS3TD"
+ },
+ "outputs": [],
+ "source": [
+ "hf_username = \"segments-tobias\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "34S5D1ntJReV"
+ },
+ "source": [
+ "# 1. Create/choose a dataset"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "4O2J9CWSwh7g"
+ },
+ "source": [
+ "The first step in any ML project is assembling a good dataset. In order to train a semantic segmentation model, we need a dataset with semantic segmentation labels. We can either use an existing dataset from the Hugging Face Hub, such as [ADE20k](https://huggingface.co/datasets/scene_parse_150), or create our own dataset.\n",
+ "\n",
+ "For our pizza delivery robot, we could use an existing autonomous driving dataset such as [CityScapes](https://www.cityscapes-dataset.com/) or [BDD100K](https://bdd100k.com/). However, these datasets were captured by cars driving on the road. Since our delivery robot will be driving on the sidewalk, there will be a mismatch between the images in these datasets and the data our robot will see in the real world. \n",
+ "\n",
+ "We don't want our delivery robot to get confused, so we'll create our own semantic segmentation dataset using images captured on sidewalks. In the next steps, we'll show how you can label the images we captured. If you just want to use our finished labeled dataset, you can skip the \"Create your own dataset\" section and continue from \"Use a dataset from the Hub\"."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "GdLqU-p2Lvdj"
+ },
+ "source": [
+ "## Create your own dataset"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "0wzVSFuCwlvm"
+ },
+ "source": [
+ "\n",
+ "To create your own semantic segmentation dataset, you'll need two things: 1) images covering the situations your model will encounter in the real world, 2) segmentation labels, i.e. images where each pixel represents a class/category.\n",
+ "\n",
+ "We went ahead and captured a thousand images of sidewalks in Belgium. Collecting and labeling such a dataset can take a long time, so you can also start with a smaller dataset, and expand it if the model does not perform well enough."
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "nlYOPx3OFsnC"
+ },
+ "source": [
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "2I9DiKWlOVnp"
+ },
+ "source": [
+ "To obtain segmentation labels, we need to indicate the classes of all the regions/objects in these images. This can be a time-consuming endeavour, but using the right tools can speed up the task significantly. For labeling, we'll use [Segments.ai](https://segments.ai?utm_source=hf&utm_medium=colab&utm_campaign=sem_seg), since it has smart labeling tools for image segmentation, and an easy-to-use Python SDK."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "9T2Jr9t9y4HD"
+ },
+ "source": [
+ "### Set up the labeling task on Segments.ai"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "QJRdowdfyw0n"
+ },
+ "source": [
+ "First, create an account at [https://segments.ai/join](https://segments.ai/join?utm_source=hf&utm_medium=colab&utm_campaign=sem_seg). Next, you can create a dataset by using the web interface, or via the Python SDK. Here, we'll show how you can create a dataset programmatically."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "hilsN0r1yc-3"
+ },
+ "source": [
+ "We'll start by initializing the Segments.ai client using an API key. This key can be found on [the account page](https://segments.ai/account)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "Ub7WR4ySPKij"
+ },
+ "outputs": [],
+ "source": [
+ "from segments import SegmentsClient\n",
+ "from getpass import getpass\n",
+ "\n",
+ "api_key = getpass('Enter your API key: ')\n",
+ "segments_client = SegmentsClient(api_key)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "fs0ITiinP8Lq"
+ },
+ "source": [
+ "Next, we'll create a new dataset by choosing a name and by listing the different categories we want to label."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "tNgrhLTnP7Yt"
+ },
+ "outputs": [],
+ "source": [
+ "dataset_name = \"sidewalk-imagery\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "b6cxqPREqKzV"
+ },
+ "source": [
+ "The next cell contains the `task_attributes` with the categories we want to label. The format for `task_attributes` is defined in the [docs](https://docs.segments.ai/reference/categories-and-task-attributes)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "cellView": "form",
+ "id": "r2J-6b-OPXlu"
+ },
+ "outputs": [],
+ "source": [
+ "#@title `task_attributes = {...}`\n",
+ "\n",
+ "task_attributes = {\n",
+ " \"format_version\": \"0.1\",\n",
+ " \"categories\": [\n",
+ " {\n",
+ " \"name\": \"flat-road\",\n",
+ " \"id\": 1,\n",
+ " \"color\": [\n",
+ " 216,\n",
+ " 82,\n",
+ " 24,\n",
+ " 255\n",
+ " ],\n",
+ " \"attributes\": []\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"flat-sidewalk\",\n",
+ " \"id\": 2,\n",
+ " \"color\": [\n",
+ " 255,\n",
+ " 255,\n",
+ " 0\n",
+ " ],\n",
+ " \"attributes\": []\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"flat-crosswalk\",\n",
+ " \"id\": 3,\n",
+ " \"color\": [\n",
+ " 125,\n",
+ " 46,\n",
+ " 141,\n",
+ " 255\n",
+ " ],\n",
+ " \"attributes\": []\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"flat-cyclinglane\",\n",
+ " \"id\": 4,\n",
+ " \"color\": [\n",
+ " 118,\n",
+ " 171,\n",
+ " 47,\n",
+ " 255\n",
+ " ],\n",
+ " \"attributes\": []\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"flat-parkingdriveway\",\n",
+ " \"id\": 5,\n",
+ " \"color\": [\n",
+ " 161,\n",
+ " 19,\n",
+ " 46,\n",
+ " 255\n",
+ " ],\n",
+ " \"attributes\": []\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"flat-railtrack\",\n",
+ " \"id\": 6,\n",
+ " \"color\": [\n",
+ " 255,\n",
+ " 0,\n",
+ " 0,\n",
+ " 255\n",
+ " ],\n",
+ " \"attributes\": []\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"flat-curb\",\n",
+ " \"id\": 7,\n",
+ " \"color\": [\n",
+ " 0,\n",
+ " 128,\n",
+ " 128\n",
+ " ],\n",
+ " \"attributes\": []\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"human-person\",\n",
+ " \"id\": 8,\n",
+ " \"attributes\": [\n",
+ " {\n",
+ " \"name\": \"is_crowd\",\n",
+ " \"input_type\": \"checkbox\",\n",
+ " \"default_value\": False\n",
+ " }\n",
+ " ],\n",
+ " \"color\": [\n",
+ " 190,\n",
+ " 190,\n",
+ " 0,\n",
+ " 255\n",
+ " ]\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"human-rider\",\n",
+ " \"id\": 9,\n",
+ " \"attributes\": [\n",
+ " {\n",
+ " \"name\": \"is_crowd\",\n",
+ " \"input_type\": \"checkbox\",\n",
+ " \"default_value\": False\n",
+ " }\n",
+ " ],\n",
+ " \"color\": [\n",
+ " 0,\n",
+ " 255,\n",
+ " 0,\n",
+ " 255\n",
+ " ]\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"vehicle-car\",\n",
+ " \"id\": 10,\n",
+ " \"attributes\": [\n",
+ " {\n",
+ " \"name\": \"is_crowd\",\n",
+ " \"input_type\": \"checkbox\",\n",
+ " \"default_value\": False\n",
+ " }\n",
+ " ],\n",
+ " \"color\": [\n",
+ " 0,\n",
+ " 0,\n",
+ " 255,\n",
+ " 255\n",
+ " ]\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"vehicle-truck\",\n",
+ " \"id\": 11,\n",
+ " \"attributes\": [\n",
+ " {\n",
+ " \"name\": \"is_crowd\",\n",
+ " \"input_type\": \"checkbox\",\n",
+ " \"default_value\": False\n",
+ " }\n",
+ " ],\n",
+ " \"color\": [\n",
+ " 170,\n",
+ " 0,\n",
+ " 255,\n",
+ " 255\n",
+ " ]\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"vehicle-bus\",\n",
+ " \"id\": 12,\n",
+ " \"attributes\": [\n",
+ " {\n",
+ " \"name\": \"is_crowd\",\n",
+ " \"input_type\": \"checkbox\",\n",
+ " \"default_value\": False\n",
+ " }\n",
+ " ],\n",
+ " \"color\": [\n",
+ " 84,\n",
+ " 84,\n",
+ " 0,\n",
+ " 255\n",
+ " ]\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"vehicle-tramtrain\",\n",
+ " \"id\": 13,\n",
+ " \"attributes\": [\n",
+ " {\n",
+ " \"name\": \"is_crowd\",\n",
+ " \"input_type\": \"checkbox\",\n",
+ " \"default_value\": False\n",
+ " }\n",
+ " ],\n",
+ " \"color\": [\n",
+ " 84,\n",
+ " 170,\n",
+ " 0,\n",
+ " 255\n",
+ " ]\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"vehicle-motorcycle\",\n",
+ " \"id\": 14,\n",
+ " \"attributes\": [\n",
+ " {\n",
+ " \"name\": \"is_crowd\",\n",
+ " \"input_type\": \"checkbox\",\n",
+ " \"default_value\": False\n",
+ " }\n",
+ " ],\n",
+ " \"color\": [\n",
+ " 84,\n",
+ " 255,\n",
+ " 0,\n",
+ " 255\n",
+ " ]\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"vehicle-bicycle\",\n",
+ " \"id\": 15,\n",
+ " \"attributes\": [\n",
+ " {\n",
+ " \"name\": \"is_crowd\",\n",
+ " \"input_type\": \"checkbox\",\n",
+ " \"default_value\": False\n",
+ " }\n",
+ " ],\n",
+ " \"color\": [\n",
+ " 170,\n",
+ " 84,\n",
+ " 0,\n",
+ " 255\n",
+ " ]\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"vehicle-caravan\",\n",
+ " \"id\": 16,\n",
+ " \"attributes\": [\n",
+ " {\n",
+ " \"name\": \"is_crowd\",\n",
+ " \"input_type\": \"checkbox\",\n",
+ " \"default_value\": False\n",
+ " }\n",
+ " ],\n",
+ " \"color\": [\n",
+ " 170,\n",
+ " 170,\n",
+ " 0,\n",
+ " 255\n",
+ " ]\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"vehicle-cartrailer\",\n",
+ " \"id\": 17,\n",
+ " \"attributes\": [\n",
+ " {\n",
+ " \"name\": \"is_crowd\",\n",
+ " \"input_type\": \"checkbox\",\n",
+ " \"default_value\": False\n",
+ " }\n",
+ " ],\n",
+ " \"color\": [\n",
+ " 170,\n",
+ " 255,\n",
+ " 0,\n",
+ " 255\n",
+ " ]\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"construction-building\",\n",
+ " \"id\": 18,\n",
+ " \"color\": [\n",
+ " 255,\n",
+ " 84,\n",
+ " 0,\n",
+ " 255\n",
+ " ],\n",
+ " \"attributes\": []\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"construction-door\",\n",
+ " \"id\": 19,\n",
+ " \"color\": [\n",
+ " 255,\n",
+ " 170,\n",
+ " 0,\n",
+ " 255\n",
+ " ],\n",
+ " \"attributes\": []\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"construction-wall\",\n",
+ " \"id\": 20,\n",
+ " \"color\": [\n",
+ " 255,\n",
+ " 255,\n",
+ " 0,\n",
+ " 255\n",
+ " ],\n",
+ " \"attributes\": []\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"construction-fenceguardrail\",\n",
+ " \"id\": 21,\n",
+ " \"color\": [\n",
+ " 33,\n",
+ " 138,\n",
+ " 200\n",
+ " ],\n",
+ " \"attributes\": []\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"construction-bridge\",\n",
+ " \"id\": 22,\n",
+ " \"color\": [\n",
+ " 0,\n",
+ " 170,\n",
+ " 127,\n",
+ " 255\n",
+ " ],\n",
+ " \"attributes\": []\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"construction-tunnel\",\n",
+ " \"id\": 23,\n",
+ " \"color\": [\n",
+ " 0,\n",
+ " 255,\n",
+ " 127,\n",
+ " 255\n",
+ " ],\n",
+ " \"attributes\": []\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"construction-stairs\",\n",
+ " \"id\": 24,\n",
+ " \"color\": [\n",
+ " 84,\n",
+ " 0,\n",
+ " 127,\n",
+ " 255\n",
+ " ],\n",
+ " \"attributes\": []\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"object-pole\",\n",
+ " \"id\": 25,\n",
+ " \"attributes\": [\n",
+ " {\n",
+ " \"name\": \"is_crowd\",\n",
+ " \"input_type\": \"checkbox\",\n",
+ " \"default_value\": False\n",
+ " }\n",
+ " ],\n",
+ " \"color\": [\n",
+ " 84,\n",
+ " 84,\n",
+ " 127,\n",
+ " 255\n",
+ " ]\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"object-trafficsign\",\n",
+ " \"id\": 26,\n",
+ " \"color\": [\n",
+ " 84,\n",
+ " 170,\n",
+ " 127,\n",
+ " 255\n",
+ " ],\n",
+ " \"attributes\": []\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"object-trafficlight\",\n",
+ " \"id\": 27,\n",
+ " \"color\": [\n",
+ " 84,\n",
+ " 255,\n",
+ " 127,\n",
+ " 255\n",
+ " ],\n",
+ " \"attributes\": []\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"nature-vegetation\",\n",
+ " \"id\": 28,\n",
+ " \"color\": [\n",
+ " 170,\n",
+ " 0,\n",
+ " 127,\n",
+ " 255\n",
+ " ],\n",
+ " \"attributes\": []\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"nature-terrain\",\n",
+ " \"id\": 29,\n",
+ " \"color\": [\n",
+ " 170,\n",
+ " 84,\n",
+ " 127,\n",
+ " 255\n",
+ " ],\n",
+ " \"attributes\": []\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"sky\",\n",
+ " \"id\": 30,\n",
+ " \"color\": [\n",
+ " 170,\n",
+ " 170,\n",
+ " 127,\n",
+ " 255\n",
+ " ],\n",
+ " \"attributes\": []\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"void-ground\",\n",
+ " \"id\": 31,\n",
+ " \"color\": [\n",
+ " 170,\n",
+ " 255,\n",
+ " 127,\n",
+ " 255\n",
+ " ],\n",
+ " \"attributes\": []\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"void-dynamic\",\n",
+ " \"id\": 32,\n",
+ " \"color\": [\n",
+ " 255,\n",
+ " 0,\n",
+ " 127,\n",
+ " 255\n",
+ " ],\n",
+ " \"attributes\": []\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"void-static\",\n",
+ " \"id\": 33,\n",
+ " \"color\": [\n",
+ " 255,\n",
+ " 84,\n",
+ " 127,\n",
+ " 255\n",
+ " ],\n",
+ " \"attributes\": []\n",
+ " },\n",
+ " {\n",
+ " \"name\": \"void-unclear\",\n",
+ " \"id\": 34,\n",
+ " \"color\": [\n",
+ " 255,\n",
+ " 170,\n",
+ " 127,\n",
+ " 255\n",
+ " ],\n",
+ " \"attributes\": []\n",
+ " }\n",
+ " ]\n",
+ "}"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "GN3SGWhKPQv6"
+ },
+ "outputs": [],
+ "source": [
+ "dataset_response = segments_client.add_dataset(dataset_name, task_attributes=task_attributes, category='street_scenery')\n",
+ "dataset_identifier = f'{dataset_response.owner.username}/{dataset_name}'"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "4J1loXEnQQYn"
+ },
+ "source": [
+ "Now we can add images to the dataset. As an example, we'll add 10 examples images from the sidewalk dataset using `segments_client.add_sample()`."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "cellView": "form",
+ "id": "wg63cWzmQXaZ"
+ },
+ "outputs": [],
+ "source": [
+ "#@title `sample_attributes = [...]`\n",
+ "\n",
+ "sample_attributes = [\n",
+ " {\n",
+ " \"image\": {\n",
+ " \"url\": \"https://segmentsai-prod.s3.eu-west-2.amazonaws.com/assets/tobias/72939ba9-8488-4dfe-81a2-1a299f2e1d95.jpg\"\n",
+ " }\n",
+ " },\n",
+ " {\n",
+ " \"image\": {\n",
+ " \"url\": \"https://segmentsai-prod.s3.eu-west-2.amazonaws.com/assets/tobias/6ef02d5d-e7e4-40f6-b65a-47dee4815e7a.jpg\"\n",
+ " }\n",
+ " },\n",
+ " {\n",
+ " \"image\": {\n",
+ " \"url\": \"https://segmentsai-prod.s3.eu-west-2.amazonaws.com/assets/tobias/46216c90-7af9-4e06-af28-4a0734a1e3a2.jpg\"\n",
+ " }\n",
+ " },\n",
+ " {\n",
+ " \"image\": {\n",
+ " \"url\": \"https://segmentsai-prod.s3.eu-west-2.amazonaws.com/assets/tobias/545a233e-4413-4b35-9e89-659be3550ddf.jpg\"\n",
+ " }\n",
+ " },\n",
+ " {\n",
+ " \"image\": {\n",
+ " \"url\": \"https://segmentsai-prod.s3.eu-west-2.amazonaws.com/assets/tobias/3c0ef45e-6be6-48f3-b3cd-eb283ca3cb34.jpg\"\n",
+ " }\n",
+ " },\n",
+ " {\n",
+ " \"image\": {\n",
+ " \"url\": \"https://segmentsai-prod.s3.eu-west-2.amazonaws.com/assets/tobias/8683e29d-3112-4dff-9a64-c699bc6e1457.jpg\"\n",
+ " }\n",
+ " },\n",
+ " {\n",
+ " \"image\": {\n",
+ " \"url\": \"https://segmentsai-prod.s3.eu-west-2.amazonaws.com/assets/tobias/83ffe351-68ea-4730-b49c-4e6945ab5c18.jpg\"\n",
+ " }\n",
+ " },\n",
+ " {\n",
+ " \"image\": {\n",
+ " \"url\": \"https://segmentsai-prod.s3.eu-west-2.amazonaws.com/assets/tobias/653e6961-d2fa-4c1f-b450-9615707372ed.jpg\"\n",
+ " }\n",
+ " },\n",
+ " {\n",
+ " \"image\": {\n",
+ " \"url\": \"https://segmentsai-prod.s3.eu-west-2.amazonaws.com/assets/tobias/5ee54f18-f528-40dd-83a6-92ac4771fe75.jpg\"\n",
+ " }\n",
+ " },\n",
+ " {\n",
+ " \"image\": {\n",
+ " \"url\": \"https://segmentsai-prod.s3.eu-west-2.amazonaws.com/assets/tobias/54b0f15a-271e-4b0c-962f-23bbf179c554.jpg\"\n",
+ " }\n",
+ " },\n",
+ "]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "BBicN9QISi_T"
+ },
+ "outputs": [],
+ "source": [
+ "for attributes in sample_attributes:\n",
+ " name = attributes['image']['url'].split('/')[-1]\n",
+ " segments_client.add_sample(dataset_identifier, name, attributes)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "qMfjzufRss1f"
+ },
+ "source": [
+ "If you don't have URLs for the images you want to upload, you can use `segments_client.upload_asset()` first, see [this example](https://docs.segments.ai/reference/python-sdk#upload-a-file-as-an-asset). \n",
+ "\n",
+ "Alternatively, you can also drag and drop your files to the Samples tab of your dataset."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "k0dfgKViy754"
+ },
+ "source": [
+ "### Label the images"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "JHNUFJrMRbX4"
+ },
+ "source": [
+ "Now that the raw data is loaded, go to [segments.ai/home](https://segments.ai/home) and open the newly created dataset. Click \"Start labeling\" and create segmentation masks. You can use the ML-powered superpixel and autosegment tools to label faster."
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "EqVMiSORdWmr"
+ },
+ "source": [
+ "*Tip: when using the superpixel tool, scroll to change the superpixel size, and click and drag to select segments.*"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "k2jgvm8dy_63"
+ },
+ "source": [
+ "### Push the result to the Hugging Face Hub"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "qNgvwFxwRvLm"
+ },
+ "source": [
+ "When you're done labeling, create a new dataset release containing the labeled data. You can either do this on the releases tab on Segments.ai, or programmatically through the SDK as shown below. \n",
+ "\n",
+ "Note that creating the release can take a few seconds. You can check the releases tab on Segments.ai to check if your release is still being created."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "-NKKwvIgRk-_"
+ },
+ "outputs": [],
+ "source": [
+ "release_name = \"v0.1\"\n",
+ "\n",
+ "segments_client.add_release(dataset_identifier, release_name)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "ltDp-tuqLCiB"
+ },
+ "source": [
+ "Now, we'll use the `release2dataset` function to convert our release to a [Hugging Face dataset](https://huggingface.co/docs/datasets/package_reference/main_classes.html#datasets.Dataset). This can take a while, depending on the size of your dataset."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "GKIiiPR1K9UJ"
+ },
+ "outputs": [],
+ "source": [
+ "from segments.huggingface import release2dataset\n",
+ "\n",
+ "release = segments_client.get_release(dataset_identifier, release_name)\n",
+ "hf_dataset = release2dataset(release)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "mS8FuWLLopHA"
+ },
+ "outputs": [],
+ "source": [
+ "hf_dataset.features"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "ivsP2n49Ntoq"
+ },
+ "source": [
+ "If we inspect the features of the new dataset, we can see the image column and the corresponding label. The label consists of two parts: a list of annotations and a segmentation bitmap. The annotation corresponds to the different objects in the image. For each object, the annotation contains an `id` and a `category_id`. The segmentation bitmap is an image where each pixel contains the `id` of the object at that pixel. More information can be found in the [relevant docs](https://docs.segments.ai/reference/sample-and-label-types/label-types#segmentation-labels).\n",
+ "\n",
+ "For semantic segmentation, we need a semantic bitmap with a `category_id` for each pixel. We'll use the `get_semantic_bitmap` function from the Segments.ai SDK to convert the bitmaps to semantic bitmaps. In order to apply this function to all the rows in our dataset, we'll use [`dataset.map`](https://huggingface.co/docs/datasets/package_reference/main_classes#datasets.Dataset.map)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "L8BPlz9eYUWP"
+ },
+ "outputs": [],
+ "source": [
+ "from segments.utils import get_semantic_bitmap\n",
+ "\n",
+ "\n",
+ "def convert_segmentation_bitmap(example):\n",
+ " return {\n",
+ " \"label.segmentation_bitmap\":\n",
+ " get_semantic_bitmap(\n",
+ " example[\"label.segmentation_bitmap\"],\n",
+ " example[\"label.annotations\"],\n",
+ " )\n",
+ " }\n",
+ "\n",
+ "\n",
+ "semantic_dataset = hf_dataset.map(\n",
+ " convert_segmentation_bitmap,\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "yxTx7KarZGjq"
+ },
+ "source": [
+ "\n",
+ "You can also rewrite the `convert_segmentation_bitmap` function to use batches and pass `batched=True` to `dataset.map`. This will speed up the mapping significantly, but you might need to tweak the `batch_size` to make sure the process doesn't run out of memory."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "pzcpvZMVFC2g"
+ },
+ "source": [
+ "The SegFormer model we're going to fine-tune later expects certain names for the features. For convenience, we'll already match this format now. Thus, we'll rename the `image` feature to `pixel_values`, the `label.segmentation_bitmap` to `label` and discard the other features."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "ee0wFzIb_GF6"
+ },
+ "outputs": [],
+ "source": [
+ "semantic_dataset = semantic_dataset.rename_column('image', 'pixel_values')\n",
+ "semantic_dataset = semantic_dataset.rename_column('label.segmentation_bitmap', 'label')\n",
+ "semantic_dataset = semantic_dataset.remove_columns(['name', 'uuid', 'status', 'label.annotations'])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "-coXlPirrt4R"
+ },
+ "outputs": [],
+ "source": [
+ "semantic_dataset.features"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "ifsnD9a3R04Z"
+ },
+ "source": [
+ "We can now push the transformed dataset to the Hugging Face Hub. That way, your team and the Hugging Face community can make use of it. In the next section, we'll see how you can load the dataset from the hub."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "zq-ASpXQRyNr"
+ },
+ "outputs": [],
+ "source": [
+ "hf_dataset_identifier = f\"{hf_username}/{dataset_name}\"\n",
+ "\n",
+ "semantic_dataset.push_to_hub(hf_dataset_identifier)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "itStQ9reLLRb"
+ },
+ "source": [
+ "## Use a dataset from the Hub"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "0M0ibxWgwqyd"
+ },
+ "source": [
+ "If you don't want to create your own dataset, but found a suitable dataset for your use case on the Hugging Face Hub, you can define the identifier here.\n",
+ "\n",
+ "For example, you can use the full labeled sidewalk dataset. Note that you can check out the examples [directly in your browser](https://huggingface.co/datasets/segments/sidewalk-semantic)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "7aMw7Sc_KVvS"
+ },
+ "outputs": [],
+ "source": [
+ "hf_dataset_identifier = \"segments/sidewalk-semantic\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "6ak5tUQSSMMv"
+ },
+ "source": [
+ "# 2. Load and prepare the Hugging Face dataset for training"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "kpwIB1_zEQ4m"
+ },
+ "source": [
+ "Now that we've created a new dataset and pushed it to the Hugging Face Hub, we can load the dataset in a single line."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 283,
+ "referenced_widgets": [
+ "a333fe7202cc4148b09813a9eb7c7835",
+ "2d8b1e187c754c24abd4357033c1053e",
+ "be90780c4aa44cf7b16bcf245a960f59",
+ "ab1871dc88fe439f852b1652808e35b3",
+ "fe409f2089ca42249b35fa5d892ed6d9",
+ "d6749f3d135e4ef2b7cda23d5c0b86d7",
+ "5fa9a52011fa4beb92f823d3d1c46a35",
+ "1ade57bbb0c74e929439612a27d6b461",
+ "e66ca393162a494a9c56c35c8bbddb59",
+ "b806c467df834477a7794f74bc30b049",
+ "43991a4fbdce48fc8a816faee5d76b20",
+ "8905921ad7e843d5864fb0bbc0fc9f97",
+ "217f7b6b976246278adf81a59debfa5a",
+ "78ed12b4b55f4af0ac0a0a674f525374",
+ "3a750da3b8034bcaa7c003e32aa5a6bd",
+ "42e24cc126e14bf5a1fd4bf43ad6ca0c",
+ "8ace8fb00ccc4a09bac71d6ff6deb051",
+ "080717aafa8f4512ad924afc5576c4c1",
+ "cc08910b015e41e58a16f8417a65b045",
+ "7cb8df8659c845db9bf813b6bc854880",
+ "28ee9291f1e1418999c9ab4a6924291b",
+ "5fc4cb70f837479dbe27a372baa86059",
+ "41da83b4059946aeb2c37067c3b136aa",
+ "72f5479f320a4869aae13f4ec852d425",
+ "ff68b3eda7f3401fbc5f2cf52d702c14",
+ "672f8b67867b40c68c352d0c65238975",
+ "0b2e67dfb1844bbd97b956bf37233000",
+ "93839cc922d94696a08f207274b64972",
+ "1fcda8ebbe7d421884815f2321fe2b11",
+ "8e5bf0a6382b40828386563657b1bedd",
+ "26ace754da054f3db4a81f5697819fea",
+ "e43eaee5d3ff4d03bc1bad37031b21bb",
+ "e01a28deac8e4d2683e8bfddfdf3fdce",
+ "9fe6950e856949bb8ab87a4297258ec3",
+ "d6b1b99b299a478080aad72a7f4b0ae8",
+ "8f9fced5333e4c698766836267b084bd",
+ "3ff882aec124413d8dcff4d50346f05e",
+ "ff1d05b7a4814825bbcfa67676fdf265",
+ "93b5f44097d54bb2b0e0844994723dd3",
+ "3fc2b3dd6d2d4b69996908a25b9b3d54",
+ "adf003e9917d4a959d0cad14735f6f11",
+ "a7d83738f6be4d4da4394636ee41a712",
+ "3c2bbc396857412abec28f3eaf4c5b5c",
+ "4404c1a831b144e7a466eadf1bbe18bc",
+ "71a3fa014a4744f5a551b6c52ffbd511",
+ "24c24151cb864078ac1c99e6f97d1bd9",
+ "4277bd6b06e8407ca5e2ac835beac227",
+ "8d10bd2fae664a93b3f48397ef64ee09",
+ "25b4f1cfa3cc425a8a3b1600a987c3ce",
+ "d4009b89253042708fdbec5960af10e0",
+ "f9bc284e1d17477b97139eaa597696f5",
+ "7d15aaf81a844a9384d11eae6e52a052",
+ "6e1ed941b44f467f8cc847e320ef291a",
+ "64fa7b9cd5f34a6895ee16595e81f6df",
+ "7c16c33137c74a4c8eb6e45454cfee77",
+ "a498c595ea514b9087013c4483af0ebd",
+ "f7349098575d4d859500cf4e3b015e6a",
+ "f349a6b0d60c47e7a7641aecc19ac179",
+ "5d95c48258ce4d8bb37ab64cdda30d26",
+ "a0c71dab400a4781b4eb563a90d89807",
+ "94bd515e333348af9d1f0174b3659177",
+ "d1b98c4b67b4496084c55c818ab80935",
+ "dfa28a6e7fa84c88b3e89463160348bf",
+ "e500fc12f99149c7a4ec2e67481550e0",
+ "677209c8307245838ccfddb67f11d832",
+ "2327fc96ad0e40aa8a98c4d29fdaea6c",
+ "d35e26d49c4c454dbde5c061fb708c3f",
+ "1345fff5d7eb436dbef9a9f8018a7b93",
+ "4b899362f3c742afb097116dfda00607",
+ "668f188c31a844a6a9aa45869718cd7b",
+ "fa68cab4efdb4132982c2c6461f3ffe0",
+ "bef11d6b389d4513a34d68e18b5c7816",
+ "3cd4ce7d5e9f43fe85bbc4df5b28019c",
+ "a91d2d3b0c264e338913841719956b5c",
+ "18290fc44a984892a24e2786ce4a0d4a",
+ "a2af25d5b022473bb462c910cee74a53",
+ "86983b8263974f8d8b5c51bd205085b7"
+ ]
+ },
+ "id": "sHInIwdCSOTg",
+ "outputId": "4710dd4b-a93c-4c54-e322-ff9ad0c5b77a"
+ },
+ "outputs": [],
+ "source": [
+ "from datasets import load_dataset\n",
+ "\n",
+ "ds = load_dataset(hf_dataset_identifier)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "6LiseiI15Ea7"
+ },
+ "source": [
+ "Let's shuffle the dataset and split the dataset in a train and test set."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "fHedg8mf5NDK"
+ },
+ "outputs": [],
+ "source": [
+ "ds = ds.shuffle(seed=1)\n",
+ "ds = ds[\"train\"].train_test_split(test_size=0.2)\n",
+ "train_ds = ds[\"train\"]\n",
+ "test_ds = ds[\"test\"]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "eSxDcDH6E6fE"
+ },
+ "source": [
+ "We'll extract the number of labels and the human-readable ids, so we can configure the segmentation model correctly later on."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 87,
+ "referenced_widgets": [
+ "e8a7d503141d4917918bbc9daf949ccd",
+ "4b17217df6a84c29945fbbe337abbf62",
+ "f656216b07eb40a2a6b3fd176d284455",
+ "ea96bd5c08f5485a8d5197f17b43cfb2",
+ "29615c3f76514ab295a55628e15e1160",
+ "c09bac6416c041e595c307f843b5c67a",
+ "7be11677747a4a268183d7f2a2cdc212",
+ "cfc7a4a16ab34cc8ab359b18102964d5",
+ "53fa9b65775241d78bbd3b6913f8063b",
+ "03337e4160434fa1a06d8b47a3c8f9ee",
+ "916862871cf74e4ca3dda0a20f6c5871"
+ ]
+ },
+ "id": "hSlztvBBURBC",
+ "outputId": "23bb00f6-f9e9-4537-e366-d89ba11abbe3"
+ },
+ "outputs": [],
+ "source": [
+ "import json\n",
+ "from huggingface_hub import hf_hub_download\n",
+ "\n",
+ "filename = \"id2label.json\"\n",
+ "id2label = json.load(open(hf_hub_download(repo_id=hf_dataset_identifier, filename=filename, repo_type=\"dataset\"), \"r\"))\n",
+ "id2label = {int(k): v for k, v in id2label.items()}\n",
+ "label2id = {v: k for k, v in id2label.items()}\n",
+ "\n",
+ "num_labels = len(id2label)\n",
+ "print(\"Id2label:\", id2label)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "EobXJvy2EAQy"
+ },
+ "source": [
+ "## Feature extractor & data augmentation"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "Za3n6MH1UuDb"
+ },
+ "source": [
+ "A SegFormer model expects the input to be of a certain shape. To transform our training data to match the expected shape, we can use `SegFormerFeatureExtractor`. We could use the `ds.map` function to apply the feature extractor to the whole training dataset in advance, but this can take up a lot of disk space. Instead, we'll use a *transform*, which will only prepare a batch of data when that data is actually used (on-the-fly). This way, we can start training without waiting for further data preprocessing.\n",
+ "\n",
+ "In our transform, we'll also define some data augmentations to make our model more resilient to different lighting conditions. We'll use the [`ColorJitter`](https://pytorch.org/vision/main/generated/torchvision.transforms.ColorJitter.html) function from `torchvision` to randomly change the brightness, contrast, saturation, and hue of the images in the batch."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 105,
+ "referenced_widgets": [
+ "982338bb1fd64ae593c5ba45ea7df33f",
+ "0ee80704b0b1450f9c5481c8a530f76f",
+ "8753fa3c37f345a2adf1af776d389aba",
+ "c413bd4815d44b17a6b151851dc49666",
+ "717790780b904ed0a4f8ee30ad4af4ef",
+ "752b6dc067284438878a92572fe74bfd",
+ "c4ceeb1dab4d4d43bff0f1321f4565c2",
+ "de4844e91374458d8e8b4a593984b48f",
+ "d5cabb26063545bba172d8b9db670ce0",
+ "ffe38865177443cb9d4b65b4ca55a8b6",
+ "eb62c77d660d47c6906220748b7820c0"
+ ]
+ },
+ "id": "xhjJC91WUtWF",
+ "outputId": "40811010-9e99-4c8d-9159-f08f85675147"
+ },
+ "outputs": [],
+ "source": [
+ "from torchvision.transforms import ColorJitter\n",
+ "from transformers import (\n",
+ " SegformerFeatureExtractor,\n",
+ ")\n",
+ "\n",
+ "feature_extractor = SegformerFeatureExtractor()\n",
+ "jitter = ColorJitter(brightness=0.25, contrast=0.25, saturation=0.25, hue=0.1) \n",
+ "\n",
+ "def train_transforms(example_batch):\n",
+ " images = [jitter(x) for x in example_batch['pixel_values']]\n",
+ " labels = [x for x in example_batch['label']]\n",
+ " inputs = feature_extractor(images, labels)\n",
+ " return inputs\n",
+ "\n",
+ "\n",
+ "def val_transforms(example_batch):\n",
+ " images = [x for x in example_batch['pixel_values']]\n",
+ " labels = [x for x in example_batch['label']]\n",
+ " inputs = feature_extractor(images, labels)\n",
+ " return inputs\n",
+ "\n",
+ "\n",
+ "# Set transforms\n",
+ "train_ds.set_transform(train_transforms)\n",
+ "test_ds.set_transform(val_transforms)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "Plz_xtW1VXRP"
+ },
+ "source": [
+ "# 3. Fine-tune a SegFormer model"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "3ci_NXUQV02W"
+ },
+ "source": [
+ "## Load the model to fine-tune"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "kewn1jbTINC0"
+ },
+ "source": [
+ "The SegFormer authors define 5 models with increasing sizes: B0 to B5. The following chart (taken from the original paper) shows the performance of these different models on the ADE20K dataset, compared to other models."
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "YP19G_pHJfWS"
+ },
+ "source": [
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "LeDcwGP_KDJ5"
+ },
+ "source": [
+ "Here, we'll load the smallest SegFormer model (B0), pre-trained on ImageNet-1k. It's only about 14MB in size!\n",
+ "\n",
+ "Using a small model will make sure that our model can run smoothly on our pizza delivery robot."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 190,
+ "referenced_widgets": [
+ "7132be16062d4328beb324872727b0ce",
+ "34bde1cac94041fcad69d631194885c6",
+ "ca4ffd6aabf040c98a8cc91ca1593e45",
+ "10102a9988b848c9a0f81172bbbd0a35",
+ "c3871f07f1094c3c827c37b1d90e3b8f",
+ "ab9ecfc3e19c44159752543430c5d133",
+ "5a6bcac80a134ce2abfdcc92ea925d38",
+ "f3a5136178754c7d9d116335464c294b",
+ "590646dbf32249c98af9b9b31b0725ef",
+ "3745898673414b54a7dfcdb964516751",
+ "2a6b1f70708b4caa8121c1ef0cc9b194",
+ "338c06e339744025b8333bd4301c0a8b",
+ "b7e63291402e4739971f7b8db65faaf8",
+ "af48af6f97cf4c6aa3f0c1f0f6d59fe4",
+ "1437c192d7e54418ae9345608d4231b0",
+ "18475c77baac42c08d4f9d3839198f88",
+ "fc9f20c3b880418cb7918532e242cda9",
+ "157cef99a08c4aaa8b74ea09b9a73d53",
+ "6af1e65a3d594244a33cda5ac9830389",
+ "5afb5adc1f1e4ac4902d4e21c51a7818",
+ "c0e3485b83934987a5efa44efe58a05d",
+ "5d7196ad4b1548ba87b963b267583019"
+ ]
+ },
+ "id": "QGEY0JALVYLV",
+ "outputId": "f85a1b1d-a9bd-422a-eb0a-ec11ce99ddf5"
+ },
+ "outputs": [],
+ "source": [
+ "from transformers import SegformerForSemanticSegmentation\n",
+ "\n",
+ "pretrained_model_name = \"nvidia/mit-b0\" \n",
+ "model = SegformerForSemanticSegmentation.from_pretrained(\n",
+ " pretrained_model_name,\n",
+ " id2label=id2label,\n",
+ " label2id=label2id\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "d7nqNiuZV7du"
+ },
+ "source": [
+ "## Set up the Trainer"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "1keMOe9kKh-y"
+ },
+ "source": [
+ "To fine-tune the model on our data, we'll use Hugging Face's [Trainer API](https://huggingface.co/docs/transformers/main_classes/trainer). In order to use a Trainer, we need to set up the training configuration, and an evalutation metric."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "DxxFRO77WWAp"
+ },
+ "source": [
+ "First, we'll set up the [`TrainingArguments`](https://huggingface.co/docs/transformers/main_classes/trainer#transformers.TrainingArguments). This defines all training hyperparameters, such as learning rate and the number of epochs, frequency to save the model and so on. We also specify to push the model to the hub after training (`push_to_hub=True`) and specify a model name (`hub_model_id`)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "fZJ2HJcyV8uQ"
+ },
+ "outputs": [],
+ "source": [
+ "from transformers import TrainingArguments\n",
+ "\n",
+ "epochs = 50\n",
+ "lr = 0.00006\n",
+ "batch_size = 2\n",
+ "\n",
+ "hub_model_id = \"segformer-b0-finetuned-segments-sidewalk-oct-22\"\n",
+ "\n",
+ "training_args = TrainingArguments(\n",
+ " \"segformer-b0-finetuned-segments-sidewalk-outputs\",\n",
+ " learning_rate=lr,\n",
+ " num_train_epochs=epochs,\n",
+ " per_device_train_batch_size=batch_size,\n",
+ " per_device_eval_batch_size=batch_size,\n",
+ " save_total_limit=3,\n",
+ " evaluation_strategy=\"steps\",\n",
+ " save_strategy=\"steps\",\n",
+ " save_steps=20,\n",
+ " eval_steps=20,\n",
+ " logging_steps=1,\n",
+ " eval_accumulation_steps=5,\n",
+ " load_best_model_at_end=True,\n",
+ " push_to_hub=True,\n",
+ " hub_model_id=hub_model_id,\n",
+ " hub_strategy=\"end\",\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "pPMzKQO8MmX6"
+ },
+ "source": [
+ "Next, we'll define a function that computes the evaluation metric we want to work with. Because we're doing semantic segmentation, we'll use the mean Intersection over Union (mIoU), directly accessible in the `datasets` library (see [here](https://huggingface.co/metrics/mean_iou)). IoU represents the overlap of segmentation masks. Mean IoU is the average of the IoU of all semantic classes. Take a look at [this blogpost](https://www.jeremyjordan.me/evaluating-image-segmentation-models/) for an overview of evaluation metrics for image segmentation.\n",
+ "\n",
+ "Because our model outputs logits with dimensions height/4 and width/4, we have to upscale them before we can compute the mIoU."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 49,
+ "referenced_widgets": [
+ "1f657a11f0e347ad8ba86800bbacde9f",
+ "92ba38d13cfb4891a880fe268778df6e",
+ "66bc569712af420e8e553e8e3463c0a8",
+ "a15906ccdc694bc68a19e20f48313469",
+ "4a9732e670204eafac847d7fad3f24b9",
+ "322a8d8fe9684c848cca7b97c68bbdcb",
+ "5dec25ed0f744fcc8a6b948c377b9bfc",
+ "c7025b8650fc4051a46beacb54ee76c7",
+ "504c5873466a4ddc9a509f41bc44a763",
+ "182c8515eec746f493318ce9f7438c19",
+ "8298a9c05f1341d691378291a344f5cc"
+ ]
+ },
+ "id": "DKOHOKaOL9Ze",
+ "outputId": "a8b56e6e-96b0-4bd5-ef1f-ecb38c88d6be"
+ },
+ "outputs": [],
+ "source": [
+ "import torch\n",
+ "from torch import nn\n",
+ "import evaluate\n",
+ "import multiprocessing\n",
+ "\n",
+ "metric = evaluate.load(\"mean_iou\")\n",
+ "\n",
+ "def compute_metrics(eval_pred):\n",
+ " with torch.no_grad():\n",
+ " logits, labels = eval_pred\n",
+ " logits_tensor = torch.from_numpy(logits)\n",
+ " # scale the logits to the size of the label\n",
+ " logits_tensor = nn.functional.interpolate(\n",
+ " logits_tensor,\n",
+ " size=labels.shape[-2:],\n",
+ " mode=\"bilinear\",\n",
+ " align_corners=False,\n",
+ " ).argmax(dim=1)\n",
+ "\n",
+ " pred_labels = logits_tensor.detach().cpu().numpy()\n",
+ " metrics = metric._compute(\n",
+ " predictions=pred_labels,\n",
+ " references=labels,\n",
+ " num_labels=len(id2label),\n",
+ " ignore_index=0,\n",
+ " reduce_labels=feature_extractor.do_reduce_labels,\n",
+ " )\n",
+ " \n",
+ " # add per category metrics as individual key-value pairs\n",
+ " per_category_accuracy = metrics.pop(\"per_category_accuracy\").tolist()\n",
+ " per_category_iou = metrics.pop(\"per_category_iou\").tolist()\n",
+ "\n",
+ " metrics.update({f\"accuracy_{id2label[i]}\": v for i, v in enumerate(per_category_accuracy)})\n",
+ " metrics.update({f\"iou_{id2label[i]}\": v for i, v in enumerate(per_category_iou)})\n",
+ "\n",
+ " return metrics"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "3QjK0poxOBmj"
+ },
+ "source": [
+ "Finally, we can instantiate a `Trainer` object."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "NmyNBmg2Wacv",
+ "outputId": "b98a8806-9eeb-4c56-a534-a5c56efe4468"
+ },
+ "outputs": [],
+ "source": [
+ "from transformers import Trainer\n",
+ "\n",
+ "trainer = Trainer(\n",
+ " model=model,\n",
+ " args=training_args,\n",
+ " train_dataset=train_ds,\n",
+ " eval_dataset=test_ds,\n",
+ " compute_metrics=compute_metrics,\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "fcP5RRZfWsex"
+ },
+ "source": [
+ "Now that our trainer is set up, training is as simple as calling the `train` function. We don't need to worry about managing our GPU(s), the trainer will take care of that."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "colab": {
+ "background_save": true,
+ "base_uri": "https://localhost:8080/",
+ "height": 1000
+ },
+ "id": "7Up9QNqOWtSD",
+ "outputId": "32826f5e-88df-4b1a-e2e9-2613cc86fb15"
+ },
+ "outputs": [],
+ "source": [
+ "trainer.train()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "YlOal7giORmw"
+ },
+ "source": [
+ "When we're done with training, we can push our fine-tuned model and the feature extractor to the Hugging Face hub.\n",
+ "\n",
+ "This will also automatically create a model card with our results. We'll supply some extra information in `kwargs` to make the model card more complete."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "fdg5bKK0pjYm"
+ },
+ "outputs": [],
+ "source": [
+ "kwargs = {\n",
+ " \"tags\": [\"vision\", \"image-segmentation\"],\n",
+ " \"finetuned_from\": pretrained_model_name,\n",
+ " \"dataset\": hf_dataset_identifier,\n",
+ "}\n",
+ "\n",
+ "feature_extractor.push_to_hub(hub_model_id)\n",
+ "trainer.push_to_hub(**kwargs)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "yjd6WuBJW0qX"
+ },
+ "source": [
+ "# 4. Inference"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "9YBOUiDuOpXp"
+ },
+ "source": [
+ "Now comes the exciting part, using our fine-tuned model! In this section, we'll show how you can load your model from the hub and use it for inference. \n",
+ "\n",
+ "However, you can also try out your model directly on the Hugging Face Hub, thanks to the cool widgets powered by the [hosted inference API](https://api-inference.huggingface.co/docs/python/html/index.html). If you pushed your model to the hub in the previous step, you should see an inference widget on your model page. You can add default examples to the widget by defining example image URLs in your model card. See [this model card](https://huggingface.co/segments-tobias/segformer-b0-finetuned-segments-sidewalk/blob/main/README.md) as an example."
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "U69agBxj3TjE"
+ },
+ "source": [
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "lKigaXztQijt"
+ },
+ "source": [
+ "## Use the model from the hub"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "JFEwCwp0Qo7q"
+ },
+ "source": [
+ "We'll first load the model from the hub using `SegformerForSemanticSegmentation.from_pretrained()`.\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "yHi_8qKIW1Sa"
+ },
+ "outputs": [],
+ "source": [
+ "from transformers import SegformerFeatureExtractor, SegformerForSemanticSegmentation\n",
+ "\n",
+ "feature_extractor = SegformerFeatureExtractor.from_pretrained(\"nvidia/segformer-b0-finetuned-ade-512-512\")\n",
+ "model = SegformerForSemanticSegmentation.from_pretrained(f\"{hf_username}/{hub_model_id}\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "SQJkEqGxQwz6"
+ },
+ "source": [
+ "Next, we'll load an image from our test dataset."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "R57X_iNkqv6H"
+ },
+ "outputs": [],
+ "source": [
+ "image = test_ds[0]['pixel_values']\n",
+ "gt_seg = test_ds[0]['label']\n",
+ "image"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "7m7IfMv6R3_5"
+ },
+ "source": [
+ "To segment this test image, we first need to prepare the image using the feature extractor. Then we forward it through the model.\n",
+ "\n",
+ "We also need to remember to upscale the output logits to the original image size. In order to get the actual category predictions, we just have to apply an `argmax` on the logits."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "8nNSSqEUBS2v"
+ },
+ "outputs": [],
+ "source": [
+ "from torch import nn\n",
+ "\n",
+ "inputs = feature_extractor(images=image, return_tensors=\"pt\")\n",
+ "outputs = model(**inputs)\n",
+ "logits = outputs.logits # shape (batch_size, num_labels, height/4, width/4)\n",
+ "\n",
+ "# First, rescale logits to original image size\n",
+ "upsampled_logits = nn.functional.interpolate(\n",
+ " logits,\n",
+ " size=image.size[::-1], # (height, width)\n",
+ " mode='bilinear',\n",
+ " align_corners=False\n",
+ ")\n",
+ "\n",
+ "# Second, apply argmax on the class dimension\n",
+ "pred_seg = upsampled_logits.argmax(dim=1)[0]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "oyHddde_SOgv"
+ },
+ "source": [
+ "Now it's time to display the result. The next cell defines the colors for each category, so that they match the \"category coloring\" on Segments.ai."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "cellView": "form",
+ "id": "Ky_8gHCRCJHj"
+ },
+ "outputs": [],
+ "source": [
+ "#@title `def sidewalk_palette()`\n",
+ "\n",
+ "def sidewalk_palette():\n",
+ " \"\"\"Sidewalk palette that maps each class to RGB values.\"\"\"\n",
+ " return [\n",
+ " [0, 0, 0],\n",
+ " [216, 82, 24],\n",
+ " [255, 255, 0],\n",
+ " [125, 46, 141],\n",
+ " [118, 171, 47],\n",
+ " [161, 19, 46],\n",
+ " [255, 0, 0],\n",
+ " [0, 128, 128],\n",
+ " [190, 190, 0],\n",
+ " [0, 255, 0],\n",
+ " [0, 0, 255],\n",
+ " [170, 0, 255],\n",
+ " [84, 84, 0],\n",
+ " [84, 170, 0],\n",
+ " [84, 255, 0],\n",
+ " [170, 84, 0],\n",
+ " [170, 170, 0],\n",
+ " [170, 255, 0],\n",
+ " [255, 84, 0],\n",
+ " [255, 170, 0],\n",
+ " [255, 255, 0],\n",
+ " [33, 138, 200],\n",
+ " [0, 170, 127],\n",
+ " [0, 255, 127],\n",
+ " [84, 0, 127],\n",
+ " [84, 84, 127],\n",
+ " [84, 170, 127],\n",
+ " [84, 255, 127],\n",
+ " [170, 0, 127],\n",
+ " [170, 84, 127],\n",
+ " [170, 170, 127],\n",
+ " [170, 255, 127],\n",
+ " [255, 0, 127],\n",
+ " [255, 84, 127],\n",
+ " [255, 170, 127],\n",
+ " ]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "f4BzL0ISSePY"
+ },
+ "source": [
+ "The next function overlays the output segmentation map on the original image."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "G3HqZXyQB7gJ"
+ },
+ "outputs": [],
+ "source": [
+ "import numpy as np\n",
+ "\n",
+ "def get_seg_overlay(image, seg):\n",
+ " color_seg = np.zeros((seg.shape[0], seg.shape[1], 3), dtype=np.uint8) # height, width, 3\n",
+ " palette = np.array(sidewalk_palette())\n",
+ " for label, color in enumerate(palette):\n",
+ " color_seg[seg == label, :] = color\n",
+ "\n",
+ " # Show image + mask\n",
+ " img = np.array(image) * 0.5 + color_seg * 0.5\n",
+ " img = img.astype(np.uint8)\n",
+ "\n",
+ " return img"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "-yEXFytLSkht"
+ },
+ "source": [
+ "We'll display the result next to the ground-truth mask."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "id": "vnSn2A2U0RMw"
+ },
+ "outputs": [],
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "pred_img = get_seg_overlay(image, pred_seg)\n",
+ "gt_img = get_seg_overlay(image, np.array(gt_seg))\n",
+ "\n",
+ "f, axs = plt.subplots(1, 2)\n",
+ "f.set_figheight(30)\n",
+ "f.set_figwidth(50)\n",
+ "\n",
+ "axs[0].set_title(\"Prediction\", {'fontsize': 40})\n",
+ "axs[0].imshow(pred_img)\n",
+ "axs[1].set_title(\"Ground truth\", {'fontsize': 40})\n",
+ "axs[1].imshow(gt_img)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "r3Chx4bXaCYa"
+ },
+ "source": [
+ "What do you think? Would you send our pizza delivery robot on the road with this segmentation information?\n",
+ "\n",
+ "The result might not be perfect yet, but we can always expand our dataset to make the model more robust. We can now also go train a larger SegFormer model, and see how it stacks up."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "-_p2KvvfT-tK"
+ },
+ "source": [
+ "# 5. Conclusion"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "ZFUlFbJyTZ81"
+ },
+ "source": [
+ "That's it! You now know how to create your own image segmentation dataset and how to use it to fine-tune a semantic segmentation model.\n",
+ "\n",
+ "We introduced you to some useful tools along the way, such as:\n",
+ "\n",
+ "\n",
+ "* [Segments.ai](https://segments.ai) for labeling your data\n",
+ "* [🤗 datasets](https://huggingface.co/docs/datasets/) for creating and sharing a dataset\n",
+ "* [🤗 transformers](https://huggingface.co/transformers) for easily fine-tuning a state-of-the-art segmentation model\n",
+ "* [🤗 hub](https://huggingface.co/docs/hub/main) for sharing our dataset and model, and for creating an inference widget for our model\n",
+ "\n",
+ "\n",
+ "We hope you enjoyed this post and learned something. Feel free to share your own model with us on Twitter ([@TobiasCornille](https://twitter.com/tobiascornille), [@NielsRogge](https://twitter.com/nielsrogge), and [@huggingface](https://twitter.com/huggingface))."
+ ]
+ }
+ ],
+ "metadata": {
+ "accelerator": "GPU",
+ "colab": {
+ "collapsed_sections": [
+ "GdLqU-p2Lvdj"
+ ],
+ "machine_shape": "hm",
+ "provenance": []
+ },
+ "gpuClass": "standard",
+ "kernelspec": {
+ "display_name": "Python 3",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.8.10"
+ },
+ "widgets": {
+ "application/vnd.jupyter.widget-state+json": {
+ "03337e4160434fa1a06d8b47a3c8f9ee": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "080717aafa8f4512ad924afc5576c4c1": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "DescriptionStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "0b2e67dfb1844bbd97b956bf37233000": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "0ee80704b0b1450f9c5481c8a530f76f": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HTMLModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_752b6dc067284438878a92572fe74bfd",
+ "placeholder": "",
+ "style": "IPY_MODEL_c4ceeb1dab4d4d43bff0f1321f4565c2",
+ "value": ""
+ }
+ },
+ "10102a9988b848c9a0f81172bbbd0a35": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HTMLModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_3745898673414b54a7dfcdb964516751",
+ "placeholder": "",
+ "style": "IPY_MODEL_2a6b1f70708b4caa8121c1ef0cc9b194",
+ "value": " 70.0k/70.0k [00:00<00:00, 118kB/s]"
+ }
+ },
+ "1345fff5d7eb436dbef9a9f8018a7b93": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HTMLModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_bef11d6b389d4513a34d68e18b5c7816",
+ "placeholder": "",
+ "style": "IPY_MODEL_3cd4ce7d5e9f43fe85bbc4df5b28019c",
+ "value": "100%"
+ }
+ },
+ "1437c192d7e54418ae9345608d4231b0": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HTMLModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_c0e3485b83934987a5efa44efe58a05d",
+ "placeholder": "",
+ "style": "IPY_MODEL_5d7196ad4b1548ba87b963b267583019",
+ "value": " 14.4M/14.4M [00:10<00:00, 4.03MB/s]"
+ }
+ },
+ "157cef99a08c4aaa8b74ea09b9a73d53": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "DescriptionStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "18290fc44a984892a24e2786ce4a0d4a": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "ProgressStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "182c8515eec746f493318ce9f7438c19": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "18475c77baac42c08d4f9d3839198f88": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "1ade57bbb0c74e929439612a27d6b461": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "1f657a11f0e347ad8ba86800bbacde9f": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HBoxModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_92ba38d13cfb4891a880fe268778df6e",
+ "IPY_MODEL_66bc569712af420e8e553e8e3463c0a8",
+ "IPY_MODEL_a15906ccdc694bc68a19e20f48313469"
+ ],
+ "layout": "IPY_MODEL_4a9732e670204eafac847d7fad3f24b9"
+ }
+ },
+ "1fcda8ebbe7d421884815f2321fe2b11": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "DescriptionStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "217f7b6b976246278adf81a59debfa5a": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HTMLModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_8ace8fb00ccc4a09bac71d6ff6deb051",
+ "placeholder": "",
+ "style": "IPY_MODEL_080717aafa8f4512ad924afc5576c4c1",
+ "value": "Downloading readme: 100%"
+ }
+ },
+ "2327fc96ad0e40aa8a98c4d29fdaea6c": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "DescriptionStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "24c24151cb864078ac1c99e6f97d1bd9": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HTMLModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_d4009b89253042708fdbec5960af10e0",
+ "placeholder": "",
+ "style": "IPY_MODEL_f9bc284e1d17477b97139eaa597696f5",
+ "value": "Extracting data files: 100%"
+ }
+ },
+ "25b4f1cfa3cc425a8a3b1600a987c3ce": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "26ace754da054f3db4a81f5697819fea": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "ProgressStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "28ee9291f1e1418999c9ab4a6924291b": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "29615c3f76514ab295a55628e15e1160": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "2a6b1f70708b4caa8121c1ef0cc9b194": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "DescriptionStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "2d8b1e187c754c24abd4357033c1053e": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HTMLModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_d6749f3d135e4ef2b7cda23d5c0b86d7",
+ "placeholder": "",
+ "style": "IPY_MODEL_5fa9a52011fa4beb92f823d3d1c46a35",
+ "value": "Downloading metadata: 100%"
+ }
+ },
+ "322a8d8fe9684c848cca7b97c68bbdcb": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "338c06e339744025b8333bd4301c0a8b": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HBoxModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_b7e63291402e4739971f7b8db65faaf8",
+ "IPY_MODEL_af48af6f97cf4c6aa3f0c1f0f6d59fe4",
+ "IPY_MODEL_1437c192d7e54418ae9345608d4231b0"
+ ],
+ "layout": "IPY_MODEL_18475c77baac42c08d4f9d3839198f88"
+ }
+ },
+ "34bde1cac94041fcad69d631194885c6": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HTMLModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_ab9ecfc3e19c44159752543430c5d133",
+ "placeholder": "",
+ "style": "IPY_MODEL_5a6bcac80a134ce2abfdcc92ea925d38",
+ "value": "Downloading: 100%"
+ }
+ },
+ "3745898673414b54a7dfcdb964516751": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "3a750da3b8034bcaa7c003e32aa5a6bd": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HTMLModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_28ee9291f1e1418999c9ab4a6924291b",
+ "placeholder": "",
+ "style": "IPY_MODEL_5fc4cb70f837479dbe27a372baa86059",
+ "value": " 4.26k/4.26k [00:00<00:00, 179kB/s]"
+ }
+ },
+ "3c2bbc396857412abec28f3eaf4c5b5c": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "3cd4ce7d5e9f43fe85bbc4df5b28019c": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "DescriptionStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "3fc2b3dd6d2d4b69996908a25b9b3d54": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "DescriptionStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "3ff882aec124413d8dcff4d50346f05e": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HTMLModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_3c2bbc396857412abec28f3eaf4c5b5c",
+ "placeholder": "",
+ "style": "IPY_MODEL_4404c1a831b144e7a466eadf1bbe18bc",
+ "value": " 324M/324M [00:16<00:00, 16.4MB/s]"
+ }
+ },
+ "41da83b4059946aeb2c37067c3b136aa": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HBoxModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_72f5479f320a4869aae13f4ec852d425",
+ "IPY_MODEL_ff68b3eda7f3401fbc5f2cf52d702c14",
+ "IPY_MODEL_672f8b67867b40c68c352d0c65238975"
+ ],
+ "layout": "IPY_MODEL_0b2e67dfb1844bbd97b956bf37233000"
+ }
+ },
+ "4277bd6b06e8407ca5e2ac835beac227": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "FloatProgressModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_7d15aaf81a844a9384d11eae6e52a052",
+ "max": 1,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_6e1ed941b44f467f8cc847e320ef291a",
+ "value": 1
+ }
+ },
+ "42e24cc126e14bf5a1fd4bf43ad6ca0c": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "43991a4fbdce48fc8a816faee5d76b20": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "DescriptionStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "4404c1a831b144e7a466eadf1bbe18bc": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "DescriptionStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "4a9732e670204eafac847d7fad3f24b9": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "4b17217df6a84c29945fbbe337abbf62": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HTMLModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_c09bac6416c041e595c307f843b5c67a",
+ "placeholder": "",
+ "style": "IPY_MODEL_7be11677747a4a268183d7f2a2cdc212",
+ "value": "Downloading: 100%"
+ }
+ },
+ "4b899362f3c742afb097116dfda00607": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "FloatProgressModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_a91d2d3b0c264e338913841719956b5c",
+ "max": 1,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_18290fc44a984892a24e2786ce4a0d4a",
+ "value": 1
+ }
+ },
+ "504c5873466a4ddc9a509f41bc44a763": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "ProgressStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "53fa9b65775241d78bbd3b6913f8063b": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "ProgressStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "590646dbf32249c98af9b9b31b0725ef": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "ProgressStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "5a6bcac80a134ce2abfdcc92ea925d38": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "DescriptionStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "5afb5adc1f1e4ac4902d4e21c51a7818": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "ProgressStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "5d7196ad4b1548ba87b963b267583019": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "DescriptionStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "5d95c48258ce4d8bb37ab64cdda30d26": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HTMLModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_677209c8307245838ccfddb67f11d832",
+ "placeholder": "",
+ "style": "IPY_MODEL_2327fc96ad0e40aa8a98c4d29fdaea6c",
+ "value": " 1/? [00:00<00:00, 1.13 tables/s]"
+ }
+ },
+ "5dec25ed0f744fcc8a6b948c377b9bfc": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "DescriptionStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "5fa9a52011fa4beb92f823d3d1c46a35": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "DescriptionStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "5fc4cb70f837479dbe27a372baa86059": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "DescriptionStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "64fa7b9cd5f34a6895ee16595e81f6df": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "668f188c31a844a6a9aa45869718cd7b": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HTMLModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_a2af25d5b022473bb462c910cee74a53",
+ "placeholder": "",
+ "style": "IPY_MODEL_86983b8263974f8d8b5c51bd205085b7",
+ "value": " 1/1 [00:00<00:00, 22.69it/s]"
+ }
+ },
+ "66bc569712af420e8e553e8e3463c0a8": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "FloatProgressModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_c7025b8650fc4051a46beacb54ee76c7",
+ "max": 13077,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_504c5873466a4ddc9a509f41bc44a763",
+ "value": 13077
+ }
+ },
+ "672f8b67867b40c68c352d0c65238975": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HTMLModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_e43eaee5d3ff4d03bc1bad37031b21bb",
+ "placeholder": "",
+ "style": "IPY_MODEL_e01a28deac8e4d2683e8bfddfdf3fdce",
+ "value": " 1/1 [00:19<00:00, 19.19s/it]"
+ }
+ },
+ "677209c8307245838ccfddb67f11d832": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "6af1e65a3d594244a33cda5ac9830389": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "6e1ed941b44f467f8cc847e320ef291a": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "ProgressStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "7132be16062d4328beb324872727b0ce": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HBoxModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_34bde1cac94041fcad69d631194885c6",
+ "IPY_MODEL_ca4ffd6aabf040c98a8cc91ca1593e45",
+ "IPY_MODEL_10102a9988b848c9a0f81172bbbd0a35"
+ ],
+ "layout": "IPY_MODEL_c3871f07f1094c3c827c37b1d90e3b8f"
+ }
+ },
+ "717790780b904ed0a4f8ee30ad4af4ef": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "71a3fa014a4744f5a551b6c52ffbd511": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HBoxModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_24c24151cb864078ac1c99e6f97d1bd9",
+ "IPY_MODEL_4277bd6b06e8407ca5e2ac835beac227",
+ "IPY_MODEL_8d10bd2fae664a93b3f48397ef64ee09"
+ ],
+ "layout": "IPY_MODEL_25b4f1cfa3cc425a8a3b1600a987c3ce"
+ }
+ },
+ "72f5479f320a4869aae13f4ec852d425": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HTMLModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_93839cc922d94696a08f207274b64972",
+ "placeholder": "",
+ "style": "IPY_MODEL_1fcda8ebbe7d421884815f2321fe2b11",
+ "value": "Downloading data files: 100%"
+ }
+ },
+ "752b6dc067284438878a92572fe74bfd": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "78ed12b4b55f4af0ac0a0a674f525374": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "FloatProgressModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_cc08910b015e41e58a16f8417a65b045",
+ "max": 4260,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_7cb8df8659c845db9bf813b6bc854880",
+ "value": 4260
+ }
+ },
+ "7be11677747a4a268183d7f2a2cdc212": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "DescriptionStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "7c16c33137c74a4c8eb6e45454cfee77": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "DescriptionStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "7cb8df8659c845db9bf813b6bc854880": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "ProgressStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "7d15aaf81a844a9384d11eae6e52a052": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "8298a9c05f1341d691378291a344f5cc": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "DescriptionStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "86983b8263974f8d8b5c51bd205085b7": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "DescriptionStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "8753fa3c37f345a2adf1af776d389aba": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "FloatProgressModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_de4844e91374458d8e8b4a593984b48f",
+ "max": 1,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_d5cabb26063545bba172d8b9db670ce0",
+ "value": 0
+ }
+ },
+ "8905921ad7e843d5864fb0bbc0fc9f97": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HBoxModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_217f7b6b976246278adf81a59debfa5a",
+ "IPY_MODEL_78ed12b4b55f4af0ac0a0a674f525374",
+ "IPY_MODEL_3a750da3b8034bcaa7c003e32aa5a6bd"
+ ],
+ "layout": "IPY_MODEL_42e24cc126e14bf5a1fd4bf43ad6ca0c"
+ }
+ },
+ "8ace8fb00ccc4a09bac71d6ff6deb051": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "8d10bd2fae664a93b3f48397ef64ee09": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HTMLModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_64fa7b9cd5f34a6895ee16595e81f6df",
+ "placeholder": "",
+ "style": "IPY_MODEL_7c16c33137c74a4c8eb6e45454cfee77",
+ "value": " 1/1 [00:00<00:00, 35.09it/s]"
+ }
+ },
+ "8e5bf0a6382b40828386563657b1bedd": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "8f9fced5333e4c698766836267b084bd": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "FloatProgressModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_adf003e9917d4a959d0cad14735f6f11",
+ "max": 324302379,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_a7d83738f6be4d4da4394636ee41a712",
+ "value": 324302379
+ }
+ },
+ "916862871cf74e4ca3dda0a20f6c5871": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "DescriptionStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "92ba38d13cfb4891a880fe268778df6e": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HTMLModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_322a8d8fe9684c848cca7b97c68bbdcb",
+ "placeholder": "",
+ "style": "IPY_MODEL_5dec25ed0f744fcc8a6b948c377b9bfc",
+ "value": "Downloading builder script: 100%"
+ }
+ },
+ "93839cc922d94696a08f207274b64972": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "93b5f44097d54bb2b0e0844994723dd3": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "94bd515e333348af9d1f0174b3659177": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "982338bb1fd64ae593c5ba45ea7df33f": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HBoxModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_0ee80704b0b1450f9c5481c8a530f76f",
+ "IPY_MODEL_8753fa3c37f345a2adf1af776d389aba",
+ "IPY_MODEL_c413bd4815d44b17a6b151851dc49666"
+ ],
+ "layout": "IPY_MODEL_717790780b904ed0a4f8ee30ad4af4ef"
+ }
+ },
+ "9fe6950e856949bb8ab87a4297258ec3": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HBoxModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_d6b1b99b299a478080aad72a7f4b0ae8",
+ "IPY_MODEL_8f9fced5333e4c698766836267b084bd",
+ "IPY_MODEL_3ff882aec124413d8dcff4d50346f05e"
+ ],
+ "layout": "IPY_MODEL_ff1d05b7a4814825bbcfa67676fdf265"
+ }
+ },
+ "a0c71dab400a4781b4eb563a90d89807": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": "hidden",
+ "width": null
+ }
+ },
+ "a15906ccdc694bc68a19e20f48313469": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HTMLModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_182c8515eec746f493318ce9f7438c19",
+ "placeholder": "",
+ "style": "IPY_MODEL_8298a9c05f1341d691378291a344f5cc",
+ "value": " 13.1k/13.1k [00:00<00:00, 444kB/s]"
+ }
+ },
+ "a2af25d5b022473bb462c910cee74a53": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "a333fe7202cc4148b09813a9eb7c7835": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HBoxModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_2d8b1e187c754c24abd4357033c1053e",
+ "IPY_MODEL_be90780c4aa44cf7b16bcf245a960f59",
+ "IPY_MODEL_ab1871dc88fe439f852b1652808e35b3"
+ ],
+ "layout": "IPY_MODEL_fe409f2089ca42249b35fa5d892ed6d9"
+ }
+ },
+ "a498c595ea514b9087013c4483af0ebd": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HBoxModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_f7349098575d4d859500cf4e3b015e6a",
+ "IPY_MODEL_f349a6b0d60c47e7a7641aecc19ac179",
+ "IPY_MODEL_5d95c48258ce4d8bb37ab64cdda30d26"
+ ],
+ "layout": "IPY_MODEL_a0c71dab400a4781b4eb563a90d89807"
+ }
+ },
+ "a7d83738f6be4d4da4394636ee41a712": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "ProgressStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "a91d2d3b0c264e338913841719956b5c": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "ab1871dc88fe439f852b1652808e35b3": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HTMLModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_b806c467df834477a7794f74bc30b049",
+ "placeholder": "",
+ "style": "IPY_MODEL_43991a4fbdce48fc8a816faee5d76b20",
+ "value": " 635/635 [00:00<00:00, 20.3kB/s]"
+ }
+ },
+ "ab9ecfc3e19c44159752543430c5d133": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "adf003e9917d4a959d0cad14735f6f11": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "af48af6f97cf4c6aa3f0c1f0f6d59fe4": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "FloatProgressModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_6af1e65a3d594244a33cda5ac9830389",
+ "max": 14380029,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_5afb5adc1f1e4ac4902d4e21c51a7818",
+ "value": 14380029
+ }
+ },
+ "b7e63291402e4739971f7b8db65faaf8": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HTMLModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_fc9f20c3b880418cb7918532e242cda9",
+ "placeholder": "",
+ "style": "IPY_MODEL_157cef99a08c4aaa8b74ea09b9a73d53",
+ "value": "Downloading: 100%"
+ }
+ },
+ "b806c467df834477a7794f74bc30b049": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "be90780c4aa44cf7b16bcf245a960f59": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "FloatProgressModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_1ade57bbb0c74e929439612a27d6b461",
+ "max": 635,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_e66ca393162a494a9c56c35c8bbddb59",
+ "value": 635
+ }
+ },
+ "bef11d6b389d4513a34d68e18b5c7816": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "c09bac6416c041e595c307f843b5c67a": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "c0e3485b83934987a5efa44efe58a05d": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "c3871f07f1094c3c827c37b1d90e3b8f": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "c413bd4815d44b17a6b151851dc49666": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HTMLModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_ffe38865177443cb9d4b65b4ca55a8b6",
+ "placeholder": "",
+ "style": "IPY_MODEL_eb62c77d660d47c6906220748b7820c0",
+ "value": " 0/0 [00:00<?, ?it/s]"
+ }
+ },
+ "c4ceeb1dab4d4d43bff0f1321f4565c2": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "DescriptionStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "c7025b8650fc4051a46beacb54ee76c7": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "ca4ffd6aabf040c98a8cc91ca1593e45": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "FloatProgressModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_f3a5136178754c7d9d116335464c294b",
+ "max": 70043,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_590646dbf32249c98af9b9b31b0725ef",
+ "value": 70043
+ }
+ },
+ "cc08910b015e41e58a16f8417a65b045": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "cfc7a4a16ab34cc8ab359b18102964d5": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "d1b98c4b67b4496084c55c818ab80935": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "DescriptionStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "d35e26d49c4c454dbde5c061fb708c3f": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HBoxModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_1345fff5d7eb436dbef9a9f8018a7b93",
+ "IPY_MODEL_4b899362f3c742afb097116dfda00607",
+ "IPY_MODEL_668f188c31a844a6a9aa45869718cd7b"
+ ],
+ "layout": "IPY_MODEL_fa68cab4efdb4132982c2c6461f3ffe0"
+ }
+ },
+ "d4009b89253042708fdbec5960af10e0": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "d5cabb26063545bba172d8b9db670ce0": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "ProgressStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "d6749f3d135e4ef2b7cda23d5c0b86d7": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "d6b1b99b299a478080aad72a7f4b0ae8": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HTMLModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_93b5f44097d54bb2b0e0844994723dd3",
+ "placeholder": "",
+ "style": "IPY_MODEL_3fc2b3dd6d2d4b69996908a25b9b3d54",
+ "value": "Downloading data: 100%"
+ }
+ },
+ "de4844e91374458d8e8b4a593984b48f": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": "20px"
+ }
+ },
+ "dfa28a6e7fa84c88b3e89463160348bf": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": "20px"
+ }
+ },
+ "e01a28deac8e4d2683e8bfddfdf3fdce": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "DescriptionStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "e43eaee5d3ff4d03bc1bad37031b21bb": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "e500fc12f99149c7a4ec2e67481550e0": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "ProgressStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "e66ca393162a494a9c56c35c8bbddb59": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "ProgressStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "ProgressStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "bar_color": null,
+ "description_width": ""
+ }
+ },
+ "e8a7d503141d4917918bbc9daf949ccd": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HBoxModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HBoxModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HBoxView",
+ "box_style": "",
+ "children": [
+ "IPY_MODEL_4b17217df6a84c29945fbbe337abbf62",
+ "IPY_MODEL_f656216b07eb40a2a6b3fd176d284455",
+ "IPY_MODEL_ea96bd5c08f5485a8d5197f17b43cfb2"
+ ],
+ "layout": "IPY_MODEL_29615c3f76514ab295a55628e15e1160"
+ }
+ },
+ "ea96bd5c08f5485a8d5197f17b43cfb2": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HTMLModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_03337e4160434fa1a06d8b47a3c8f9ee",
+ "placeholder": "",
+ "style": "IPY_MODEL_916862871cf74e4ca3dda0a20f6c5871",
+ "value": " 852/852 [00:00<00:00, 34.5kB/s]"
+ }
+ },
+ "eb62c77d660d47c6906220748b7820c0": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "DescriptionStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "f349a6b0d60c47e7a7641aecc19ac179": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "FloatProgressModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "info",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_dfa28a6e7fa84c88b3e89463160348bf",
+ "max": 1,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_e500fc12f99149c7a4ec2e67481550e0",
+ "value": 1
+ }
+ },
+ "f3a5136178754c7d9d116335464c294b": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "f656216b07eb40a2a6b3fd176d284455": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "FloatProgressModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_cfc7a4a16ab34cc8ab359b18102964d5",
+ "max": 852,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_53fa9b65775241d78bbd3b6913f8063b",
+ "value": 852
+ }
+ },
+ "f7349098575d4d859500cf4e3b015e6a": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "HTMLModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "HTMLModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "HTMLView",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_94bd515e333348af9d1f0174b3659177",
+ "placeholder": "",
+ "style": "IPY_MODEL_d1b98c4b67b4496084c55c818ab80935",
+ "value": ""
+ }
+ },
+ "f9bc284e1d17477b97139eaa597696f5": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "DescriptionStyleModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "DescriptionStyleModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "StyleView",
+ "description_width": ""
+ }
+ },
+ "fa68cab4efdb4132982c2c6461f3ffe0": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "fc9f20c3b880418cb7918532e242cda9": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "fe409f2089ca42249b35fa5d892ed6d9": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "ff1d05b7a4814825bbcfa67676fdf265": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ },
+ "ff68b3eda7f3401fbc5f2cf52d702c14": {
+ "model_module": "@jupyter-widgets/controls",
+ "model_module_version": "1.5.0",
+ "model_name": "FloatProgressModel",
+ "state": {
+ "_dom_classes": [],
+ "_model_module": "@jupyter-widgets/controls",
+ "_model_module_version": "1.5.0",
+ "_model_name": "FloatProgressModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/controls",
+ "_view_module_version": "1.5.0",
+ "_view_name": "ProgressView",
+ "bar_style": "success",
+ "description": "",
+ "description_tooltip": null,
+ "layout": "IPY_MODEL_8e5bf0a6382b40828386563657b1bedd",
+ "max": 1,
+ "min": 0,
+ "orientation": "horizontal",
+ "style": "IPY_MODEL_26ace754da054f3db4a81f5697819fea",
+ "value": 1
+ }
+ },
+ "ffe38865177443cb9d4b65b4ca55a8b6": {
+ "model_module": "@jupyter-widgets/base",
+ "model_module_version": "1.2.0",
+ "model_name": "LayoutModel",
+ "state": {
+ "_model_module": "@jupyter-widgets/base",
+ "_model_module_version": "1.2.0",
+ "_model_name": "LayoutModel",
+ "_view_count": null,
+ "_view_module": "@jupyter-widgets/base",
+ "_view_module_version": "1.2.0",
+ "_view_name": "LayoutView",
+ "align_content": null,
+ "align_items": null,
+ "align_self": null,
+ "border": null,
+ "bottom": null,
+ "display": null,
+ "flex": null,
+ "flex_flow": null,
+ "grid_area": null,
+ "grid_auto_columns": null,
+ "grid_auto_flow": null,
+ "grid_auto_rows": null,
+ "grid_column": null,
+ "grid_gap": null,
+ "grid_row": null,
+ "grid_template_areas": null,
+ "grid_template_columns": null,
+ "grid_template_rows": null,
+ "height": null,
+ "justify_content": null,
+ "justify_items": null,
+ "left": null,
+ "margin": null,
+ "max_height": null,
+ "max_width": null,
+ "min_height": null,
+ "min_width": null,
+ "object_fit": null,
+ "object_position": null,
+ "order": null,
+ "overflow": null,
+ "overflow_x": null,
+ "overflow_y": null,
+ "padding": null,
+ "right": null,
+ "top": null,
+ "visibility": null,
+ "width": null
+ }
+ }
+ }
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}