{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Digit Detection with the Masterful CLI Trainer\n", "\n", "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)][1]        [![Download](images/download.png)][2][Download this Notebook][2]\n", "\n", "[1]:https://colab.research.google.com/github/masterfulai/masterful-docs/blob/main/notebooks/guide_cli_digit_detection.ipynb\n", "[2]:https://docs.masterfulai.com/0.5.2/notebooks/guide_cli_digit_detection.ipynb\n", "\n", "In this guide, you will take a first look at Object Detection with the [Masterful CLI Trainer](../notebooks/tutorial_quickstart_cli.ipynb) to train a state of the art model. \n", "\n", "This guide will use a simple dataset of handwritten digits called [YYMNIST](https://github.com/YunYang1994/yymnist). This dataset was created by [Yun Yang](https://github.com/YunYang1994) as the object detection equivalent of [MNIST](http://yann.lecun.com/exdb/mnist/) for classification. It's a wonderful dataset for exploring object detection because its much faster to train and understand than the standard detection datasets like [MSCOCO](https://cocodataset.org/#home).\n", "\n", "This guide will also demonstrate the power of using unlabeled data inside the Masterful CLI Trainer." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Define the Application\n", "\n", "In this guide, your challenge is to build a CV model that can take an image with handwritten digits and localize the position of each digit and determine the class of each digit. This example is designed to get you familiar with using the Masterful CLI Trainer to perform different computer vision tasks.\n", "\n", "Since you want to identify objects in the image, and their location, the CV task for this problem is **object detection**." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## TL;DR\n", "\n", "Don't want to read the rest of this guide, and want to start training\n", "immediately? The following command shows you how to start training\n", "with Masterful, using a configuration file and dataset on S3.\n", "\n", "```\n", "masterful-train --config https://masterful-public.s3.us-west-1.amazonaws.com/datasets/yymnist/training_with_unlabeled.yaml\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Prepare the Data\n", "\n", "For this guide, you will use the [YYMNIST](https://github.com/YunYang1994/yymnist) dataset, which is an MNIST-like dataset for Object Detection. In this section, you will take the raw dataset and convert it into a format that Masterful can understand. Along the way, you will visualize a few examples of the data to see both the input to the model, as well as the predictions after training the model.\n", "\n", "The original dataset can be generated by following the instructions [here](https://github.com/YunYang1994/yymnist#objection-detection). This will generate a folder of images and a `label.txt` file which contains the bounding box ground truth for each of the images. The label file has a simple format as follows:\n", "\n", "```\n", "# image_path x_min, y_min, x_max, y_max, class_id x_min, y_min ,..., class_id \n", "```\n", "\n", "This label format also happens to match the CSV format for [Masterful Object Detection](../markdown/guide_cli_data_directory_format.md#object-detection), which makes the data conversion task much easier. For your training and test sets, you can use the label file directly, and for your unlabeled set, you simply have to remove all of the bounding box and class information from each line.\n", "\n", "Converting each dataset is typically a one-off operation that is different for every dataset you want to train with. For brevity, you can use the already converted dataset located at the public S3 bucket `s3://masterful-public/datasets/yymnist/`. In this bucket, you will see the following files:\n", "\n", "```\n", "yymnist\\\n", " test.csv\n", " train.csv\n", " unlabeled.csv\n", " training_with_unlabeled.yaml\n", " training_no_unlabeled.yaml\n", " images\\\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Explore the Data\n", "\n", "You should always visually inspect your dataset to get a sense of what the model will see, and to roughly verify that your dataset conversion routine worked properly and you are not training with corrupted or incorrect data. This is especially important for object detection since it is very easy to generate incorrect bounding boxes during dataset conversion." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "MASTERFUL: Your account has been successfully activated. Masterful v0.5.2 is loaded.\n" ] } ], "source": [ "# Install dependencies necessary to run the following\n", "# code.\n", "!pip install opencv-python-headless --quiet\n", "!pip install masterful --quiet\n", "\n", "# Import the packages used below.\n", "import matplotlib.pyplot as plt\n", "import os\n", "import requests\n", "import tarfile\n", "import tempfile\n", "import tensorflow as tf\n", "import urllib.request\n", "\n", "# Import and activate the Masterful package.\n", "import masterful\n", "masterful = masterful.activate()\n", "\n", "# Helper function to visualize bounding boxes from the dataset\n", "# on the source image.\n", "from masterful.data.visualize import create_annotated_image\n", "\n", "# Helper function to display a progress when downloading\n", "# a file using HTTP.\n", "from masterful.utils.downloader import progress_bar_factory\n", "\n", "# This is necessary for running inside of Colab/Jupyter,\n", "# since the CLI trainer is run outside of the kernel\n", "# (as a script command).\n", "gpus = tf.config.experimental.list_physical_devices('GPU')\n", "for gpu in gpus:\n", " tf.config.experimental.set_memory_growth(gpu, True)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2MAAANSCAYAAADoFxYBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOz9eZSk213e+X53zHNk5DxUDjVkZc2q0imdI6EBCSQMFliyG8vIbgwNXvKlJbfNBW4bL6829DU2WE3T9LLhIhsMMgaBALdomYvkKwZJSEdHZ6x5yKyc5ynmOd73/lH5vorMyppODVmZ+XzWipURb7zxxs5cVbnzib33bxvbthEREREREZGny7PTDRAREREREdmPFMZERERERER2gMKYiIiIiIjIDlAYExERERER2QEKYyIiIiIiIjtAYUxERERERGQHPLEwZoz5bmPMdWPMqDHmnz6p9xEREdlN1D+KiIjDPIl9xowxXuAG8AFgBvgm8FHbtq889jcTERHZJdQ/iohIsyc1MvY8MGrb9i3btqvAZ4APPaH3EhER2S3UP4qIiMv3hK7bB0w3PZ4BXrjbye3t7fbQ0NATaoqIiDwNr7zyyopt2x073Y5n3EP1j6A+UkRkt5uYmGBlZcVs99yTCmP3ZYz5GPAxgIGBAV5++eWdaoqIiDwGxpjJnW7DXqE+UkRk7zh//vxdn3tS0xRngf6mxwc2jrls2/6Ubdvnbds+39GhD1JFRGRfuG//COojRUT2iycVxr4JDBtjDhpjAsAPAH/8hN5LRERkt1D/KCIiricyTdG27box5hPAFwAv8Bu2bV9+Eu8lIiKyW6h/FBGRZk9szZht238C/MmTur6IiMhupP5RREQcT2zTZxEREREREbk7hTEREREREZEdoDAmIiIiIiKyAxTGREREREREdoDCmIiIiIiIyA5QGBMREREREdkBCmMiIiIiIiI7QGFMRERERERkByiMiYiIiIiI7ACFMRERERERkR3g2+kGiDywSgUsa6dbsXuEQmDMTrdCRERERO5CYUx2j3PnIJ0GjwZ072t+Hspl8Pt3uiUiIiIichcKY7K7XL4MqdROt+LZ19m50y0QERERkfvQEIOIiIiIiMgOUBgTERERERHZAQpjIiIiIiIiO0BhTEREREREZAcojImIiIiIiOwAhTEREREREZEdoDAmIiIiIiKy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f+5fmKb5NznAr/Ez7MD3kQ3cP8IB/t+9k4P6f7umfQ3VRzZa/7jZtobqIxutf4Q69ZFmnaqUWB/cqZxygztzXv9BvduzSxuHuVNB5yJwxWond+aE/jlwE/gzoLmObfx/uDOcXuLOXNYf2K193KlS8x82X/P3gJcOUJt/fbNNlzbf4F01t/8Hm22+DnxDHdr7OnemV1wCLmx+fONBfp3v0eYD+ToDp4F3N9t1GfiZzcuHudPp3QJ+F/BuXu7b/P7W5vXDdXiNd2vzX2y+xpeB3+D9ilJ1f1/UtP0reb9S1IF9jZ/lDw54H0kD9I+b7WmoPnKX9h7I/9s1bWioPvIe7T2wr/M9+psD+f/7Hu098P3jZnu+kifQRxqbDyQiIiIiIiJPUL2nKYqIiIiIiDyTFMZERERERETqQGFMRERERESkDhTGRERERERE6kBhTEREREREpA4UxkREREREROpAYUxERERERKQOFMZERERERETqQGFMRERERESkDhTGRERERERE6kBhTEREREREpA4UxkREREREROpAYUxERERERKQOFMZERERERETqQGFMRERERESkDhTGRERERERE6kBhTEREREREpA4UxkREREREROpAYUxERERERKQOFMZERERERETqQGFMRERERESkDhTGRERERERE6kBhTEREREREpA4UxkREREREROpAYUxERERERKQOFMZERERERETqQGFMRERERESkDhTGRERERERE6kBhTEREREREpA4UxkREREREROpAYUxERERERKQOFMZERERERETqQGFMRERERESkDhTGRERERERE6kBhTEREREREpA4UxkREREREROpAYUxERERERKQOFMZERERERETqQGFMRERERESkDhTGRERERERE6kBhTEREREREpA4UxkREREREROpAYUxERERERKQOFMZERERERETqQGFMRERERESkDhTGRERERERE6kBhTEREREREpA4UxkREREREROpAYUxERERERKQOFMZERERERETqQGFMRERERESkDhTGRERERERE6kBhTEREREREpA4UxkREREREROpAYUxERERERKQO9i2MGYbx9YZhXDcM45ZhGD+5Xz9HRESkkah/FBERi2Ga5t4/qGE4gRvA1wCzwNvAd5mmeXXPf5iIiEiDUP8oIiK19mtk7APALdM0J0zTLAK/BXzL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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "DATASET_ROOT = \"https://masterful-public.s3.us-west-1.amazonaws.com/datasets/yymnist/\"\n", "TRAINING_CSV_URL = os.path.join(DATASET_ROOT, \"train.csv\")\n", "\n", "with tempfile.TemporaryDirectory() as temp_directory:\n", " training_csv_name = os.path.join(temp_directory, \"train.csv\") \n", " _ = urllib.request.urlretrieve(TRAINING_CSV_URL, training_csv_name)\n", "\n", " examples = []\n", " with open(training_csv_name) as training_csv:\n", " examples = training_csv.readlines()\n", "\n", "f, axarr = plt.subplots(2, 2, figsize=(15,15))\n", "_ = axarr[0, 0].imshow(create_annotated_image(examples[0], DATASET_ROOT))\n", "_ = axarr[0, 1].imshow(create_annotated_image(examples[1], DATASET_ROOT))\n", "_ = axarr[1, 0].imshow(create_annotated_image(examples[2], DATASET_ROOT))\n", "_ = axarr[1, 1].imshow(create_annotated_image(examples[3], DATASET_ROOT))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Configure the CLI Trainer\n", "\n", "The Masterful CLI Trainer is a command line tool that trains a production quality model with no code required. The Masterful CLI Trainer take a [YAML](../markdown/guide_cli_yaml_config.md) configuration file as input. The configuration file fully specifies everything necessary for training, including the dataset, model, export formats, and evaluation metrics." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Choosing a Model\n", "\n", "Masterful provides many different state of the art object detection models that you can choose from. In general, choosing a model can have different constraints than training the model (are you deploying on server or edge? Runtime or latency constraints? Memory constraints?). You generally want to choose a model that is large enough to fit your data, but not so large as to overfit the training data and \"memorize\" the results, which can lead to poor generalization performance.\n", "\n", "The Masterful Object Detection Model Zoo supports the following model architectures.\n", "\n", "| Model Name | Year | Description |\n", "|-----------------------------------|------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n", "| `ssd_mobilenet_v1_fpn` | 2018 | Single-Shot Detector with MobileNet V1 Feature Pyramid backbone, from the paper [Focal Loss for Dense Object Detection](https://arxiv.org/abs/1708.02002) |\n", "| `ssd_mobilenet_v2` | 2018 | Single-Shot Detector with MobileNet V2 backbone, from the paper [Focal Loss for Dense Object Detection](https://arxiv.org/abs/1708.02002) |\n", "| `ssd_mobilenet_v2_fpnlite` | 2018 | Single-Shot Detector with MobileNet V2 Feature Pyramid Lite backbone, from the paper [Focal Loss for Dense Object Detection](https://arxiv.org/abs/1708.02002) |\n", "| `ssd_resnet50_v1_fpn` | 2018 | Single-Shot Detector with ResNet-50 V1 Feature Pyramid backbone, from the paper [Focal Loss for Dense Object Detection](https://arxiv.org/abs/1708.02002) |\n", "| `ssd_resnet101_v1_fpn` | 2018 | Single-Shot Detector with ResNet-101 V1 Feature Pyramid backbone, from the paper [Focal Loss for Dense Object Detection](https://arxiv.org/abs/1708.02002) |\n", "| `ssd_resnet152_v1_fpn` | 2018 | Single-Shot Detector with ResNet-152 V1 Feature Pyramid backbone, from the paper [Focal Loss for Dense Object Detection](https://arxiv.org/abs/1708.02002) |\n", "| `retinanet_50` | 2018 | RetinaNet with ResNet-50 V1 Feature Pyramid backbone, from the paper [Focal Loss for Dense Object Detection](https://arxiv.org/abs/1708.02002) |\n", "| `retinanet_101` | 2018 | RetinaNet with ResNet-101 V1 Feature Pyramid backbone, from the paper [Focal Loss for Dense Object Detection](https://arxiv.org/abs/1708.02002) |\n", "| `retinanet_152` | 2018 | RetinaNet with ResNet-152 V1 Feature Pyramid backbone, from the paper [Focal Loss for Dense Object Detection](https://arxiv.org/abs/1708.02002) |\n", "| `ssd_efficientdet_d0` | 2019 | EfficientDet-D0 model from the paper [EfficientDet: Scalable and Efficient Object Detection](https://arxiv.org/abs/1911.09070) |\n", "| `ssd_efficientdet_d1` | 2019 | EfficientDet-D1 model from the paper [EfficientDet: Scalable and Efficient Object Detection](https://arxiv.org/abs/1911.09070) |\n", "| `ssd_efficientdet_d2` | 2019 | EfficientDet-D2 model from the paper [EfficientDet: Scalable and Efficient Object Detection](https://arxiv.org/abs/1911.09070) |\n", "| `ssd_efficientdet_d3` | 2019 | EfficientDet-D3 model from the paper [EfficientDet: Scalable and Efficient Object Detection](https://arxiv.org/abs/1911.09070) |\n", "| `ssd_efficientdet_d4` | 2019 | EfficientDet-D4 model from the paper [EfficientDet: Scalable and Efficient Object Detection](https://arxiv.org/abs/1911.09070) |\n", "| `ssd_efficientdet_d5` | 2019 | EfficientDet-D5 model from the paper [EfficientDet: Scalable and Efficient Object Detection](https://arxiv.org/abs/1911.09070) |\n", "| `ssd_efficientdet_d6` | 2019 | EfficientDet-D6 model from the paper [EfficientDet: Scalable and Efficient Object Detection](https://arxiv.org/abs/1911.09070) |\n", "| `ssd_efficientdet_d7` | 2019 | EfficientDet-D7 model from the paper [EfficientDet: Scalable and Efficient Object Detection](https://arxiv.org/abs/1911.09070) |\n", "| `faster_rcnn_resnet50_v1` | 2016 | Faster R-CNN model with a ResNet-50 V1 backbone, from the paper [Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks](https://arxiv.org/abs/1506.01497) |\n", "| `faster_rcnn_resnet101_v1` | 2016 | Faster R-CNN model with a ResNet-101 V1 backbone, from the paper [Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks](https://arxiv.org/abs/1506.01497) |\n", "| `faster_rcnn_resnet152_v1` | 2016 | Faster R-CNN model with a ResNet-152 V1 backbone, from the paper [Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks](https://arxiv.org/abs/1506.01497) |\n", "| `faster_rcnn_inception_resnet_v2` | 2016 | Faster R-CNN model with an Inception ResNet V2 backbone, from the paper [Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks](https://arxiv.org/abs/1506.01497) |\n", "| `centernet_hourglass_104` | 2019 | CenterNet model with an Hourglass-104 backbone, from the paper [Objects as Points](https://arxiv.org/abs/1904.07850) |\n", "| `centernet_resnet50_v1_fpn` | 2019 | CenterNet model with a ResNet-50 V1 backbone, from the paper [Objects as Points](https://arxiv.org/abs/1904.07850) |\n", "| `centernet_resnet101_v1_fpn` | 2019 | CenterNet model with a ResNet-101 V1 backbone, from the paper [Objects as Points](https://arxiv.org/abs/1904.07850) |\n", "| `centernet_resnet50_v2` | 2019 | CenterNet model with a ResNet-50 V2 backbone, from the paper [Objects as Points](https://arxiv.org/abs/1904.07850) |\n", "| `centernet_mobilenet_v2_fpn` | 2019 | CenterNet model with a MobileNet V2 backbone, from the paper [Objects as Points](https://arxiv.org/abs/1904.07850) | \n", "\n", "\n", "In the example below, you will select a [SSD](https://arxiv.org/abs/1512.02325) model with a [MobileNet-V2](https://arxiv.org/abs/1801.04381) backbone. This model is great for small datasets or for deploying to edge devices, as it is tuned for quick inference at a small cost to overall accuracy." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The Configuration File\n", "\n", "The following section is a condensed YAML configuration file for training against this dataset with **NO** unlabeled data. It points to the dataset created above, and selects a `ssd_mobilenet_v2` model, which is a good model for small datasets and edge inference use cases. \n", "\n", "Note all of the model artifacts will be saved to the directory `~/model_output`, which you can configure in the `output` section below.\n", "\n", "The original YAML file can be found [here](https://masterful-public.s3.us-west-1.amazonaws.com/datasets/yymnist/training_no_unlabeled.yaml).\n", "\n", "```yaml\n", "dataset:\n", " root_path: https://masterful-public.s3.us-west-1.amazonaws.com/datasets/yymnist\n", " splits: [train, test]\n", " label_format: detection_csv\n", " optimize: True\n", "model:\n", " architecture: ssd_mobilenet_v2\n", " num_classes: 10\n", " input_shape: [416,416,3]\n", "training:\n", " task: detection\n", " training_split: train\n", "output:\n", " formats: [saved_model, onnx]\n", " path: ~/model_output\n", "evaluation:\n", " split: test\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Train the Model\n", "\n", "Training the model involves simply running the Masterful CLI Trainer (`masterful-train`) against the YAML file on S3. As a first step, you will train the model without any additional unlabeled data. This way, you can see the performance improvement later on when you add unlabeled data.\n", "\n", "Below, you will setup the CLI and configuration file to run in this notebook. However, if you want to train this model outside of the notebook, against the dataset on S3, you can run:\n", "\n", "```\n", "masterful-train --config https://masterful-public.s3.us-west-1.amazonaws.com/datasets/yymnist/training_no_unlabeled.yaml\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "NOTE: Object detection models are quite large. Depending on your GPU, this could take several hours to complete, so plan accordingly." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "MASTERFUL: Your account has been successfully activated. Masterful v0.5.2 is loaded.\n", "MASTERFUL [12:17:35]: Training with configuration 'https://masterful-public.s3.us-west-1.amazonaws.com/datasets/yymnist/training_no_unlabeled.yaml':\n", "---------- ----------------------------------------------------------------------------------\n", "dataset root_path https://masterful-public.s3.us-west-1.amazonaws.com/datasets/yymnist\n", " splits ['train', 'test']\n", " label_format detection_csv\n", " optimize True\n", "model architecture ssd_mobilenet_v2\n", " num_classes 10\n", " input_shape [416, 416, 3]\n", "training task detection\n", " training_split train\n", "output formats ['saved_model', 'onnx']\n", " path ~/model_output\n", "evaluation split test\n", "---------- ----------------------------------------------------------------------------------\n", "MASTERFUL [12:17:36]: Building model 'ssd_mobilenet_v2'...\n", "Downloading Weights:100% (46042990 of 46042990) || Elapsed Time: 0:00:05 Time: 0:00:05\n", "MASTERFUL [12:17:47]: Using model ssd_mobilenet_v2 with:\n", "MASTERFUL [12:17:47]: 4795759 total parameters\n", "MASTERFUL [12:17:47]: 4758191 trainable parameters\n", "MASTERFUL [12:17:47]: 37568 untrainable parameters\n", "MASTERFUL [12:17:49]: Dataset Summary:\n", "MASTERFUL [12:17:49]: \tTraining Dataset: 900 examples.\n", "MASTERFUL [12:17:49]: \tValidation Dataset: 0 examples.\n", "MASTERFUL [12:17:49]: \tTest Dataset: 100 examples.\n", "MASTERFUL [12:17:49]: \tUnlabeled Dataset: 0 examples.\n", "MASTERFUL [12:17:49]: Training Dataset Analysis:\n", "100%|█████████████████████████████████████████| 900/900 [00:16<00:00, 53.40it/s]\n", "\n", "MASTERFUL [12:18:06]: Training dataset analysis finished at 12:18:06 in 17 seconds (17s), returned:\n", "----------------------------- ----------------------------------------\n", "Total Examples 900\n", "Label Counts 0 494\n", " 1 616\n", " 2 552\n", " 3 533\n", " 4 522\n", " 5 440\n", " 6 581\n", " 7 555\n", " 8 491\n", " 9 549\n", "Label Distribution 0 0.0926308\n", " 1 0.115507\n", " 2 0.103506\n", " 3 0.0999437\n", " 4 0.0978811\n", " 5 0.0825052\n", " 6 0.108944\n", " 7 0.104069\n", " 8 0.0920683\n", " 9 0.102944\n", "Balanced Yes\n", "Per Channel Mean [251.53575897 251.53575897 251.53575897]\n", "Per Channel StdDev [26.2797294 26.2797294 26.2797294]\n", "Min Height 416\n", "Min Width 416\n", "Max Height 416\n", "Max Width 416\n", "Average Height 416\n", "Average Width 416\n", "Largest Image (416, 416, 3)\n", "Smallest Image (416, 416, 3)\n", "Duplicates 0\n", "Average Object Area 3565\n", "Smallest Object Area 195\n", "Largest Object Area 12544\n", "Num Small Objects 2216\n", "Num Medium Objects 2415\n", "Num Large Objects 702\n", "Num Empty Images (No Labels): 0\n", "Total Objects 5333\n", "----------------------------- ----------------------------------------\n", "MASTERFUL [12:18:06]: Test Dataset Analysis:\n", "100%|█████████████████████████████████████████| 100/100 [00:01<00:00, 50.28it/s]\n", "\n", "MASTERFUL [12:18:08]: Test dataset analysis finished at 12:18:08 in 2 seconds (2s), returned:\n", "----------------------------- ----------------------------------------\n", "Total Examples 100\n", "Label Counts 0 70\n", " 1 57\n", " 2 44\n", " 3 62\n", " 4 74\n", " 5 60\n", " 6 66\n", " 7 78\n", " 8 55\n", " 9 59\n", "Label Distribution 0 0.112\n", " 1 0.0912\n", " 2 0.0704\n", " 3 0.0992\n", " 4 0.1184\n", " 5 0.096\n", " 6 0.1056\n", " 7 0.1248\n", " 8 0.088\n", " 9 0.0944\n", "Balanced Yes\n", "Per Channel Mean [251.62994095 251.62994095 251.62994095]\n", "Per Channel StdDev [26.10288871 26.10288871 26.10288871]\n", "Min Height 416\n", "Min Width 416\n", "Max Height 416\n", "Max Width 416\n", "Average Height 416\n", "Average Width 416\n", "Largest Image (416, 416, 3)\n", "Smallest Image (416, 416, 3)\n", "Duplicates 0\n", "Average Object Area 3259\n", "Smallest Object Area 195\n", "Largest Object Area 12544\n", "Num Small Objects 270\n", "Num Medium Objects 290\n", "Num Large Objects 65\n", "Num Empty Images (No Labels): 0\n", "Total Objects 625\n", "----------------------------- ----------------------------------------\n", "MASTERFUL [12:18:08]: Cross-Dataset Analysis:\n", "MASTERFUL [12:18:08]: Cross-Dataset analysis finished at 12:18:08 in 0 seconds (0s), returned:\n", "----- --------\n", "train train 0\n", " test 0\n", "test train 0\n", " test 0\n", "----- --------\n", "MASTERFUL [12:18:08]: Meta-Learning architecture parameters...\n", "MASTERFUL [12:18:08]: Architecture learner finished at 12:18:08 in 0 seconds (0s), returned:\n", "------------------------------ -----------------------------------------------------\n", "task Task.DETECTION\n", "num_classes 10\n", "ensemble_multiplier 1\n", "custom_objects\n", "model_config ssd {\n", " num_classes: 10\n", " image_resizer {\n", " fixed_shape_resizer {\n", " height: 416\n", " width: 416\n", " }\n", " }\n", " feature_extractor {\n", " type: \"ssd_mobilenet_v2_keras\"\n", " depth_multiplier: 1.0\n", " min_depth: 16\n", " conv_hyperparams {\n", " regularizer {\n", " l2_regularizer {\n", " weight: 3.9999998989515007e-05\n", " }\n", " }\n", " initializer {\n", " truncated_normal_initializer {\n", " mean: 0.0\n", " stddev: 0.029999999329447746\n", " }\n", " }\n", " activation: RELU_6\n", " batch_norm {\n", " decay: 0.9700000286102295\n", " center: true\n", " scale: true\n", " epsilon: 0.0010000000474974513\n", " train: true\n", " }\n", " }\n", " override_base_feature_extractor_hyperparams: true\n", " }\n", " box_coder {\n", " faster_rcnn_box_coder {\n", " y_scale: 10.0\n", " x_scale: 10.0\n", " height_scale: 5.0\n", " width_scale: 5.0\n", " }\n", " }\n", " matcher {\n", " argmax_matcher {\n", " matched_threshold: 0.5\n", " unmatched_threshold: 0.5\n", " ignore_thresholds: false\n", " negatives_lower_than_unmatched: true\n", " force_match_for_each_row: true\n", " use_matmul_gather: true\n", " }\n", " }\n", " similarity_calculator {\n", " iou_similarity {\n", " }\n", " }\n", " box_predictor {\n", " convolutional_box_predictor {\n", " conv_hyperparams {\n", " regularizer {\n", " l2_regularizer {\n", " weight: 3.9999998989515007e-05\n", " }\n", " }\n", " initializer {\n", " random_normal_initializer {\n", " mean: 0.0\n", " stddev: 0.009999999776482582\n", " }\n", " }\n", " activation: RELU_6\n", " batch_norm {\n", " decay: 0.9700000286102295\n", " center: true\n", " scale: true\n", " epsilon: 0.0010000000474974513\n", " train: true\n", " }\n", " }\n", " min_depth: 0\n", " max_depth: 0\n", " num_layers_before_predictor: 0\n", " use_dropout: false\n", " dropout_keep_probability: 0.800000011920929\n", " kernel_size: 1\n", " box_code_size: 4\n", " apply_sigmoid_to_scores: false\n", " class_prediction_bias_init: -4.599999904632568\n", " }\n", " }\n", " anchor_generator {\n", " ssd_anchor_generator {\n", " num_layers: 6\n", " min_scale: 0.20000000298023224\n", " max_scale: 0.949999988079071\n", " aspect_ratios: 1.0\n", " aspect_ratios: 2.0\n", " aspect_ratios: 0.5\n", " aspect_ratios: 3.0\n", " aspect_ratios: 0.33329999446868896\n", " }\n", " }\n", " post_processing {\n", " batch_non_max_suppression {\n", " score_threshold: 9.99999993922529e-09\n", " iou_threshold: 0.6000000238418579\n", " max_detections_per_class: 100\n", " max_total_detections: 100\n", " }\n", " score_converter: SIGMOID\n", " }\n", " normalize_loss_by_num_matches: true\n", " loss {\n", " localization_loss {\n", " weighted_smooth_l1 {\n", " delta: 1.0\n", " }\n", " }\n", " classification_loss {\n", " weighted_sigmoid_focal {\n", " gamma: 2.0\n", " alpha: 0.75\n", " }\n", " }\n", " classification_weight: 1.0\n", " localization_weight: 1.0\n", " }\n", " encode_background_as_zeros: true\n", " normalize_loc_loss_by_codesize: true\n", " inplace_batchnorm_update: true\n", " freeze_batchnorm: false\n", " }\n", "backbone_only False\n", "input_shape (416, 416, 3)\n", "input_range ImageRange.ZERO_255\n", "input_dtype \n", "input_channels_last True\n", "prediction_logits True\n", "prediction_dtype \n", "prediction_structure TensorStructure.DICT\n", "prediction_shape\n", "total_parameters\n", "total_trainable_parameters\n", "total_non_trainable_parameters\n", "------------------------------ -----------------------------------------------------\n", "MASTERFUL [12:18:08]: Meta-learning training dataset parameters...\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "MASTERFUL [12:18:09]: Training dataset learner finished at 12:18:09 in 1 seconds (1s), returned:\n", "------------------------- -----------------------------\n", "num_classes 10\n", "task Task.DETECTION\n", "image_shape (416, 416, 3)\n", "image_range ImageRange.ZERO_255\n", "image_dtype \n", "image_channels_last True\n", "label_dtype \n", "label_shape (12, 15)\n", "label_structure TensorStructure.SINGLE_TENSOR\n", "label_sparse False\n", "label_bounding_box_format BoundingBoxFormat.TENSORFLOW\n", "------------------------- -----------------------------\n", "MASTERFUL [12:18:09]: Meta-learning test dataset parameters...\n", "MASTERFUL [12:18:10]: Test dataset learner finished at 12:18:10 in 1 seconds (1s), returned:\n", "------------------------- -----------------------------\n", "num_classes 10\n", "task Task.DETECTION\n", "image_shape (416, 416, 3)\n", "image_range ImageRange.ZERO_255\n", "image_dtype \n", "image_channels_last True\n", "label_dtype \n", "label_shape (11, 15)\n", "label_structure TensorStructure.SINGLE_TENSOR\n", "label_sparse False\n", "label_bounding_box_format BoundingBoxFormat.TENSORFLOW\n", "------------------------- -----------------------------\n", "MASTERFUL [12:18:10]: Meta-Learning optimization parameters...\n", "Callbacks: 100%|███████████████████████████████| 5/5 [01:23<00:00, 16.63s/steps]\n", "MASTERFUL [12:19:33]: Optimization learner finished at 12:19:33 in 84 seconds (1m 24s), returned:\n", "----------------------- -----------------------------------------------------------------\n", "batch_size 16\n", "drop_remainder True\n", "epochs 1000000\n", "learning_rate 0.0008838834473863244\n", "learning_rate_schedule\n", "learning_rate_callback \n", "warmup_learning_rate 1e-06\n", "warmup_epochs 5\n", "optimizer \n", "loss\n", "loss_weights\n", "early_stopping_callback \n", "metrics\n", "readonly_callbacks\n", "----------------------- -----------------------------------------------------------------\n", "MASTERFUL [12:19:36]: Meta-Learning Regularization Parameters...\n", "MASTERFUL [12:19:50]: Warming up model for analysis.\n", "MASTERFUL [12:19:50]: \tWarming up batch norm statistics (this could take a few minutes).\n", "MASTERFUL [12:19:53]: \tWarming up training for 250 steps.\n", "100%|██████████████████████████████████████| 250/250 [01:58<00:00, 2.10steps/s]\n", "MASTERFUL [12:21:52]: \tValidating batch norm statistics after warmup for stability (this could take a few minutes).\n", "MASTERFUL [12:21:54]: Analyzing baseline model performance. Training until validation loss stabilizes...\n", "Baseline Training: 100%|█████████████████| 2530/2530 [10:29<00:00, 4.02steps/s]\n", "MASTERFUL [12:32:46]: Baseline training complete.\n", "MASTERFUL [12:32:46]: Meta-Learning Basic Data Augmentations...\n", "Node 1/4: 100%|██████████████████████████| 1100/1100 [04:31<00:00, 4.05steps/s]\n", "Node 2/4: 100%|██████████████████████████| 1100/1100 [04:31<00:00, 4.06steps/s]\n", "Node 3/4: 100%|██████████████████████████| 1100/1100 [04:24<00:00, 4.15steps/s]\n", "Node 4/4: 100%|██████████████████████████| 1100/1100 [04:25<00:00, 4.15steps/s]\n", "MASTERFUL [12:51:45]: Meta-Learning Data Augmentation Clusters...\n", "Distance Analysis: 100%|███████████████████| 143/143 [02:16<00:00, 1.05steps/s]\n", "Node 1/10: 100%|█████████████████████████| 1100/1100 [05:55<00:00, 3.10steps/s]\n", "Node 2/10: 100%|█████████████████████████| 1100/1100 [05:56<00:00, 3.09steps/s]\n", "Node 3/10: 100%|█████████████████████████| 1100/1100 [05:55<00:00, 3.10steps/s]\n", "Node 4/10: 100%|█████████████████████████| 1100/1100 [05:57<00:00, 3.08steps/s]\n", "Node 5/10: 100%|█████████████████████████| 1100/1100 [05:56<00:00, 3.08steps/s]\n", "Distance Analysis: 100%|█████████████████████| 66/66 [01:08<00:00, 1.04s/steps]\n", "Node 6/10: 100%|█████████████████████████| 1100/1100 [06:18<00:00, 2.91steps/s]\n", "Node 7/10: 100%|█████████████████████████| 1100/1100 [06:18<00:00, 2.91steps/s]\n", "Node 8/10: 100%|█████████████████████████| 1100/1100 [06:17<00:00, 2.91steps/s]\n", "Node 9/10: 100%|█████████████████████████| 1100/1100 [06:19<00:00, 2.90steps/s]\n", "Node 10/10: 100%|████████████████████████| 1100/1100 [06:18<00:00, 2.90steps/s]\n", "MASTERFUL [14:00:04]: Meta-Learning Label Based Regularization...\n", "Node 1/2: 100%|██████████████████████████| 1100/1100 [05:58<00:00, 3.07steps/s]\n", "Node 2/2: 100%|██████████████████████████| 1100/1100 [06:01<00:00, 3.04steps/s]\n", "MASTERFUL [14:12:50]: Meta-Learning Weight Based Regularization...\n", "MASTERFUL [14:12:51]: Analysis finished in 113.08219845692317 minutes.\n", "MASTERFUL [14:12:51]: Learned parameters bandana-vigorous-daffodil saved at /home/sam/.masterful/policies/bandana-vigorous-daffodil.\n", "MASTERFUL [14:12:51]: Regularization learner finished at 14:12:51 in 6798 seconds (1h 53m 18s), returned:\n", "------------------------- -----------------------------------------------\n", "shuffle_buffer_size 810\n", "mirror 0.0\n", "rot90 0.0\n", "rotate 0\n", "mixup 0.75\n", "cutmix 0.5\n", "label_smoothing 0\n", "hsv_cluster 4\n", "hsv_cluster_to_index [[11 11 11 11 11 11]\n", " [11 11 11 11 11 11]\n", " [11 11 11 11 11 11]\n", " [11 11 11 11 11 11]\n", " [11 11 11 11 11 11]]\n", "hsv_magnitude_table [[ 0 10 20 30 40 50 60 70 80 90 100]\n", " [ 0 10 20 30 40 50 60 70 80 90 100]\n", " [ 0 10 20 30 40 50 60 70 80 90 100]\n", " [ 0 10 20 30 40 50 60 70 80 90 100]\n", " [ 0 10 20 30 40 50 60 70 80 90 100]]\n", "contrast_cluster 4\n", "contrast_cluster_to_index [[11 11 11 11 11 11]\n", " [11 11 11 11 11 11]\n", " [11 11 11 11 11 11]\n", " [11 11 11 11 11 11]\n", " [11 11 11 11 11 11]\n", " [11 11 11 11 11 11]]\n", "contrast_magnitude_table [[ 0 10 20 30 40 50 60 70 80 90 100]\n", " [ 0 10 20 30 40 50 60 70 80 90 100]\n", " [ 0 10 20 30 40 50 60 70 80 90 100]\n", " [ 0 10 20 30 40 50 60 70 80 90 100]\n", " [ 0 10 20 30 40 50 60 70 80 90 100]\n", " [ 0 10 20 30 40 50 60 70 80 90 100]]\n", "blur_cluster 4\n", "blur_cluster_to_index [[11 11 11 11 11 11]\n", " [11 11 11 11 11 11]]\n", "blur_magnitude_table [[ 0 10 20 30 40 50 60 70 80 90 100]\n", " [ 0 10 20 30 40 50 60 70 80 90 100]]\n", "spatial_cluster 0\n", "spatial_cluster_to_index [[11 11 11 11 11 11]\n", " [11 11 11 11 11 11]\n", " [11 11 11 11 11 11]\n", " [11 11 11 11 11 11]\n", " [11 11 11 11 11 11]\n", " [11 11 11 11 11 11]]\n", "spatial_magnitude_table [[ 0 10 20 30 40 50 60 70 80 90 100]\n", " [ 0 10 20 30 40 50 60 70 80 90 100]\n", " [ 0 10 20 30 40 50 60 70 80 90 100]\n", " [ 0 10 20 30 40 50 60 70 80 90 100]\n", " [ 0 10 20 30 40 50 60 70 80 90 100]\n", " [ 0 10 20 30 40 50 60 70 80 90 100]]\n", "synthetic_proportion [0.0]\n", "------------------------- -----------------------------------------------\n", "MASTERFUL [14:12:51]: Learning SSL parameters...\n", "MASTERFUL [14:12:52]: SSL learner finished at 14:12:52 in 1 seconds (1s), returned:\n", "---------- --\n", "algorithms []\n", "---------- --\n", "MASTERFUL [14:12:52]: Training model with semi-supervised learning disabled.\n", "MASTERFUL [14:12:53]: Performing basic dataset analysis.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "MASTERFUL [14:13:03]: Masterful will use 90 labeled examples as a validation set since no validation data was provided.\n", "MASTERFUL [14:13:03]: Training model with:\n", "MASTERFUL [14:13:03]: \t810 labeled examples.\n", "MASTERFUL [14:13:03]: \t90 validation examples.\n", "MASTERFUL [14:13:03]: \t0 synthetic examples.\n", "MASTERFUL [14:13:03]: \t0 unlabeled examples.\n", "MASTERFUL [14:13:04]: Training model with learned parameters bandana-vigorous-daffodil in two phases.\n", "MASTERFUL [14:13:04]: The first phase is supervised training with the learned parameters.\n", "MASTERFUL [14:13:04]: The second phase is semi-supervised training to boost performance.\n", "MASTERFUL [14:13:08]: Warming up model for supervised training.\n", "MASTERFUL [14:13:09]: \tWarming up batch norm statistics (this could take a few minutes).\n", "MASTERFUL [14:13:12]: \tWarming up training for 250 steps.\n", "100%|██████████████████████████████████████| 250/250 [01:59<00:00, 2.09steps/s]\n", "MASTERFUL [14:15:11]: \tValidating batch norm statistics after warmup for stability (this could take a few minutes).\n", "MASTERFUL [14:15:13]: Starting Phase 1: Supervised training until the validation loss stabilizes...\n", "Supervised Training: 100%|███████████████| 2805/2805 [14:25<00:00, 3.24steps/s]\n", "MASTERFUL [14:30:01]: Semi-Supervised training disabled in parameters.\n", "MASTERFUL [14:30:03]: Training complete in 16.970766989390054 minutes.\n", "MASTERFUL [14:30:37]: Saving model output to /home/sam/model_output/session-00341.\n", "MASTERFUL [14:30:48]: Saving saved_model output to /home/sam/model_output/session-00341/saved_model\n", "MASTERFUL [14:31:26]: Saving onnx output to /home/sam/model_output/session-00341/onnx\n", "MASTERFUL [14:32:32]: Saving regularization params to /home/sam/model_output/session-00341/regularization.params.\n", "MASTERFUL [14:32:32]: ************************************\n", "MASTERFUL [14:32:32]: Evaluating model on 100 examples from the 'test' dataset split:\n", "Evaluating: 100%|█████████████████████████████| 100/100 [00:04<00:00, 24.47it/s]\n", "MASTERFUL [14:32:36]: Loss: 0.2189\n", "MASTERFUL [14:32:36]: Loss/Localization Loss: 0.0251\n", "MASTERFUL [14:32:36]: Loss/Classification Loss: 0.1134\n", "MASTERFUL [14:32:36]: Loss/Regularization Loss: 0.0803\n", "MASTERFUL [14:32:36]: Loss/Total Loss: 0.2189\n", "MASTERFUL [14:32:36]: Calculating MSCOCO evaluation metrics:\n", "MSCOCO Metrics: 100%|█████████████████████████| 100/100 [00:13<00:00, 7.61it/s]\n", "MASTERFUL [14:32:49]: DetectionBoxes_Precision/mAP: 0.7454\n", "MASTERFUL [14:32:49]: DetectionBoxes_Precision/mAP@.50IOU: 0.9290\n", "MASTERFUL [14:32:49]: DetectionBoxes_Precision/mAP@.75IOU: 0.8823\n", "MASTERFUL [14:32:49]: DetectionBoxes_Precision/mAP (small): 0.6022\n", "MASTERFUL [14:32:49]: DetectionBoxes_Precision/mAP (medium): 0.8318\n", "MASTERFUL [14:32:49]: DetectionBoxes_Precision/mAP (large): 0.9343\n", "MASTERFUL [14:32:49]: DetectionBoxes_Recall/AR@1: 0.6101\n", "MASTERFUL [14:32:49]: DetectionBoxes_Recall/AR@10: 0.7949\n", "MASTERFUL [14:32:49]: DetectionBoxes_Recall/AR@100: 0.7949\n", "MASTERFUL [14:32:49]: DetectionBoxes_Recall/AR@100 (small): 0.6781\n", "MASTERFUL [14:32:49]: DetectionBoxes_Recall/AR@100 (medium): 0.8705\n", "MASTERFUL [14:32:49]: DetectionBoxes_Recall/AR@100 (large): 0.9479\n", "MASTERFUL [14:32:49]: DetectionBoxes_PerformanceByCategory/mAP/0: 0.7744\n", "MASTERFUL [14:32:49]: DetectionBoxes_PerformanceByCategory/mAP/1: 0.7481\n", "MASTERFUL [14:32:49]: DetectionBoxes_PerformanceByCategory/mAP/2: 0.7269\n", "MASTERFUL [14:32:49]: DetectionBoxes_PerformanceByCategory/mAP/3: 0.7851\n", "MASTERFUL [14:32:49]: DetectionBoxes_PerformanceByCategory/mAP/4: 0.7444\n", "MASTERFUL [14:32:49]: DetectionBoxes_PerformanceByCategory/mAP/5: 0.7149\n", "MASTERFUL [14:32:49]: DetectionBoxes_PerformanceByCategory/mAP/6: 0.7831\n", "MASTERFUL [14:32:49]: DetectionBoxes_PerformanceByCategory/mAP/7: 0.7767\n", "MASTERFUL [14:32:49]: DetectionBoxes_PerformanceByCategory/mAP/8: 0.6802\n", "MASTERFUL [14:32:49]: DetectionBoxes_PerformanceByCategory/mAP/9: 0.7204\n", "Confusion Matrix: 100%|███████████████████████| 100/100 [00:10<00:00, 9.17it/s]\n", "MASTERFUL [14:33:00]: Confusion Matrix:\n", "MASTERFUL [14:33:00]: | 0| 1| 2| 3| 4| 5| 6| 7| 8| 9| background|\n", "MASTERFUL [14:33:00]: 0| 64| 0| 0| 0| 0| 0| 0| 0| 1| 0| 5|\n", "MASTERFUL [14:33:00]: 1| 0| 55| 0| 0| 0| 0| 0| 0| 0| 0| 2|\n", "MASTERFUL [14:33:00]: 2| 0| 0| 34| 5| 0| 0| 0| 0| 0| 1| 4|\n", "MASTERFUL [14:33:00]: 3| 0| 0| 2| 57| 0| 0| 0| 0| 0| 1| 2|\n", "MASTERFUL [14:33:00]: 4| 0| 1| 0| 0| 59| 0| 1| 2| 0| 5| 6|\n", "MASTERFUL [14:33:00]: 5| 0| 0| 1| 0| 1| 53| 0| 0| 1| 0| 4|\n", "MASTERFUL [14:33:00]: 6| 0| 1| 0| 0| 0| 0| 62| 0| 1| 0| 2|\n", "MASTERFUL [14:33:00]: 7| 0| 1| 2| 1| 1| 0| 0| 63| 0| 6| 4|\n", "MASTERFUL [14:33:00]: 8| 1| 0| 0| 2| 0| 2| 2| 0| 40| 3| 5|\n", "MASTERFUL [14:33:00]: 9| 0| 0| 0| 1| 2| 0| 0| 1| 0| 49| 6|\n", "MASTERFUL [14:33:00]: background| 0| 2| 2| 4| 3| 2| 0| 4| 2| 4| 0|\n", "MASTERFUL [14:33:00]: Confusion matrix columns represent the prediction labels and the rows represent the real labels.\n", "MASTERFUL [14:33:00]: Saving evaluation metrics to /home/sam/model_output/session-00341/evaluation_metrics.csv.\n", "MASTERFUL [14:33:00]: Saving confusion matrix to /home/sam/model_output/session-00341/confusion_matrix.csv.\n", "MASTERFUL [14:33:00]: Total elapsed training time: 135 minutes (2h 15m 25s).\n", "MASTERFUL [14:33:00]: Launch masterful-gui to visualize the training results: policy name 'bandana-vigorous-daffodil'\n" ] } ], "source": [ "# Use the Masterful CLI to train the model without unlabeled data\n", "!masterful-train --config https://masterful-public.s3.us-west-1.amazonaws.com/datasets/yymnist/training_no_unlabeled.yaml" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Analyze the Results\n", "\n", "At the end of training, Masterful will evaluate your model based on the test (sometimes called holdout) dataset you specified in the `evaluation` section of your configuration file. The evaluation results are different for each task, since every computer vision task has both general metrics (such as loss) as well as task-specific metrics (IoU for semantic segmentation for example). These results are printed to the console, as well as saved into a CSV file in the output directory specified in your configuration file." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Object Detection Evaluation Metrics\n", "\n", "For Object Detection, Masterful reports three main categories of metrics: Model Loss, COCO Metrics, and Confusion matrix.\n", "\n", "#### Model Loss\n", "\n", "The first set of metrics Masterful reports is the overall loss of the model. For object detection models, Masterful reports the total loss as well as any sub-losses that are specific to the model architecture. For example, the loss is typically composed of a localization loss (which reflects the location and size of the bounding box) and a classification loss (which reflects which object is in the box). Different models have different sub-losses, and you can gauge how your model is doing on the different tasks based on the final results of these sub-metrics.\n", "\n", "The following is the loss results from the above training run (this might be different if you rerun the above cells): \n", "\n", "```\n", "************************************\n", "MASTERFUL [14:32:32]: Evaluating model on 100 examples from the 'test' dataset split:\n", "Evaluating: 100%|█████████████████████████████| 100/100 [00:04<00:00, 24.47it/s]\n", "MASTERFUL [14:32:36]: Loss: 0.2189\n", "MASTERFUL [14:32:36]: Loss/Localization Loss: 0.0251\n", "MASTERFUL [14:32:36]: Loss/Classification Loss: 0.1134\n", "MASTERFUL [14:32:36]: Loss/Regularization Loss: 0.0803\n", "MASTERFUL [14:32:36]: Loss/Total Loss: 0.2189\n", "```\n", "\n", "As you can see in the above output, the total loss of the model is `MASTERFUL [14:32:36]: Loss: 0.2189` (which matches the `Loss/Total Loss` output as well). You can check the localization and classification loss as well, and you can see that the classification loss `0.1134` is slightly worse than the localization loss `0.0251`. These seem like pretty good loss values. They are relatively low and close to zero, which is the goal of the optimizer in machine learning training. However, it's really difficult to understand intuitively what these mean in terms of your models overall performance. Are these good values? Or bad ones? Let's dive into the rest of the metrics to answer these questions.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "#### COCO Metrics\n", "\n", "[Common Objects in Context](https://cocodataset.org/#home) (COCO) is a large-scale object detection, segmentation, and captioning dataset. COCO has several features:\n", "\n", "* Object segmentation\n", "* Recognition in context\n", "* Superpixel stuff segmentation\n", "* 330K images (>200K labeled)\n", "* 1.5 million object instances\n", "* 80 object categories\n", "* 91 stuff categories\n", "* 5 captions per image\n", "* 250,000 people with keypoints\n", "\n", "The dataset itself is used in many research papers as a standard object detection benchmark. Importantly, COCO also defines a standard set of metrics for evaluating object detection models, commonly called the COCO (MS-COCO) Evaluation Metrics." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following 12 metrics are used for characterizing the performance of an object detector as part of the COCO detection challenge:\n", "\n", "![MSCOCO Metrics](../images/mscoco_metrics.png)\n", "\n", "* Unless otherwise specified, AP and AR are averaged over multiple Intersection over Union (IoU) values. Specifically we use 10 IoU thresholds of .50:.05:.95. This is a break from tradition, where AP is computed at a single IoU of .50 (which corresponds to our metric APIoU=.50). Averaging over IoUs rewards detectors with better localization.\n", "* AP is averaged over all categories. Traditionally, this is called \"mean average precision\" (mAP). We make no distinction between AP and mAP (and likewise AR and mAR) and assume the difference is clear from context.\n", "* AP (averaged across all 10 IoU thresholds and all 80 categories) will determine the challenge winner. This should be considered the single most important metric when considering performance on COCO.\n", "In COCO, there are more small objects than large objects. Specifically: approximately 41% of objects are small (area < 322), 34% are medium (322 < area < 962), and 24% are large (area > 962). Area is measured as the number of pixels in the segmentation mask.\n", "* AR is the maximum recall given a fixed number of detections per image, averaged over categories and IoUs. AR is related to the metric of the same name used in proposal evaluation but is computed on a per-category basis.\n", "* All metrics are computed allowing for at most 100 top-scoring detections per image (across all categories).\n", "* The evaluation metrics for detection with bounding boxes and segmentation masks are identical in all respects except for the IoU computation (which is performed over boxes or masks, respectively).\n", "\n", "For more information about things like Average Precision and Recall and IoU in the context of Object Detection, there are several good walkthroughs below with worked examples. They will give you a better intuitive sense of what the metrics are trying to convey: \n", "\n", "[An Introduction to Evaluation Metrics for Object Detection](https://blog.zenggyu.com/en/post/2018-12-16/an-introduction-to-evaluation-metrics-for-object-detection/) \n", "[Object Detection Metrics With Worked Example](https://towardsdatascience.com/on-object-detection-metrics-with-worked-example-216f173ed31e)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Below, you will find the COCO metrics for the model you trained above: \n", "\n", "```\n", "MASTERFUL [14:32:36]: Calculating MSCOCO evaluation metrics:\n", "MSCOCO Metrics: 100%|█████████████████████████| 100/100 [00:13<00:00, 7.61it/s]\n", "MASTERFUL [14:32:49]: DetectionBoxes_Precision/mAP: 0.7454\n", "MASTERFUL [14:32:49]: DetectionBoxes_Precision/mAP@.50IOU: 0.9290\n", "MASTERFUL [14:32:49]: DetectionBoxes_Precision/mAP@.75IOU: 0.8823\n", "MASTERFUL [14:32:49]: DetectionBoxes_Precision/mAP (small): 0.6022\n", "MASTERFUL [14:32:49]: DetectionBoxes_Precision/mAP (medium): 0.8318\n", "MASTERFUL [14:32:49]: DetectionBoxes_Precision/mAP (large): 0.9343\n", "MASTERFUL [14:32:49]: DetectionBoxes_Recall/AR@1: 0.6101\n", "MASTERFUL [14:32:49]: DetectionBoxes_Recall/AR@10: 0.7949\n", "MASTERFUL [14:32:49]: DetectionBoxes_Recall/AR@100: 0.7949\n", "MASTERFUL [14:32:49]: DetectionBoxes_Recall/AR@100 (small): 0.6781\n", "MASTERFUL [14:32:49]: DetectionBoxes_Recall/AR@100 (medium): 0.8705\n", "MASTERFUL [14:32:49]: DetectionBoxes_Recall/AR@100 (large): 0.9479\n", "MASTERFUL [14:32:49]: DetectionBoxes_PerformanceByCategory/mAP/0: 0.7744\n", "MASTERFUL [14:32:49]: DetectionBoxes_PerformanceByCategory/mAP/1: 0.7481\n", "MASTERFUL [14:32:49]: DetectionBoxes_PerformanceByCategory/mAP/2: 0.7269\n", "MASTERFUL [14:32:49]: DetectionBoxes_PerformanceByCategory/mAP/3: 0.7851\n", "MASTERFUL [14:32:49]: DetectionBoxes_PerformanceByCategory/mAP/4: 0.7444\n", "MASTERFUL [14:32:49]: DetectionBoxes_PerformanceByCategory/mAP/5: 0.7149\n", "MASTERFUL [14:32:49]: DetectionBoxes_PerformanceByCategory/mAP/6: 0.7831\n", "MASTERFUL [14:32:49]: DetectionBoxes_PerformanceByCategory/mAP/7: 0.7767\n", "MASTERFUL [14:32:49]: DetectionBoxes_PerformanceByCategory/mAP/8: 0.6802\n", "MASTERFUL [14:32:49]: DetectionBoxes_PerformanceByCategory/mAP/9: 0.7204\n", "```\n", "\n", "The primary aggregated metric above is `DetectionBoxes_Precision/mAP`, which is the Average Precision calculated over all of the IoU thresholds. Secondarily, the `DetectionBoxes_Precision/mAP@.50IOU` corresponds to the Average Precision at just the 0.5 IoU threshold, which is a good intuitive indicator of performance and corresponds to the older Pascal VOC object detection metrics. The models scores relatively high on both of these metrics (`0.7454` and `0.9290`) respectively. As you can see in the per-category metrics (`DetectionBoxes_PerformanceByCategory`), the model scores decently well across all of the different classes, with the worst performance on digit `8` and the best performance on digit `3`.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Confusion Matrix\n", "\n", "The final set of metrics Masterful provides for Object Detection is the confusion matrix of predictions versus labels. The confusion matrix helps figure out where and how the model makes mistakes. \n", "\n", "Below is the output for the confusion matrix from the training process: \n", "\n", "```\n", "MASTERFUL [14:33:00]: Confusion Matrix:\n", "MASTERFUL [14:33:00]: | 0| 1| 2| 3| 4| 5| 6| 7| 8| 9| background|\n", "MASTERFUL [14:33:00]: 0| 64| 0| 0| 0| 0| 0| 0| 0| 1| 0| 5|\n", "MASTERFUL [14:33:00]: 1| 0| 55| 0| 0| 0| 0| 0| 0| 0| 0| 2|\n", "MASTERFUL [14:33:00]: 2| 0| 0| 34| 5| 0| 0| 0| 0| 0| 1| 4|\n", "MASTERFUL [14:33:00]: 3| 0| 0| 2| 57| 0| 0| 0| 0| 0| 1| 2|\n", "MASTERFUL [14:33:00]: 4| 0| 1| 0| 0| 59| 0| 1| 2| 0| 5| 6|\n", "MASTERFUL [14:33:00]: 5| 0| 0| 1| 0| 1| 53| 0| 0| 1| 0| 4|\n", "MASTERFUL [14:33:00]: 6| 0| 1| 0| 0| 0| 0| 62| 0| 1| 0| 2|\n", "MASTERFUL [14:33:00]: 7| 0| 1| 2| 1| 1| 0| 0| 63| 0| 6| 4|\n", "MASTERFUL [14:33:00]: 8| 1| 0| 0| 2| 0| 2| 2| 0| 40| 3| 5|\n", "MASTERFUL [14:33:00]: 9| 0| 0| 0| 1| 2| 0| 0| 1| 0| 49| 6|\n", "MASTERFUL [14:33:00]: background| 0| 2| 2| 4| 3| 2| 0| 4| 2| 4| 0|\n", "MASTERFUL [14:33:00]: Confusion matrix columns represent the prediction labels and the rows represent\n", " the real labels.\n", "```\n", "\n", "In the above output, the columns represent the predictions made for the model. So the `3` column represents all of the examples where the model predicted `3`. For this column, each row represents the label in the dataset. So for the `3` column, the row `3` represents all of the examples where the model predicted `3` and the label in the dataset was also `3`. These are considered the **true positives** - the examples where the model made a correct positive prediction. In the `3` column, the `7` row represents the examples where the model predicted `3`, but the true label was actually `7`. These are considered **false positives** - examples where the model correctly detected an object but predicted the wrong class. However, because a detection task requires **both** correctly identifying the presence of an object as well as correctly classifying the type of that object, it is possible that the model predicts the existence of an object that does not exist. This is quantified in the `background` row of the above matrix. For example, In the `3` column, the `background` cell represents all of the examples where the model predicted a `3`, but there was no actual `3` in that location or image. These are **false postives** where the model predicted the incorrect existence of a `3`, rather than correctly predicting the existence but mis-categorizing the object instance. But if the `background` row contains predictions where there should not have been any, what does the `background` column represent? The `background` column represents predictions that were **not** made. In other words, for the `background` column and `3` row, this cell represents the examples where a `3` existed but the model failed to predict a `3` at this position. This represents a `false negative` prediction from the model.\n", "\n", "As you can see, the diagonal of the confusion matrix represents all of the correct positive predictions of the model. The off-diagonals represent different mistakes the model made in its predictions.\n", "\n", "In the above explanation, you have see the location of the `true positives` (the diagonals) and the location of the `false positives` (off-diagonals) and `false negatives` (`background` column). One question you might ask, is where are the `true negatives` - the examples where there were no instances of an object and the model correctly made no predictions? There are two ways to interpret `false negatives` from the above matrix. The first is as `true positives` on the `background` class - the diagonal entry in the `background` column and row. These are the instances in the dataset with no objects and the model correctly predicted no objects. In this dataset however, every example has an object. You can see this in the test dataset analysis output for the `Num Empty Images (No Labels)` row: \n", "\n", "```\n", "MASTERFUL [12:18:08]: Test dataset analysis\n", "----------------------------- ----------------------------------------\n", "Total Examples 100\n", "Label Counts 0 70\n", " 1 57\n", " 2 44\n", " 3 62\n", " 4 74\n", " 5 60\n", " 6 66\n", " 7 78\n", " 8 55\n", " 9 59\n", ".\n", ".\n", ".\n", "Num Empty Images (No Labels): 0\n", "Total Objects 625\n", "```\n", "\n", "Another way to categorize `true negatives` is that every `true positive` on one class is a corresponding `true negative` on another class - correctly predicting the existence of one class is also correctly predicting the absence of another class, or all other classes. However, neither of these definitions provide much value, and importantly they can overestimate derived metrics. For example, `accuracy` is commonly defined as the number of \"correct\" predictions (`true positives` plus `true negatives`) over the total number of objects. In object detection however, this will drastically over-estimate the accuracy of the model given the presence of the `true negatives` term, which when averaged over all of the classes you would most likely end up with more `true negatives` than object instances in the dataset. This is historically why object detection has relied on `precision` and `recall` metrics, rather than `accuracy`, due to the lack of a `true negative` term in the definition of the former. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### View the Predictions\n", "\n", "While the mAP metrics are a good quantitative indicator of the performance of your model, visualizing the predictions can help you get a qualititative sense of how well your trained model is performing. Below you can see the predictions for the above trained model has on the examples you visualized above. The red boxes are the labels from the dataset, and the green boxes are the predictions made by the model." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Downloading Model: 100% (19166150 of 19166150) || Elapsed Time: 0:00:01 Time: 0:00:01\n" ] }, { "data": { "image/png": "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wOtH2owxWJaFz+fTejER2RMUxkREROSBsm2bWq3G1NQUL730Evl83i3uYYwhHo/z1FNP0dvby9e//nXOnz9PJpMBNldKdMKYMzrWaDTcezebTVVUFJFdT28riYiIyAPVbDZZXV3l6tWrvPjiixSLRWBzyftKpUK5XKZarVKpVLBtG8uyaDabWJblFuzo6+tzpyN6PB4ajQaLi4usr6+/rnKjiMhuo5ExEREReaBqtRrXr1/n/PnzrK6uused8FQoFPj85z9PIBBwi3QA+Hw+kskk6XSaaDRKKpWi0WiwsrLijopVq1VWVlbI5XK0tbVpuqKI7GoKYyIiIvJAOWHs+vXrNJu3tlJrnU5o2/amTZ+9Xi9+v5+enh6efvppRkZGKJfLXL58mZdeeolqtereIx6Pc/DgQbq6ujZtCi0ishvp7SQRERF54IrFIqVSyR0N224tmMPj8dDX18f73vc+vu/7vo+RkRHW19e5efMmq6ur7lqzvr4+nnrqKbf4h9aLichup5ExEREReWDq9Tpra2usrq5SLpfv6RpjDD6fj0ajwfj4OOPj47z00kvMzMy4I2vd3d089dRTfOADH2BoaEjTE0VkT1AYExERkQem2WySy+VYXl6mWCzeU5GNRqPB8vIyzz33HF//+tfJZDLkcjk3iAEMDAzwvve9j2/7tm+jra1No2IisicojImIiMgDEwwG6e/v59ixY/T09LCysrIpVN1OPp+nUCjg8XjczZ6dcvher5enn36aZ599llgsplExEdkzFMZERETkgTHGkEgkeMc73sHo6CgzMzObKipupzV4OZziHJFIhCeeeIJz584xMDBAKBR6qO0XEXmU9NaSiIiIPFChUIjTp0/zvve9jzNnzuD3++96TWsQ83g8hEIhDhw4wLlz53j22Wc5efIk4XD4YTZbROSR08iYiIiIPBCtgSoajfLEE0/w7d/+7SwsLDA7O0u5XKbRaGx7rcfjIRKJkEgkaG9v58CBA5w8eZJTp05x9OhRBgYG8Hg87gjadlUZRUR2G4UxERERuW+tQcyyLDweD0NDQzz77LNkMhmef/55JiYmWF1dpVKpvC6UtbW18cQTT/DWt76Vt73tbQwNDdHW1kYikSAcDmtUTET2JIUxEREReaCcEaxIJMLIyAjf+73fy+nTpxkdHeX69etcu3aNa9euuRs/G2M4deoU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TEREREREpAaUjImIiIiIiNSAkjEREREREZEaUDImIiIiIiJSA0rGREREREREakDJmIiIiIiISA0oGRMREREREakBJWMiIiIiIiI1oGRMRERERESkBpSMiYiIiIiI1ICSMRERERERkRpQMiYiIiIiIlIDSsZERERERERqQMmYiIiIiIhIDSgZExERERERqQElYyIiIiIiIjWgZExERERERKQGlIyJiIiIiIjUgJIxERERERGRGlAyJiIiIiIiUgNKxkRERERERGpAyZiIiIiIiEgNKBkTERERERGpASVjIiIiIiIiNaBkTEREREREpAaUjImIiIiIiNSAkjEREREREZEaUDImIiIiIiJSA0rGREREREREakDJmIiIiIiISA0oGRMREREREamBXUvGDMP4BsMwBg3DuGUYxk/s1uuIiIjUE7WPIiJiMUzT3PmDGoYTuAF8HTABnAW+2zTNqzv+YiIiInVC7aOIiFTbrZ6xF4FbpmkOm6ZZAH4X+NAuvZaIiEi9UPsoIiI21y4dtxMYr/p+Anhpu52bmprMffv27VIoIiLyOJw7d27BNM3mWsexxz1Q+whqI0VE6t3t27dZWFgwtnpst5KxezIM4yPARwB6enp48803axWKiIjsAMMwRmsdw5NCbaSIyJPj+eef3/ax3UrGJoHuqu+71rfZTNP8OPBxgOeff37nJ67J/TtzBhKJWkexM973PvB6ax2FiMh27tk+gtpIEZGnxW4lY2eBA4Zh9LHWyHwX8D279FrykM5xjq/wFXjjV2HwRq3D2RF/99UZAt7WWochIrIdtY8iImLblWTMNM2SYRj/APgM4AR+wzTNK7vxWvLw/pK/5DznebfThH/1L6CpqdYhPZKP8lG+HQjUOhARkW2ofRQRkWq7NmfMNM0/A/5st44vO+P9vJ+P/NECfODvQNNArcN5JJ/kk7UOQUTkntQ+ioiIpWYFPERERER23Jkz8IM/uPVjpgnGFgXNttte/Tjce5+7Pb7Vfvf7nPuN4X5ft9rf+3vwIz/ycMcUkUemZExERESeCCOM8MLpr4PPr+z4sQ1gpyup3O2YWz12vzFst9+W2wP/lF+niW/n2+/jyCKy05SMiYiIyBOhQoUTr63w2f/+d+Hj/0+tw9n7fvt3+Ncjf5v8/5mvdSQiTy0lYyIiIvLEMExwmQ50iXMfTAeOSq2DEHm6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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Download the pretrained model so that you can\n", "# visualize the results.\n", "MODEL_URL = \"https://masterful-public.s3.us-west-1.amazonaws.com/datasets/yymnist/yymnist_no_unlabeled_saved_model.tar.gz\"\n", "\n", "model = None\n", "with tempfile.TemporaryDirectory() as temp_directory:\n", " # Download the pretrained model from S3.\n", " saved_model_path = os.path.join(temp_directory, \"saved_model.tar.gz\") \n", " _ = urllib.request.urlretrieve(MODEL_URL, saved_model_path, progress_bar_factory(\"Downloading Model: \"))\n", "\n", " # Extract the model weights from the tar file.\n", " with tarfile.open(saved_model_path) as tar:\n", " tar.extractall(temp_directory)\n", " saved_model_path = os.path.join(temp_directory, \"saved_model\") \n", "\n", " # Load the trained tensorflow saved model.\n", " model = tf.saved_model.load(saved_model_path)\n", " \n", " # Plot a few different instances from the dataset.\n", " f, axarr = plt.subplots(2, 2, figsize=(15,15))\n", " _ = axarr[0, 0].imshow(create_annotated_image(examples[0], DATASET_ROOT, model))\n", " _ = axarr[0, 1].imshow(create_annotated_image(examples[1], DATASET_ROOT, model))\n", " _ = axarr[1, 0].imshow(create_annotated_image(examples[2], DATASET_ROOT, model))\n", " _ = axarr[1, 1].imshow(create_annotated_image(examples[3], DATASET_ROOT, model))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As you can see in the above predictions, the model performs exceptionally well in localizing all of the the different digits! The predicted bounding boxes (green) are tight against the ground truth bounding boxes (red) and no digits are missing and there are no predictions in areas with no digits." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Improve Your Model with Unlabeled Data\n", "\n", "The performance of your model above was great, but can you do better? The answer is yes, by adding unlabeled data! Below, you will retrain your model with an additional unlabeled data split. Adding unlabeled data is easy. The CSV file just lists the images without any labels. For example, here are the first few items from [unlabeled.csv](https://masterful-public.s3.us-west-1.amazonaws.com/datasets/yymnist/unlabeled.csv), which lists all of the unlabeled training items.\n", "\n", "```\n", "images/extra/001001.jpg\n", "images/extra/001002.jpg\n", "images/extra/001003.jpg\n", "images/extra/001004.jpg\n", "images/extra/001005.jpg\n", "images/extra/001006.jpg\n", "images/extra/001007.jpg\n", "images/extra/001008.jpg\n", "images/extra/001009.jpg\n", "images/extra/001010.jpg\n", ".\n", ".\n", ".\n", "```\n", "\n", "You will also point to a new YAML file [training_with_unlabeled.yaml](https://masterful-public.s3.us-west-1.amazonaws.com/datasets/yymnist/training_with_unlabeled.yaml) which add the above unlabeled data to the training process. There are only two differences in this yaml versus the one you just trained with. First, you let the dataset configuration know about the unlabeled data: \n", "\n", "```yaml\n", "dataset:\n", " splits: [train, test, unlabeled]\n", "```\n", "\n", "Second, you tell the training process to use that split: \n", "\n", "```yaml\n", "training:\n", " task: detection\n", " training_split: train\n", " unlabeled_split: unlabeled\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you want to run the trainer with unlabeled data outside of this notebook, you can simply run the following command: \n", "\n", "```\n", "masterful-train --config https://masterful-public.s3.us-west-1.amazonaws.com/datasets/yymnist/training_with_unlabeled.yaml\n", "```\n", "Otherwise, you can run the following cell:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "MASTERFUL: Your account has been successfully activated. Masterful v0.5.2 is loaded.\n", "MASTERFUL [14:34:42]: Training with configuration 'https://masterful-public.s3.us-west-1.amazonaws.com/datasets/yymnist/training_with_unlabeled.yaml':\n", "---------- ----------------------------------------------------------------------------------\n", "dataset root_path https://masterful-public.s3.us-west-1.amazonaws.com/datasets/yymnist\n", " splits ['train', 'test', 'unlabeled']\n", " label_format detection_csv\n", " optimize True\n", "model architecture ssd_mobilenet_v2\n", " num_classes 10\n", " input_shape [416, 416, 3]\n", "training task detection\n", " training_split train\n", " unlabeled_split unlabeled\n", "output formats ['saved_model', 'onnx']\n", " path ~/model_output\n", "evaluation split test\n", "---------- ----------------------------------------------------------------------------------\n", "MASTERFUL [14:34:43]: Building model 'ssd_mobilenet_v2'...\n", "MASTERFUL [14:34:47]: Using model ssd_mobilenet_v2 with:\n", "MASTERFUL [14:34:47]: 4795759 total parameters\n", "MASTERFUL [14:34:47]: 4758191 trainable parameters\n", "MASTERFUL [14:34:47]: 37568 untrainable parameters\n", "MASTERFUL [14:34:50]: Dataset Summary:\n", "MASTERFUL [14:34:50]: \tTraining Dataset: 900 examples.\n", "MASTERFUL [14:34:50]: \tValidation Dataset: 0 examples.\n", "MASTERFUL [14:34:50]: \tTest Dataset: 100 examples.\n", "MASTERFUL [14:34:50]: \tUnlabeled Dataset: 9000 examples.\n", "MASTERFUL [14:34:50]: Training Dataset Analysis:\n", "100%|█████████████████████████████████████████| 900/900 [00:16<00:00, 53.96it/s]\n", "\n", "MASTERFUL [14:35:07]: Training dataset analysis finished at 14:35:07 in 17 seconds (17s), returned:\n", "----------------------------- ----------------------------------------\n", "Total Examples 900\n", "Label Counts 0 494\n", " 1 616\n", " 2 552\n", " 3 533\n", " 4 522\n", " 5 440\n", " 6 581\n", " 7 555\n", " 8 491\n", " 9 549\n", "Label Distribution 0 0.0926308\n", " 1 0.115507\n", " 2 0.103506\n", " 3 0.0999437\n", " 4 0.0978811\n", " 5 0.0825052\n", " 6 0.108944\n", " 7 0.104069\n", " 8 0.0920683\n", " 9 0.102944\n", "Balanced Yes\n", "Per Channel Mean [251.53575897 251.53575897 251.53575897]\n", "Per Channel StdDev [26.2797294 26.2797294 26.2797294]\n", "Min Height 416\n", "Min Width 416\n", "Max Height 416\n", "Max Width 416\n", "Average Height 416\n", "Average Width 416\n", "Largest Image (416, 416, 3)\n", "Smallest Image (416, 416, 3)\n", "Duplicates 0\n", "Average Object Area 3565\n", "Smallest Object Area 195\n", "Largest Object Area 12544\n", "Num Small Objects 2216\n", "Num Medium Objects 2415\n", "Num Large Objects 702\n", "Num Empty Images (No Labels): 0\n", "Total Objects 5333\n", "----------------------------- ----------------------------------------\n", "MASTERFUL [14:35:07]: Test Dataset Analysis:\n", "100%|█████████████████████████████████████████| 100/100 [00:01<00:00, 50.68it/s]\n", "\n", "MASTERFUL [14:35:09]: Test dataset analysis finished at 14:35:09 in 2 seconds (2s), returned:\n", "----------------------------- ----------------------------------------\n", "Total Examples 100\n", "Label Counts 0 70\n", " 1 57\n", " 2 44\n", " 3 62\n", " 4 74\n", " 5 60\n", " 6 66\n", " 7 78\n", " 8 55\n", " 9 59\n", "Label Distribution 0 0.112\n", " 1 0.0912\n", " 2 0.0704\n", " 3 0.0992\n", " 4 0.1184\n", " 5 0.096\n", " 6 0.1056\n", " 7 0.1248\n", " 8 0.088\n", " 9 0.0944\n", "Balanced Yes\n", "Per Channel Mean [251.62994095 251.62994095 251.62994095]\n", "Per Channel StdDev [26.10288871 26.10288871 26.10288871]\n", "Min Height 416\n", "Min Width 416\n", "Max Height 416\n", "Max Width 416\n", "Average Height 416\n", "Average Width 416\n", "Largest Image (416, 416, 3)\n", "Smallest Image (416, 416, 3)\n", "Duplicates 0\n", "Average Object Area 3259\n", "Smallest Object Area 195\n", "Largest Object Area 12544\n", "Num Small Objects 270\n", "Num Medium Objects 290\n", "Num Large Objects 65\n", "Num Empty Images (No Labels): 0\n", "Total Objects 625\n", "----------------------------- ----------------------------------------\n", "MASTERFUL [14:35:09]: Unlabeled Dataset Analysis:\n", "100%|███████████████████████████████████████| 9000/9000 [01:30<00:00, 99.26it/s]\n", "\n", "MASTERFUL [14:36:39]: Unlabeled dataset analysis finished at 14:36:39 in 91 seconds (1m 31s), returned:\n", "------------------ ----------------------------------------\n", "Total Examples 9000\n", "Per Channel Mean [251.44937014 251.44937014 251.44937014]\n", "Per Channel StdDev [26.67446678 26.67446678 26.67446678]\n", "Min Height 416\n", "Min Width 416\n", "Max Height 416\n", "Max Width 416\n", "Average Height 416\n", "Average Width 416\n", "Largest Image (416, 416, 3)\n", "Smallest Image (416, 416, 3)\n", "Duplicates 0\n", "------------------ ----------------------------------------\n", "MASTERFUL [14:36:39]: Cross-Dataset Analysis:\n", "MASTERFUL [14:36:40]: Cross-Dataset analysis finished at 14:36:40 in 0 seconds (0s), returned:\n", "--------- ------------\n", "train train 0\n", " test 0\n", " unlabeled 0\n", "test train 0\n", " test 0\n", " unlabeled 0\n", "unlabeled train 0\n", " test 0\n", " unlabeled 0\n", "--------- ------------\n", "MASTERFUL [14:36:40]: Meta-Learning architecture parameters...\n", "MASTERFUL [14:36:40]: Architecture learner finished at 14:36:40 in 0 seconds (0s), returned:\n", "------------------------------ -----------------------------------------------------\n", "task Task.DETECTION\n", "num_classes 10\n", "ensemble_multiplier 1\n", "custom_objects\n", "model_config ssd {\n", " num_classes: 10\n", " image_resizer {\n", " fixed_shape_resizer {\n", " height: 416\n", " width: 416\n", " }\n", " }\n", " feature_extractor {\n", " type: \"ssd_mobilenet_v2_keras\"\n", " depth_multiplier: 1.0\n", " min_depth: 16\n", " conv_hyperparams {\n", " regularizer {\n", " l2_regularizer {\n", " weight: 3.9999998989515007e-05\n", " }\n", " }\n", " initializer {\n", " truncated_normal_initializer {\n", " mean: 0.0\n", " stddev: 0.029999999329447746\n", " }\n", " }\n", " activation: RELU_6\n", " batch_norm {\n", " decay: 0.9700000286102295\n", " center: true\n", " scale: true\n", " epsilon: 0.0010000000474974513\n", " train: true\n", " }\n", " }\n", " override_base_feature_extractor_hyperparams: true\n", " }\n", " box_coder {\n", " faster_rcnn_box_coder {\n", " y_scale: 10.0\n", " x_scale: 10.0\n", " height_scale: 5.0\n", " width_scale: 5.0\n", " }\n", " }\n", " matcher {\n", " argmax_matcher {\n", " matched_threshold: 0.5\n", " unmatched_threshold: 0.5\n", " ignore_thresholds: false\n", " negatives_lower_than_unmatched: true\n", " force_match_for_each_row: true\n", " use_matmul_gather: true\n", " }\n", " }\n", " similarity_calculator {\n", " iou_similarity {\n", " }\n", " }\n", " box_predictor {\n", " convolutional_box_predictor {\n", " conv_hyperparams {\n", " regularizer {\n", " l2_regularizer {\n", " weight: 3.9999998989515007e-05\n", " }\n", " }\n", " initializer {\n", " random_normal_initializer {\n", " mean: 0.0\n", " stddev: 0.009999999776482582\n", " }\n", " }\n", " activation: RELU_6\n", " batch_norm {\n", " decay: 0.9700000286102295\n", " center: true\n", " scale: true\n", " epsilon: 0.0010000000474974513\n", " train: true\n", " }\n", " }\n", " min_depth: 0\n", " max_depth: 0\n", " num_layers_before_predictor: 0\n", " use_dropout: false\n", " dropout_keep_probability: 0.800000011920929\n", " kernel_size: 1\n", " box_code_size: 4\n", " apply_sigmoid_to_scores: false\n", " class_prediction_bias_init: -4.599999904632568\n", " }\n", " }\n", " anchor_generator {\n", " ssd_anchor_generator {\n", " num_layers: 6\n", " min_scale: 0.20000000298023224\n", " max_scale: 0.949999988079071\n", " aspect_ratios: 1.0\n", " aspect_ratios: 2.0\n", " aspect_ratios: 0.5\n", " aspect_ratios: 3.0\n", " aspect_ratios: 0.33329999446868896\n", " }\n", " }\n", " post_processing {\n", " batch_non_max_suppression {\n", " score_threshold: 9.99999993922529e-09\n", " iou_threshold: 0.6000000238418579\n", " max_detections_per_class: 100\n", " max_total_detections: 100\n", " }\n", " score_converter: SIGMOID\n", " }\n", " normalize_loss_by_num_matches: true\n", " loss {\n", " localization_loss {\n", " weighted_smooth_l1 {\n", " delta: 1.0\n", " }\n", " }\n", " classification_loss {\n", " weighted_sigmoid_focal {\n", " gamma: 2.0\n", " alpha: 0.75\n", " }\n", " }\n", " classification_weight: 1.0\n", " localization_weight: 1.0\n", " }\n", " encode_background_as_zeros: true\n", " normalize_loc_loss_by_codesize: true\n", " inplace_batchnorm_update: true\n", " freeze_batchnorm: false\n", " }\n", "backbone_only False\n", "input_shape (416, 416, 3)\n", "input_range ImageRange.ZERO_255\n", "input_dtype \n", "input_channels_last True\n", "prediction_logits True\n", "prediction_dtype \n", "prediction_structure TensorStructure.DICT\n", "prediction_shape\n", "total_parameters\n", "total_trainable_parameters\n", "total_non_trainable_parameters\n", "------------------------------ -----------------------------------------------------\n", "MASTERFUL [14:36:40]: Meta-learning training dataset parameters...\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "MASTERFUL [14:36:41]: Training dataset learner finished at 14:36:41 in 1 seconds (1s), returned:\n", "------------------------- -----------------------------\n", "num_classes 10\n", "task Task.DETECTION\n", "image_shape (416, 416, 3)\n", "image_range ImageRange.ZERO_255\n", "image_dtype \n", "image_channels_last True\n", "label_dtype \n", "label_shape (12, 15)\n", "label_structure TensorStructure.SINGLE_TENSOR\n", "label_sparse False\n", "label_bounding_box_format BoundingBoxFormat.TENSORFLOW\n", "------------------------- -----------------------------\n", "MASTERFUL [14:36:41]: Meta-learning test dataset parameters...\n", "MASTERFUL [14:36:41]: Test dataset learner finished at 14:36:41 in 1 seconds (1s), returned:\n", "------------------------- -----------------------------\n", "num_classes 10\n", "task Task.DETECTION\n", "image_shape (416, 416, 3)\n", "image_range ImageRange.ZERO_255\n", "image_dtype \n", "image_channels_last True\n", "label_dtype \n", "label_shape (11, 15)\n", "label_structure TensorStructure.SINGLE_TENSOR\n", "label_sparse False\n", "label_bounding_box_format BoundingBoxFormat.TENSORFLOW\n", "------------------------- -----------------------------\n", "MASTERFUL [14:36:41]: Meta-learning unlabeled dataset parameters...\n", "MASTERFUL [14:36:42]: Unlabeled dataset learner finished at 14:36:42 in 1 seconds (1s), returned:\n", "------------------------- -------------------\n", "num_classes 10\n", "task Task.DETECTION\n", "image_shape (416, 416, 3)\n", "image_range ImageRange.ZERO_255\n", "image_dtype \n", "image_channels_last True\n", "label_dtype\n", "label_shape\n", "label_structure\n", "label_sparse False\n", "label_bounding_box_format\n", "------------------------- -------------------\n", "MASTERFUL [14:36:42]: Meta-Learning optimization parameters...\n", "Callbacks: 100%|███████████████████████████████| 5/5 [01:25<00:00, 17.13s/steps]\n", "MASTERFUL [14:38:08]: Optimization learner finished at 14:38:08 in 86 seconds (1m 26s), returned:\n", "----------------------- -----------------------------------------------------------------\n", "batch_size 16\n", "drop_remainder True\n", "epochs 1000000\n", "learning_rate 0.0008838834473863244\n", "learning_rate_schedule\n", "learning_rate_callback \n", "warmup_learning_rate 1e-06\n", "warmup_epochs 5\n", "optimizer \n", "loss\n", "loss_weights\n", "early_stopping_callback \n", "metrics\n", "readonly_callbacks\n", "----------------------- -----------------------------------------------------------------\n", "MASTERFUL [14:38:10]: Meta-Learning Regularization Parameters...\n", "MASTERFUL [14:38:24]: Warming up model for analysis.\n", "MASTERFUL [14:38:25]: \tWarming up batch norm statistics (this could take a few minutes).\n", "MASTERFUL [14:38:28]: \tWarming up training for 250 steps.\n", "100%|██████████████████████████████████████| 250/250 [01:56<00:00, 2.15steps/s]\n", "MASTERFUL [14:40:24]: \tValidating batch norm statistics after warmup for stability (this could take a few minutes).\n", "MASTERFUL [14:40:25]: Analyzing baseline model performance. Training until validation loss stabilizes...\n", "Baseline Training: 100%|█████████████████| 2365/2365 [09:40<00:00, 4.08steps/s]\n", "MASTERFUL [14:50:27]: Baseline training complete.\n", "MASTERFUL [14:50:28]: Meta-Learning Basic Data Augmentations...\n", "Node 1/4: 100%|██████████████████████████| 1100/1100 [04:28<00:00, 4.09steps/s]\n", "Node 2/4: 100%|██████████████████████████| 1100/1100 [04:36<00:00, 3.98steps/s]\n", "Node 3/4: 100%|██████████████████████████| 1100/1100 [04:29<00:00, 4.08steps/s]\n", "Node 4/4: 100%|██████████████████████████| 1100/1100 [04:29<00:00, 4.08steps/s]\n", "MASTERFUL [15:09:52]: Meta-Learning Data Augmentation Clusters...\n", "Distance Analysis: 100%|███████████████████| 143/143 [02:19<00:00, 1.02steps/s]\n", "Node 1/10: 100%|█████████████████████████| 1100/1100 [05:58<00:00, 3.06steps/s]\n", "Node 2/10: 100%|█████████████████████████| 1100/1100 [05:59<00:00, 3.06steps/s]\n", "Node 3/10: 100%|█████████████████████████| 1100/1100 [05:59<00:00, 3.06steps/s]\n", "Node 4/10: 100%|█████████████████████████| 1100/1100 [05:59<00:00, 3.06steps/s]\n", "Node 5/10: 100%|█████████████████████████| 1100/1100 [05:59<00:00, 3.06steps/s]\n", "Distance Analysis: 100%|█████████████████████| 66/66 [01:06<00:00, 1.00s/steps]\n", "Node 6/10: 100%|█████████████████████████| 1100/1100 [05:02<00:00, 3.63steps/s]\n", "Node 7/10: 100%|█████████████████████████| 1100/1100 [05:14<00:00, 3.50steps/s]\n", "Node 8/10: 100%|█████████████████████████| 1100/1100 [05:12<00:00, 3.52steps/s]\n", "Node 9/10: 100%|█████████████████████████| 1100/1100 [05:01<00:00, 3.65steps/s]\n", "Node 10/10: 100%|████████████████████████| 1100/1100 [04:51<00:00, 3.77steps/s]\n", "MASTERFUL [16:12:02]: Meta-Learning Label Based Regularization...\n", "Node 1/2: 100%|██████████████████████████| 1100/1100 [04:32<00:00, 4.04steps/s]\n", "Node 2/2: 100%|██████████████████████████| 1100/1100 [04:34<00:00, 4.01steps/s]\n", "MASTERFUL [16:21:42]: Meta-Learning Weight Based Regularization...\n", "MASTERFUL [16:21:43]: Analysis finished in 103.36468438307445 minutes.\n", "MASTERFUL [16:21:43]: Learned parameters scene-delicious-gander saved at /home/sam/.masterful/policies/scene-delicious-gander.\n", "MASTERFUL [16:21:43]: Regularization learner finished at 16:21:43 in 6214 seconds (1h 43m 34s), returned:\n", "------------------------- -----------------------------------------------\n", "shuffle_buffer_size 810\n", "mirror 1.0\n", "rot90 0.0\n", "rotate 0\n", "mixup 0.75\n", "cutmix 0.0\n", "label_smoothing 0\n", "hsv_cluster 0\n", "hsv_cluster_to_index [[11 11 11 11 11 11]\n", " [11 11 11 11 11 11]\n", " [11 11 11 11 11 11]\n", " [11 11 11 11 11 11]\n", " [11 11 11 11 11 11]]\n", "hsv_magnitude_table [[ 0 10 20 30 40 50 60 70 80 90 100]\n", " [ 0 10 20 30 40 50 60 70 80 90 100]\n", " [ 0 10 20 30 40 50 60 70 80 90 100]\n", " [ 0 10 20 30 40 50 60 70 80 90 100]\n", " [ 0 10 20 30 40 50 60 70 80 90 100]]\n", "contrast_cluster 0\n", "contrast_cluster_to_index [[11 11 11 11 11 11]\n", " [11 11 11 11 11 11]\n", " [11 11 11 11 11 11]\n", " [11 11 11 11 11 11]\n", " [11 11 11 11 11 11]\n", " [11 11 11 11 11 11]]\n", "contrast_magnitude_table [[ 0 10 20 30 40 50 60 70 80 90 100]\n", " [ 0 10 20 30 40 50 60 70 80 90 100]\n", " [ 0 10 20 30 40 50 60 70 80 90 100]\n", " [ 0 10 20 30 40 50 60 70 80 90 100]\n", " [ 0 10 20 30 40 50 60 70 80 90 100]\n", " [ 0 10 20 30 40 50 60 70 80 90 100]]\n", "blur_cluster 0\n", "blur_cluster_to_index [[11 11 11 11 11 11]\n", " [11 11 11 11 11 11]]\n", "blur_magnitude_table [[ 0 10 20 30 40 50 60 70 80 90 100]\n", " [ 0 10 20 30 40 50 60 70 80 90 100]]\n", "spatial_cluster 0\n", "spatial_cluster_to_index [[11 11 11 11 11 11]\n", " [11 11 11 11 11 11]\n", " [11 11 11 11 11 11]\n", " [11 11 11 11 11 11]\n", " [11 11 11 11 11 11]\n", " [11 11 11 11 11 11]]\n", "spatial_magnitude_table [[ 0 10 20 30 40 50 60 70 80 90 100]\n", " [ 0 10 20 30 40 50 60 70 80 90 100]\n", " [ 0 10 20 30 40 50 60 70 80 90 100]\n", " [ 0 10 20 30 40 50 60 70 80 90 100]\n", " [ 0 10 20 30 40 50 60 70 80 90 100]\n", " [ 0 10 20 30 40 50 60 70 80 90 100]]\n", "synthetic_proportion [0.0]\n", "------------------------- -----------------------------------------------\n", "MASTERFUL [16:21:43]: Learning SSL parameters...\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "MASTERFUL [16:21:44]: SSL learner finished at 16:21:44 in 1 seconds (1s), returned:\n", "------------------------- -------------------\n", "num_classes 10\n", "task Task.DETECTION\n", "image_shape (416, 416, 3)\n", "image_range ImageRange.ZERO_255\n", "image_dtype \n", "image_channels_last True\n", "label_dtype\n", "label_shape\n", "label_structure\n", "label_sparse False\n", "label_bounding_box_format\n", "------------------------- -------------------\n", "MASTERFUL [16:21:45]: Training model with semi-supervised learning enabled.\n", "MASTERFUL [16:21:45]: Performing basic dataset analysis.\n", "MASTERFUL [16:21:55]: Masterful will use 90 labeled examples as a validation set since no validation data was provided.\n", "MASTERFUL [16:21:55]: Training model with:\n", "MASTERFUL [16:21:55]: \t810 labeled examples.\n", "MASTERFUL [16:21:55]: \t90 validation examples.\n", "MASTERFUL [16:21:55]: \t0 synthetic examples.\n", "MASTERFUL [16:21:55]: \t9000 unlabeled examples.\n", "MASTERFUL [16:21:56]: Training model with learned parameters scene-delicious-gander in two phases.\n", "MASTERFUL [16:21:56]: The first phase is supervised training with the learned parameters.\n", "MASTERFUL [16:21:56]: The second phase is semi-supervised training to boost performance.\n", "MASTERFUL [16:22:06]: Warming up model for supervised training.\n", "MASTERFUL [16:22:08]: \tWarming up batch norm statistics (this could take a few minutes).\n", "MASTERFUL [16:22:12]: \tWarming up training for 250 steps.\n", "100%|██████████████████████████████████████| 250/250 [02:15<00:00, 1.84steps/s]\n", "MASTERFUL [16:24:27]: \tValidating batch norm statistics after warmup for stability (this could take a few minutes).\n", "MASTERFUL [16:24:29]: Starting Phase 1: Supervised training until the validation loss stabilizes...\n", "Supervised Training: 100%|███████████████| 3300/3300 [22:20<00:00, 2.46steps/s]\n", "MASTERFUL [16:47:18]: Starting Phase 2: Semi-supervised training until the validation loss stabilizes...\n", "MASTERFUL [16:47:18]: Warming up model for semi-supervised training.\n", "MASTERFUL [16:47:18]: \tWarming up batch norm statistics (this could take a few minutes).\n", "MASTERFUL [16:47:19]: \tWarming up training for 250 steps.\n", "100%|██████████████████████████████████████| 250/250 [01:48<00:00, 2.30steps/s]\n", "MASTERFUL [16:49:08]: \tValidating batch norm statistics after warmup for stability (this could take a few minutes).\n", "Semi-Supervised Training: 100%|██████| 16042/16042 [1:46:53<00:00, 2.50steps/s]\n", "MASTERFUL [18:40:25]: Semi-Supervised training complete.\n", "MASTERFUL [18:40:27]: Training complete in 138.50163372357687 minutes.\n", "MASTERFUL [18:40:32]: Saving model output to /home/sam/model_output/session-00342.\n", "MASTERFUL [18:40:42]: Saving saved_model output to /home/sam/model_output/session-00342/saved_model\n", "MASTERFUL [18:41:18]: Saving onnx output to /home/sam/model_output/session-00342/onnx\n", "MASTERFUL [18:42:23]: Saving regularization params to /home/sam/model_output/session-00342/regularization.params.\n", "MASTERFUL [18:42:23]: ************************************\n", "MASTERFUL [18:42:23]: Evaluating model on 100 examples from the 'test' dataset split:\n", "Evaluating: 100%|█████████████████████████████| 100/100 [00:06<00:00, 16.39it/s]\n", "MASTERFUL [18:42:29]: Loss: 0.1950\n", "MASTERFUL [18:42:29]: Loss/Localization Loss: 0.0204\n", "MASTERFUL [18:42:29]: Loss/Classification Loss: 0.1100\n", "MASTERFUL [18:42:29]: Loss/Regularization Loss: 0.0647\n", "MASTERFUL [18:42:29]: Loss/Total Loss: 0.1950\n", "MASTERFUL [18:42:29]: Calculating MSCOCO evaluation metrics:\n", "MSCOCO Metrics: 100%|█████████████████████████| 100/100 [00:14<00:00, 6.93it/s]\n", "MASTERFUL [18:42:44]: DetectionBoxes_Precision/mAP: 0.7625\n", "MASTERFUL [18:42:44]: DetectionBoxes_Precision/mAP@.50IOU: 0.9311\n", "MASTERFUL [18:42:44]: DetectionBoxes_Precision/mAP@.75IOU: 0.8991\n", "MASTERFUL [18:42:44]: DetectionBoxes_Precision/mAP (small): 0.6476\n", "MASTERFUL [18:42:44]: DetectionBoxes_Precision/mAP (medium): 0.8352\n", "MASTERFUL [18:42:44]: DetectionBoxes_Precision/mAP (large): 0.8990\n", "MASTERFUL [18:42:44]: DetectionBoxes_Recall/AR@1: 0.6156\n", "MASTERFUL [18:42:44]: DetectionBoxes_Recall/AR@10: 0.8163\n", "MASTERFUL [18:42:44]: DetectionBoxes_Recall/AR@100: 0.8163\n", "MASTERFUL [18:42:44]: DetectionBoxes_Recall/AR@100 (small): 0.7278\n", "MASTERFUL [18:42:44]: DetectionBoxes_Recall/AR@100 (medium): 0.8780\n", "MASTERFUL [18:42:44]: DetectionBoxes_Recall/AR@100 (large): 0.9138\n", "MASTERFUL [18:42:44]: DetectionBoxes_PerformanceByCategory/mAP/0: 0.7844\n", "MASTERFUL [18:42:44]: DetectionBoxes_PerformanceByCategory/mAP/1: 0.8332\n", "MASTERFUL [18:42:44]: DetectionBoxes_PerformanceByCategory/mAP/2: 0.7457\n", "MASTERFUL [18:42:44]: DetectionBoxes_PerformanceByCategory/mAP/3: 0.7791\n", "MASTERFUL [18:42:44]: DetectionBoxes_PerformanceByCategory/mAP/4: 0.7758\n", "MASTERFUL [18:42:44]: DetectionBoxes_PerformanceByCategory/mAP/5: 0.7530\n", "MASTERFUL [18:42:44]: DetectionBoxes_PerformanceByCategory/mAP/6: 0.7673\n", "MASTERFUL [18:42:44]: DetectionBoxes_PerformanceByCategory/mAP/7: 0.7604\n", "MASTERFUL [18:42:44]: DetectionBoxes_PerformanceByCategory/mAP/8: 0.7213\n", "MASTERFUL [18:42:44]: DetectionBoxes_PerformanceByCategory/mAP/9: 0.7052\n", "Confusion Matrix: 100%|███████████████████████| 100/100 [00:09<00:00, 10.13it/s]\n", "MASTERFUL [18:42:54]: Confusion Matrix:\n", "MASTERFUL [18:42:54]: | 0| 1| 2| 3| 4| 5| 6| 7| 8| 9| background|\n", "MASTERFUL [18:42:54]: 0| 65| 0| 0| 0| 0| 0| 1| 0| 2| 1| 1|\n", "MASTERFUL [18:42:54]: 1| 0| 56| 0| 0| 0| 0| 0| 0| 0| 0| 1|\n", "MASTERFUL [18:42:54]: 2| 0| 0| 37| 3| 0| 0| 0| 0| 3| 0| 1|\n", "MASTERFUL [18:42:54]: 3| 0| 0| 0| 58| 0| 1| 0| 0| 0| 0| 3|\n", "MASTERFUL [18:42:54]: 4| 0| 0| 1| 0| 63| 0| 0| 1| 1| 4| 4|\n", "MASTERFUL [18:42:54]: 5| 0| 0| 0| 3| 0| 56| 0| 0| 0| 0| 1|\n", "MASTERFUL [18:42:54]: 6| 5| 0| 0| 0| 0| 0| 54| 0| 5| 0| 2|\n", "MASTERFUL [18:42:54]: 7| 0| 0| 0| 1| 1| 0| 0| 63| 2| 10| 1|\n", "MASTERFUL [18:42:54]: 8| 3| 0| 1| 2| 0| 1| 1| 0| 44| 1| 2|\n", "MASTERFUL [18:42:54]: 9| 1| 0| 0| 1| 0| 1| 0| 2| 1| 49| 4|\n", "MASTERFUL [18:42:54]: background| 5| 2| 4| 5| 3| 5| 2| 7| 9| 15| 0|\n", "MASTERFUL [18:42:54]: Confusion matrix columns represent the prediction labels and the rows represent the real labels.\n", "MASTERFUL [18:42:54]: Saving evaluation metrics to /home/sam/model_output/session-00342/evaluation_metrics.csv.\n", "MASTERFUL [18:42:54]: Saving confusion matrix to /home/sam/model_output/session-00342/confusion_matrix.csv.\n", "MASTERFUL [18:42:54]: Total elapsed training time: 248 minutes (4h 8m 11s).\n", "MASTERFUL [18:42:54]: Launch masterful-gui to visualize the training results: policy name 'scene-delicious-gander'\n" ] } ], "source": [ "# Use the Masterful CLI to train the model WITH unlabeled data\n", "!masterful-train --config https://masterful-public.s3.us-west-1.amazonaws.com/datasets/yymnist/training_with_unlabeled.yaml" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Unlabeled Data Improved Model Training\n", "\n", "In the below table is a summary of the evaluation metrics from both training runs, with and without unlabeled data: \n", "\n", "| Metric | Without Unlabeled Data | With Unlabeled Data |\n", "|-----------------|------------------------|---------------------|\n", "| `Loss` | 0.2189 | 0.1950 |\n", "| `mAP` | 0.7454 | 0.7625 |\n", "| `mAP@0.5` | 0.9290 | 0.9311 |\n", "| `mAP - Class 0` | 0.7744 | 0.7844 |\n", "| `mAP - Class 1` | 0.7481 | 0.8332 |\n", "| `mAP - Class 2` | 0.7269 | 0.7457 |\n", "| `mAP - Class 3` | 0.7851 | 0.7791 |\n", "| `mAP - Class 4` | 0.7444 | 0.7758 |\n", "| `mAP - Class 5` | 0.7149 | 0.7530 |\n", "| `mAP - Class 6` | 0.7831 | 0.7673 |\n", "| `mAP - Class 7` | 0.7767 | 0.7604 |\n", "| `mAP - Class 8` | 0.6802 | 0.7213 |\n", "| `mAP - Class 9` | 0.7204 | 0.7052 |\n", "\n", "As you can see, the overall loss improved and the mAP metrics improved. From the per-category metrics, the model significantly improved on the worst performing classes. It did this at a small expense to the best-performing classes, which is okay because the model was already good at those, and by improving the worst performing classes the model got better overall!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Using the Model for Inference\n", "\n", "The [Output Formats](../markdown/guide_cli_model_output_formats.md) guide has more information about how to use the models output by Masterful. Object Detection has a few other intricacies that should be addressed though, since the model outputs both the location of an object, a class instance for that object, and a measure of the confidence in the prediction. First, the below code shows how to make a prediction using the model we loaded above on the examples you visualized in the [View the Predictions](#view-the-predictions) section:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Downloading Model: 100% (19376673 of 19376673) || Elapsed Time: 0:00:02 Time: 0:00:02\n", "Image Shape: height=416 width=416.\n", "Predictions shape is (1, 100, 6)\n", "Maximum number of boxes predicted is 100\n", "Found 6 confident predictions out of 100 total predictions.\n", "Prediction 0:\n", " Class: 0\n", " Left: 154\n", " Top: 137\n", " Right: 241\n", " Bottom: 223\n", "Prediction 1:\n", " Class: 6\n", " Left: 162\n", " Top: 282\n", " Right: 247\n", " Bottom: 366\n", "Prediction 2:\n", " Class: 0\n", " Left: 155\n", " Top: 21\n", " Right: 241\n", " Bottom: 106\n", "Prediction 3:\n", " Class: 5\n", " Left: 284\n", " Top: 277\n", " Right: 306\n", " Bottom: 299\n", "Prediction 4:\n", " Class: 5\n", " Left: 208\n", " Top: 115\n", " Right: 223\n", " Bottom: 130\n", "Prediction 5:\n", " Class: 9\n", " Left: 23\n", " Top: 84\n", " Right: 78\n", " Bottom: 140\n", "Prediction 6:\n", " Class: 4\n", " Left: 109\n", " Top: 342\n", " Right: 132\n", " Bottom: 365\n" ] } ], "source": [ "# This image corresponds to the first image (upper left)\n", "# in the `View the Predictions` section above.\n", "IMAGE_URL = \"https://masterful-public.s3.us-west-1.amazonaws.com/datasets/yymnist/images/train/000001.jpg\"\n", "\n", "# Load the trained model so that you can test running inference.\n", "MODEL_URL = \"https://masterful-public.s3.us-west-1.amazonaws.com/datasets/yymnist/yymnist_with_unlabeled_saved_model.tar.gz\"\n", "\n", "model = None\n", "with tempfile.TemporaryDirectory() as temp_directory:\n", " # Download the pretrained model from S3.\n", " saved_model_path = os.path.join(temp_directory, \"saved_model.tar.gz\") \n", " _ = urllib.request.urlretrieve(MODEL_URL, saved_model_path, progress_bar_factory(\"Downloading Model: \"))\n", "\n", " # Extract the model weights from the tar file.\n", " with tarfile.open(saved_model_path) as tar:\n", " tar.extractall(temp_directory)\n", " saved_model_path = os.path.join(temp_directory, \"saved_model\") \n", "\n", " # Load the trained tensorflow saved model.\n", " model = tf.saved_model.load(saved_model_path)\n", "\n", "# Download the image to use for generating a prediction\n", "# and convert it into a tensor.\n", "http_response = requests.get(IMAGE_URL, stream=True)\n", "image = tf.io.decode_image(http_response.raw.read())\n", "\n", "image_height = image.shape[0]\n", "image_width = image.shape[1]\n", "print(f\"Image Shape: height={image_height} width={image_width}.\")\n", "\n", "# The default inference function for tensorflow saved\n", "# models is named `serving_default`.\n", "inference_fn = model.signatures[\"serving_default\"]\n", "\n", "# The inference function is a one-arg callable, whose\n", "# input argument is `image` - the image to predict on,\n", "# and which returns a dictionary of outputs. The dictionary\n", "# contains an item whose key is `prediction`, which is the\n", "# predictions of the model.\n", "predictions = inference_fn(image=image)['prediction']\n", "\n", "# Convert the predictions to NumPY for easier processing.\n", "predictions = predictions.numpy()\n", "\n", "# The predictions from an object detection model\n", "# have the shape [batch size, number of boxes, 6]. \n", "# The batch size will always be 1 for inference models,\n", "# since they expect only one image for to predict on.\n", "# The number of boxes predicted depends on the model\n", "# configuration and represents the maximum number of boxes\n", "# predicted for each example. A typical value is 100.\n", "print(f\"Predictions shape is {predictions.shape}\")\n", "print(f\"Maximum number of boxes predicted is {predictions.shape[1]}\")\n", "\n", "# The final dimension of the prediction represents the boxes,\n", "# classes, and confidences predicted by the model. This dimension\n", "# is of form: [ymin, xmin, ymax, xmax, class id, confidence].\n", "# The box values are normalized against the image size, and are\n", "# in the range [0,1].\n", "#\n", "# The confidence score is a value in the range [0,1] which represents \n", "# the confidence of the prediction, similar to the confidence\n", "# of a classification model represented by the softmax probabities\n", "# of the class predictions. The step to determingin the `true`\n", "# predictions is to threshold the predictions by the confidence\n", "# score. A typical scheme is to use only the predictions whose\n", "# confidence is greater than 0.5 as the threshold, but you can\n", "# experiment with different threshold values for your use case.\n", "threshold = 0.5\n", "true_predictions = predictions[predictions[:, :, 5] > threshold]\n", "print(f\"Found {true_predictions.shape[1]} confident predictions out of {predictions.shape[1]} total predictions.\")\n", "\n", "# Print the model predictions above the given threshold\n", "for i in range(true_predictions.shape[0]):\n", " print(f\"Prediction {i}:\")\n", " print(f\" Class: {int(true_predictions[i][4])}\")\n", " print(f\" Left: {int(true_predictions[i][1]*image_width)}\")\n", " print(f\" Top: {int(true_predictions[i][0]*image_height)}\")\n", " print(f\" Right: {int(true_predictions[i][3]*image_width)}\")\n", " print(f\" Bottom: {int(true_predictions[i][2]*image_height)}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Next Steps\n", "\n", "In the above sections, you have learned how to train an object detection model using the Masterful CLI, evaluate the performance of the model, and use the model to make predictions on your production data.\n", "\n", "If you want to look at another, more involved Object Detection example, see [Detecting Pedestrians in Street Level Imagery](../notebooks/guide_cli_object_detection_pedestrians.ipynb) for more information. Otherwise, feel free to explore [Classifying Land Use](../notebooks/guide_cli_classification_land_use.ipynb) and [Segmenting Animals](../notebooks/guide_cli_semantic_segmentation.ipynb) for other examples of using the Masterful CLI Trainer to solve challenging computer vision problems." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "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.6.9" }, "vscode": { "interpreter": { "hash": "95156cab2e76f4ed2661f50252e09f9618e9c8f14a3ddcd646c88f739859fa38" } } }, "nbformat": 4, "nbformat_minor": 2 }