{ "cells": [ { "attachments": {}, "cell_type": "markdown", "id": "71b1eb19-3148-46ca-8a9a-fdf18bd2b18d", "metadata": {}, "source": [ "# Demonstrating Visual Focus Perturbations\n", "\n", "## Introduction\n", "This notebook is part of the NRTK demonstration suite, demonstrating how perturbations can be applied and their impact measured via MAITE evaluation workflows.\n", "\n", "## Layout\n", "This notebook demonstrates how a particular sensor condition (in this case, Visual Focus), can affect an object detection model, and how that impact can be measured. The overall structure is:\n", "\n", "- **Traditional vs. relative mAP:**\n", " - An overview of the nuances of what we'll be evaluating.\n", "- **Setup:**\n", " - Notebook initialization, loading the supporting python code. Depending on if this is the first time you've run this notebook, this may take some time.\n", " - Loading the source image, which will be used throughout the notebook.\n", "- **Image perturbation examples:**\n", " - The NRTK perturbation is demonstrated on the source image.\n", "- **Baseline detections:**\n", " - The object detection model is loaded and run on the unperturbed image. These will serve as \\\"ground truth\\\" for comparisons against the perturbed images.\n", " \n", "At this point, we have the fundamental elements of our evaluation: the model, our reference image, and a mechanism for creating the perturbed test images. Next we adapt these elements to be used with the MAITE evaluation workflow:\n", "\n", "- **Wrapping the detection model**\n", "- **Wrapping the reference image as a dataset**\n", "- **Wrapping the perturbation as augmentation objects**\n", "- **Wrapping the metrics**\n", "\n", "After the evaluation elements have been wrapped, we can run the evaluation:\n", "\n", "- **Preparing the augmentations:**\n", " - We specify the range of perturbation values to evaluate and optionally specify which ones we'd like to visualize.\n", "- **Evaluation of augmented data:**\n", " - Each augmentation is run through MAITE's evaluation workflow, computing the mean average precision metric relative to the unperturbed detections.\n", "- **Evaluation analysis:**\n", " - We plot and discuss the mAP@50 metric from each of the perturbed images, as well as per-class and per-area results." ] }, { "cell_type": "markdown", "id": "4b2e1964-46e2-4497-88ff-274eaca17960", "metadata": {}, "source": [ "# Evaluation guidance: traditional vs. relative mAP\n", "\n", "This notebook will be evaluating the perturbed images using mean average precision (mAP) **relative** to detections from the unperturbed image. Traditional mAP scores the computed detections to ground-truth annotations vetted by an analyst; the mAP metric indicates how well the detector does compared to that analyst and thus measures the detector's \"absolute\" performance (\"absolute\" in the sense that the assumption is no detector can do better than the analyst.)\n", "\n", "In contrast, in this notebook, we're not concerned with the **absolute** ability of the detector to find objects of interest. Rather, we're interested in how the **perturbations** affect the detector *relative to the unperturbed image*. It's expected that the detector won't find every target in the unperturbed image; instead, we're measuring the **change in the detections** (or classifications) caused by the perturbations.\n", "\n", "To support relative mAP, we'll be computing detections on the unperturbed image and using those as our \"ground truth\" dataset, and using the MAITE dataset class slightly differently than usual. For example, there's no on-disk json file of reference annotations with an associated data loader; instead, we'll be taking the computed detections and manually copying them over into the dataset." ] }, { "cell_type": "markdown", "id": "f9268412-0d13-4fed-ae78-f6ee02c94c9c", "metadata": {}, "source": [ "# Setup: Notebook initialization\n", "The next few cells import the python packages used in the rest of the notebook.\n", "\n", "**Note:** We are suppressing warnings within this notebook to reduce visual clutter for demonstration purposes. If any issues arise while executing this notebook, we recommend that the first cell is **not** executed so that any related warnings are shown." ] }, { "cell_type": "code", "execution_count": 1, "id": "796743f8-2f1e-42aa-ad6b-f71e721602f8", "metadata": {}, "outputs": [], "source": [ "from __future__ import annotations\n", "\n", "# warning suppression\n", "import warnings\n", "\n", "warnings.filterwarnings(\"ignore\")" ] }, { "cell_type": "code", "execution_count": null, "id": "2561179f", "metadata": {}, "outputs": [], "source": [ "import sys # noqa: F401\n", "\n", "print(\"Beginning package installation...\")\n", "!{sys.executable} -m pip install -qU pip\n", "\n", "print(\"Installing required packages...\")\n", "!{sys.executable} -m pip install -q \"matplotlib\" --no-cache-dir\n", "!{sys.executable} -m pip install -q \"torchvision\" --no-cache-dir\n", "!{sys.executable} -m pip install -q \"torchmetrics\" --no-cache-dir\n", "!{sys.executable} -m pip install -q \"ultralytics\" --no-cache-dir\n", "\n", "# OpenCV must be uninstalled and reinstalled last due to other packages installing OpenCV\n", "print(\"Doing a fresh install of opencv-python-headless...\")\n", "!{sys.executable} -m pip uninstall -qy \"opencv-python\" \"opencv-python-headless\"\n", "!{sys.executable} -m pip install -q \"opencv-python-headless\" --no-cache-dir" ] }, { "cell_type": "code", "execution_count": null, "id": "c18e6bd1-1c56-447a-b1e4-16df26269ed8", "metadata": {}, "outputs": [], "source": [ "import os\n", "import urllib.request\n", "from collections.abc import Sequence\n", "from typing import Any\n", "\n", "import numpy as np\n", "\n", "# some initial imports\n", "%matplotlib inline\n", "%config InlineBackend.figure_format = \"jpeg\" # Use JPEG format for inline visualizations\n", "\n", "from matplotlib import pyplot as plt\n", "from PIL import Image\n", "\n", "from nrtk.impls.perturb_image.pybsm.defocus_otf_perturber import DefocusOTFPerturber" ] }, { "cell_type": "markdown", "id": "242e9bfa-fcea-4a1d-a8e0-9455b28777a2", "metadata": {}, "source": [ "# Setup: Source image\n", "\n", "In the next cell, we'll download and display a source image from the __[VisDrone](https://github.com/VisDrone/VisDrone-Dataset)__ dataset. The image will be cached in a local `data` subdirectory.\n", "\n", "### A note on image storage\n", "\n", "Typically in ML workflows, batches of images are processed as tensors of the color channels. Both our perturber (NRTK) and object detector (YOLO) accept numpy `ndarray` objects, and we will use [matplotlib.imshow](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.imshow.html) to view them. The complication is that although YOLO inferences on `ndarray`, [it expects the color channels to be in BGR](https://docs.ultralytics.com/modes/predict) order. If we naively view the same data YOLO inferences on, the colors will be wrong; if we naively inference on what we view, the detections will be wrong. (Our NRTK perturbation is agnostic to the channel order.)\n", "\n", "In this notebook, we'll convert the channel order to BGR when we load, and convert back whenever we explicitly call `imshow`.\n" ] }, { "cell_type": "code", "execution_count": 3, "id": "57facb8b-4cb6-476b-a321-f48d70e773ba", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(540, 960, 3)\n" ] }, { "data": { "image/jpeg": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "data_dir = \"./data\"\n", "os.makedirs(data_dir, exist_ok=True)\n", "img_path = os.path.join(data_dir, \"visdrone_img.jpg\")\n", "if not os.path.isfile(img_path):\n", " url = \"https://data.kitware.com/api/v1/item/623880f14acac99f429fe3ca/download\"\n", " _ = urllib.request.urlretrieve(url, img_path) # noqa: S310\n", "\n", "img_pil = Image.open(img_path)\n", "img_nd_bgr = np.asarray(img_pil)[\n", " :,\n", " :,\n", " ::-1,\n", "] # tip o' the hat to https://stackoverflow.com/questions/4661557/pil-rotate-image-colors-bgr-rgb\n", "print(img_nd_bgr.shape)\n", "plt.figure()\n", "plt.axis(\"off\")\n", "\n", "_ = plt.imshow(img_nd_bgr[:, :, ::-1]) # explicitly changing BGR to RGB for imshow" ] }, { "attachments": {}, "cell_type": "markdown", "id": "efe2e2a3-a3a2-4101-9872-bae618effab0", "metadata": {}, "source": [ "# NRTK De-focus OTF perturbation: examples and guidance\n", "\n", "The Defocus OTF applies the effects of optics defocus to the image, modeled as a gaussian blur. This function sets the width of the Gaussian blur in the spatial domain in terms of ‘angular extent’, which is given by the instantaneous field-of-view (IFOV) for each pixel (see image below for calculation). The angle for each pixel is approximately pixel_size/focal_length (radians) --- wx and wy scale the blur size in units of IFOV. For example, we can blur the image with an approximately 5 pixel blur kernel by setting wx and wy = 5 * pixel_size/focal_length = 5 * IFOV.\n", "\n", "![IFOV explanantion](./images/IFOV_explanation.png)\n", "\n", "The De-focus OTF perturbation is set by two parameters `w_x` and `w_y` which work to define the blur spot used to simulate the sensor de-focus:\n", "\n", "- `w_x`: the 1/e blur spot radii in the x direction\n", "- `w_y`: the 1/e blur spot radii in the y direction\n", "\n", "For the purpose of this notebook we will keep the values of these two parameters equal.\n", "\n", "- `w_x == 0.0`: The perturber is undefined at exactly 0 due to the size 0 blur it creates.\n", "- `0.0 < w_x`: Creates a blur spot of size `w_x*w_y` that is used to de-focus the image\n", "\n", "A normal IFOV value is on the order of 1e-6, and since `w_x` and `w_y` are in the same units as IFOV, a value of 10e3 larger than the normal IFOV value results in a blur kernel that extends to a high proportion of the size of the image in the frequency domain resulting in a largely blurred/defocused image.\n" ] }, { "cell_type": "code", "execution_count": 4, "id": "5a370d2a-2489-4c48-b29a-ea8ad3ef98fa", "metadata": {}, "outputs": [ { "data": { "image/jpeg": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "_, ax = plt.subplots(2, 4, figsize=(10, 4))\n", "for idx, w_x in enumerate((0.0001, 0.0005, 0.0007, 0.001, 0.005, 0.007, 0.01, 0.05)):\n", " (row, col) = (int(idx / 4), idx % 4)\n", " bp = DefocusOTFPerturber(w_x=w_x, w_y=w_x)\n", " ax[row, col].set_title(f\"w_x: {w_x}\")\n", " ax[row, col].imshow(bp(img_nd_bgr)[0][:, :, ::-1])\n", " _ = ax[row, col].axis(\"off\")\n", "plt.tight_layout()" ] }, { "cell_type": "markdown", "id": "30eb653b-6be9-4d58-8d69-db4b64c3d81c", "metadata": {}, "source": [ "# Baseline detections\n", "\n", "In the next cell, we'll download a [YOLOv11](https://docs.ultralytics.com/models/yolo11/) model, compute object detections on the source image, and display the results. As discussed above, these detections will serve as the \"ground truth\" for our relative mAP evaluation later.\n", "\n", "*Note that here, we're using YOLO's built-in visualization tool, which automatically adjusts for BGR / RGB order.*" ] }, { "cell_type": "code", "execution_count": 5, "id": "55600de0-089f-4dd6-ac4d-7896b8df5494", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ultralytics 8.3.85 🚀 Python-3.9.21 torch-2.6.0+cu124 CUDA:0 (Quadro RTX 5000, 15929MiB)\n", "Setup complete ✅ (40 CPUs, 31.0 GB RAM, 393.9/914.7 GB disk)\n", "Downloading model...\n", "Computing baseline...\n", "\n", "0: 384x640 5 persons, 15 cars, 1 motorcycle, 2 trucks, 58.0ms\n", "Speed: 7.5ms preprocess, 58.0ms inference, 242.0ms postprocess per image at shape (1, 3, 384, 640)\n" ] } ], "source": [ "# Import YOLO support\n", "import ultralytics\n", "\n", "ultralytics.checks()\n", "print(\"Downloading model...\")\n", "model = ultralytics.YOLO(\"yolo11n.pt\")\n", "print(\"Computing baseline...\")\n", "baseline = model(img_nd_bgr)\n", "baseline[0].show()" ] }, { "cell_type": "markdown", "id": "39050929-bf48-44b1-9247-5cac7f44cd8c", "metadata": {}, "source": [ "# MAITE Evaluation workflow preparation\n", "\n", "We'll use the [MAITE Evaluation workflow](https://jatic.pages.jatic.net/cdao/maite/generated/maite.workflows.evaluate.html) to evaluate the performance of the perturbed data against our baseline detections. We'll need to \"wrap\" our model, data, and perturbations into callable objects to pass to the `maite.workflows.evaluate` function:\n", "\n", "- We'll wrap the **model** to make predictions on input data when called.\n", "\n", "- The wrapped **dataset** will return our test image when called. Note that this will be the original, unperturbed image; we'll apply our perturbations via...\n", "\n", "- ...the **augmentation** object, which applies the perturbation to the image inside the evaluation.\n", "\n", "- Finally, the **metric** object will define our precise scoring methodology.\n", "\n", "The evaluation workflow in this notebook is slightly unusual. Typical ML workflows apply many different augmentations / perturbations to much larger datasets, and only call `evaluate` once to get a statistical view of performance. But since the goal of this notebook is to drill down into how perturbation affects performance, we've essentially flipped process, calling `evaluate` (and thus our wrapped objects) many times, once per loop on our single image perturbed to a known degree, and then observing how the metrics respond." ] }, { "cell_type": "markdown", "id": "da908c7f-b499-4361-8e2b-cf7647b45de6", "metadata": {}, "source": [ "## Some helper classes\n", "\n", "The following cell adds two classes to allow us to use YOLO detections with the MAITE evaluation workflow:\n", "\n", "1. The `YOLODetectionTarget` helper class that stores the bounding boxes, label indices, and confidence scores for a single image's detections.\n", "\n", "2. The `MaiteYOLODetection` adapter class that conforms to the MAITE [Object Detection Dataset](https://jatic.pages.jatic.net/cdao/maite/generated/maite.protocols.object_detection.Dataset.html) protocol by providing the `__len__` and `__getitem__` methods. The returned item is a tuple of (image, `YOLODetectionTarget`, metadata-dictionary)." ] }, { "cell_type": "code", "execution_count": 6, "id": "346f4207", "metadata": {}, "outputs": [], "source": [ "from dataclasses import dataclass\n", "\n", "import torch\n", "from maite.protocols.object_detection import DatumMetadataType\n", "\n", "from nrtk.interop.maite.interop.object_detection.dataset import JATICObjectDetectionDataset\n", "\n", "##\n", "## Helper class for containing the boxes, label indices, and confidence scores.\n", "##\n", "\n", "\n", "@dataclass\n", "class YOLODetectionTarget:\n", " \"\"\"\n", " A helper class to represent object detection results in the format expected by YOLO-based models.\n", "\n", " Attributes:\n", " boxes (torch.Tensor): A tensor containing the bounding boxes for detected objects in\n", " [x_min, y_min, x_max, y_max] format.\n", " labels (torch.Tensor): A tensor containing the class labels for the detected objects.\n", " These may be floats for compatibility with specific datasets or tools.\n", " scores (torch.Tensor): A tensor containing the confidence scores for the detected objects.\n", " \"\"\"\n", "\n", " boxes: torch.Tensor\n", " labels: torch.Tensor\n", " scores: torch.Tensor\n", "\n", "\n", "##\n", "## Prepare results for ingestion into maite dataset by puttin them into detection object\n", "## Images must be channel first (c, h, w) in maite dataset objects\n", "##\n", "imgs = [np.transpose(img_nd_bgr, (2, 0, 1))]\n", "dets = []\n", "metadata: list[DatumMetadataType] = [{\"id\": 0}]\n", "for _detection in baseline:\n", " boxes = baseline[0].boxes.xyxy.cpu()\n", " labels = baseline[0].boxes.cls.cpu() # note, these are floats, not ints\n", " scores = baseline[0].boxes.conf.cpu()\n", "\n", " dets.append(YOLODetectionTarget(boxes, labels, scores))" ] }, { "cell_type": "markdown", "id": "45cd8fb3-2ea6-492c-ab84-f3432b9d3440", "metadata": {}, "source": [ "## (1) Wrapping the detection model\n", "\n", "The first object we'll wrap will be the detection model. The cell below defines a class adapting YOLO for the [MAITE Object Detection Model](https://jatic.pages.jatic.net/cdao/maite/generated/maite.protocols.object_detection.Model.html) protocol. The `__call__` method runs the model on images in the batch and is called by the MAITE evaluation workflow later in the notebook." ] }, { "cell_type": "code", "execution_count": 7, "id": "e1131aa7-3716-479f-838b-0464b74106e9", "metadata": {}, "outputs": [], "source": [ "import maite.protocols.object_detection as od\n", "import ultralytics.models\n", "from maite.protocols import ArrayLike, ModelMetadata\n", "\n", "\n", "class MaiteYOLODetector:\n", " \"\"\"\n", " A wrapper class for a YOLO model to simplify its usage with input batches and object detection targets.\n", "\n", " This class takes a YOLO model instance, processes input image batches, and converts predictions into\n", " `YOLODetectionTarget` instances.\n", "\n", " Attributes:\n", " _model (ultralytics.models.yolo.model.YOLO): The YOLO model instance used for predictions.\n", "\n", " Methods:\n", " __call__(batch):\n", " Processes a batch of images through the YOLO model and returns the predictions as\n", " `YOLODetectionTarget` instances.\n", " \"\"\"\n", "\n", " def __init__(self, model: ultralytics.models.yolo.model.YOLO) -> None:\n", " \"\"\"\n", " Initializes the MaiteYOLODetector with a YOLO model instance.\n", "\n", " Args:\n", " model (ultralytics.models.yolo.model.YOLO): The YOLO model to use for predictions.\n", " \"\"\"\n", " self._model = model\n", " # Dummy model metadata type to pass type checking\n", " self.metadata = ModelMetadata(id=\"0\")\n", "\n", " def __call__(self, batch: Sequence[ArrayLike]) -> Sequence[YOLODetectionTarget]:\n", " \"\"\"\n", " Processes a batch of images using the YOLO model and converts the predictions to `YOLODetectionTarget`\n", " instances.\n", "\n", " Args:\n", " batch (Sequence[ArrayLike]): A batch of images in (c, h, w) format (channel-first).\n", "\n", " Returns:\n", " Sequence[YOLODetectionTarget]: A list of YOLODetectionTarget instances containing the predictions for each\n", " image in the batch.\n", " \"\"\"\n", " # Convert images to channel-last format (h, w, c) for YOLO model\n", " batch_transposed = [np.transpose(batch[i], (1, 2, 0)) for i in range(len(batch))]\n", "\n", " yolo_predictions = self._model(batch_transposed, verbose=False)\n", " return [\n", " YOLODetectionTarget(\n", " p.boxes.xyxy.cpu(), # Bounding boxes in (x_min, y_min, x_max, y_max) format\n", " p.boxes.cls.cpu(), # Class indices for the detected objects\n", " p.boxes.conf.cpu(), # Confidence scores for the detections\n", " )\n", " for p in yolo_predictions\n", " ]\n", "\n", "\n", "# create the wrapped model object\n", "yolo_model: od.Model = MaiteYOLODetector(model)" ] }, { "cell_type": "markdown", "id": "3cef0788-137f-41c1-a9e4-80e7d08b47d1", "metadata": {}, "source": [ "## (2) Wrapping the dataset\n", "\n", "MAITE pairs images and their reference detections (aka targets, ground truth) into **datasets**. Typical ML workflows have many images per dataset; when these do not all fit in memory simultaneously, a *dataloader* object is used which can page images and annotations in from disk. For this notebook, however, each invocation of `evaluate` will use the same single-image dataset (our reference image with its baseline detections.)" ] }, { "cell_type": "code", "execution_count": 8, "id": "1dcbb5d0-b899-4355-9922-9d52fb866b4b", "metadata": {}, "outputs": [], "source": [ "# our single image, its baseline detections, and metadata dictionary\n", "# switch image to channel first\n", "single_image_dataset: od.Dataset = JATICObjectDetectionDataset(imgs, dets, metadata, dataset_id=\"visdrone_ex\")" ] }, { "cell_type": "markdown", "id": "7963f7fa-052c-476d-944e-5bbdae3181b5", "metadata": {}, "source": [ "## (3) Wrapping the perturbations as augmentations\n", "\n", "The `evaluate` function will perturb the image from the dataset using instances of the class defined below, one instance per perturbation value. Note that the object doesn't perform any augmentations until called by the `evaluate` workflow." ] }, { "cell_type": "code", "execution_count": 9, "id": "aa7a398f", "metadata": {}, "outputs": [], "source": [ "from nrtk.interop.maite.interop.object_detection.augmentation import JATICDetectionAugmentation\n", "\n", "bp = DefocusOTFPerturber(w_x=0.00001, w_y=0.000001)\n", "identity_augmentation = JATICDetectionAugmentation(bp, augment_id=\"identity\")" ] }, { "cell_type": "markdown", "id": "81020be7-76ba-43e3-b231-7d2bd7c30387", "metadata": {}, "source": [ "## (4) Wrapping the metrics\n", "\n", "We'll compare the detections in each perturbed image to the unperturbed detections using the Mean Average Precision (mAP) metric from the `torchmetrics` package. The following cell creates a mAP metrics object, wraps it in a MAITE [MAITE Object Detection Metric](https://jatic.pages.jatic.net/cdao/maite/generated/maite.protocols.object_detection.Metric.html) protocol-compatible class, and then creates an instance of this class, which will be called by `evaluate`.\n", "\n", "This code is copied directly from the [MAITE object detection tutorial](https://jatic.pages.jatic.net/cdao/maite/tutorials/torchvision_object_detection.html#metrics) (with the exception of setting `class_metrics=True`.)" ] }, { "cell_type": "code", "execution_count": 10, "id": "e33407c5-f1d7-4c7a-9a31-2d500f97edcc", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Error: no \"view\" rule for type \"image/png\" passed its test case\n", " (for more information, add \"--debug=1\" on the command line)\n" ] } ], "source": [ "from maite.protocols import MetricMetadata\n", "from torchmetrics import Metric as TorchMetric\n", "from torchmetrics.detection.mean_ap import MeanAveragePrecision\n", "\n", "##\n", "## Create an instance of the MAP metric object\n", "##\n", "\n", "tm_metric = MeanAveragePrecision(\n", " box_format=\"xyxy\",\n", " iou_type=\"bbox\",\n", " iou_thresholds=[0.5],\n", " rec_thresholds=[0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0],\n", " max_detection_thresholds=[1, 10, 100],\n", " class_metrics=True,\n", " extended_summary=False,\n", " average=\"macro\",\n", ")\n", "\n", "##\n", "## This wrapper associates the MAP metric object with methods called by the evaluate\n", "## workflow to accumulate detection data and compute the metrics.\n", "##\n", "\n", "\n", "class WrappedTorchmetricsMetric:\n", " \"\"\"\n", " A wrapper class for a Torchmetrics metric designed to simplify its usage for object detection tasks.\n", "\n", " This class facilitates the conversion of object detection targets and predictions into the format\n", " expected by Torchmetrics metrics, allowing for easier integration with existing pipelines.\n", "\n", " Attributes:\n", " _tm_metric (Callable): The Torchmetrics metric to be wrapped, which takes lists of dictionaries\n", " containing torch.Tensor objects representing predictions and targets.\n", "\n", " Methods:\n", " to_tensor_dict(target):\n", " Converts an `ObjectDetectionTarget` into a dictionary format compatible with the Torchmetrics\n", " metric's `update` method.\n", "\n", " update(preds, targets):\n", " Updates the wrapped Torchmetrics metric with batches of predictions and targets in their native format.\n", "\n", " compute():\n", " Computes the final metric values using the wrapped Torchmetrics metric.\n", "\n", " reset():\n", " Resets the state of the wrapped Torchmetrics metric.\n", " \"\"\"\n", "\n", " def __init__(\n", " self,\n", " tm_metric: TorchMetric,\n", " ) -> None:\n", " \"\"\"\n", " Initializes the WrappedTorchmetricsMetric with the given Torchmetrics metric.\n", "\n", " Args:\n", " tm_metric (Callable): A Torchmetrics metric instance that expects predictions and targets as lists of\n", " dictionaries containing torch.Tensor objects.\n", " \"\"\"\n", " self._tm_metric = tm_metric\n", " # Dummy metric metadata type to pass type checking\n", " self.metadata = MetricMetadata(id=\"0\")\n", "\n", " @staticmethod\n", " def to_tensor_dict(target: od.ObjectDetectionTarget) -> dict[str, torch.Tensor]:\n", " \"\"\"\n", " Converts an ObjectDetectionTarget into a dictionary format compatible with the Torchmetrics metric's\n", " `update` method.\n", "\n", " Args:\n", " target (od.ObjectDetectionTarget): An object detection target instance containing boxes, labels, and scores.\n", "\n", " Returns:\n", " dict[str, torch.Tensor]: A dictionary with keys `boxes`, `scores`, and `labels`, each mapping to a tensor.\n", " \"\"\"\n", " return {\n", " \"boxes\": torch.as_tensor(target.boxes),\n", " \"scores\": torch.as_tensor(target.scores),\n", " \"labels\": torch.as_tensor(target.labels).type(torch.int64),\n", " }\n", "\n", " def update(self, preds: od.TargetBatchType, targets: od.TargetBatchType) -> None:\n", " \"\"\"\n", " Updates the wrapped Torchmetrics metric with the given predictions and targets.\n", "\n", " Args:\n", " preds (od.TargetBatchType): A batch of predictions in the format expected by the Torchmetrics metric.\n", " targets (od.TargetBatchType): A batch of targets in the format expected by the Torchmetrics metric.\n", " \"\"\"\n", " preds_tm = [self.to_tensor_dict(pred) for pred in preds]\n", " targets_tm = [self.to_tensor_dict(tgt) for tgt in targets]\n", " self._tm_metric.update(preds_tm, targets_tm)\n", "\n", " def compute(self) -> dict[str, Any]:\n", " \"\"\"\n", " Computes and returns the final metric values using the wrapped Torchmetrics metric.\n", "\n", " Returns:\n", " dict[str, Any]: A dictionary containing the computed metric values.\n", " \"\"\"\n", " return self._tm_metric.compute()\n", "\n", " def reset(self) -> None:\n", " \"\"\"Resets the state of the wrapped Torchmetrics metric, clearing any accumulated data.\"\"\"\n", " self._tm_metric.reset()\n", "\n", "\n", "##\n", "## This is our instance variable that can compute the MAP metrics.\n", "##\n", "\n", "mAP_metric: od.Metric = WrappedTorchmetricsMetric(tm_metric) # noqa: N816" ] }, { "cell_type": "markdown", "id": "0102dfde-cb9b-46a7-8e4a-d12ccd948864", "metadata": {}, "source": [ "# Running the evaluation\n", "\n", "We now have all the wrappings required to evaluate our range of perturbations:\n", "- The `yolo_model` object, wrapping the YOLO model\n", "- The `single_image_dataset` object, providing our source image and its baseline detections\n", "- The `augmentation` object, which when instantiated, applies a single perturbation value to its input\n", "- The `mAP_metrics` object, defining the metrics to compute at each perturbation value" ] }, { "cell_type": "markdown", "id": "38a7fef1-a3cc-4e63-8a2b-6133274e4b1c", "metadata": {}, "source": [ "## Evaluation sanity check: ground truth against itself\n", "\n", "Here we quickly check the evaluation workflow by creating an *identity augmentation* (with a brightness perturbation factor of 1.0, leaving the image unchanged) and scoring it. The detections should also be unchanged from the baseline and thus give an mAP of 1.0." ] }, { "cell_type": "code", "execution_count": 11, "id": "a0af9f36-c69b-400f-82ec-f1fd7e9d98ea", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ " 0%| | 0/1 [00:00= 0)\n", "- **sweep_high**: the maximum perturbation value\n", "- **sweep_count**: how many perturbations to generation\n", "\n", "You can also optionally select perturbations to visualize:\n", "- **visualization_indices**: a list of perturbation indices *p*, 0 <= *p* < sweep_count. These instances will be rendered along with their corresponding detections." ] }, { "cell_type": "code", "execution_count": 12, "id": "48b5e334-d8eb-415c-b263-4c4bd3618b43", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Generated 30 perturbation augmentations\n" ] } ], "source": [ "SWEEP_LOW = 0.0001\n", "SWEEP_HIGH = 0.003\n", "SWEEP_COUNT = 30\n", "VISUALIZATION_INDICES = [0, 9, 21]\n", "\n", "##\n", "## end user-settable parameters\n", "##\n", "\n", "perturbation_values = np.linspace(SWEEP_LOW, SWEEP_HIGH, SWEEP_COUNT, endpoint=True)\n", "augmentations = [\n", " JATICDetectionAugmentation(DefocusOTFPerturber(w_x=p, w_y=p), augment_id=str(idx))\n", " for idx, p in enumerate(perturbation_values)\n", "]\n", "\n", "print(f\"Generated {len(augmentations)} perturbation augmentations\")" ] }, { "cell_type": "markdown", "id": "549d0d4d-eabd-4f54-a487-7cfbc99916c9", "metadata": {}, "source": [ "## Calling evaluate on the augmented data\n", "\n", "We loop over all the augmentations, calling `evaluate` on each one and building up a list of resulting metrics for analysis.\n", "\n", "Any augmentation indices specified above will be rendered in this step." ] }, { "cell_type": "code", "execution_count": 13, "id": "a4951dfc-c2cc-434a-8fd2-1786ba3acf96", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 1/1 [00:00<00:00, 2.34it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Perturbation #0: w_x value 0.0001\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 0%| | 0/1 [00:00" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "map50_list = [m[\"map_50\"].item() for m in perturbed_metrics]\n", "plt.title(\"relative mAP@50\")\n", "plt.xlabel(\"Defocus perturbation factor\")\n", "plt.ylabel(\"relative mAP @ 50% IoU\")\n", "_ = plt.plot(perturbation_values, map50_list)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "3a8720fd-32dc-493d-ab5c-81c313615504", "metadata": {}, "source": [ "## Evaluation interpretation\n", "\n", "Note that as plotted, the minimum y-axis value is 0.0. The metric shown, mAP@50, is the average precision of detections across all classes when the bounding box IoU is at least 0.5 (for more details, [see here](https://lightning.ai/docs/torchmetrics/stable/detection/mean_average_precision.html).) In general, we observe a perturbation value range between around 0.0 and 0.0002 where the score is about 0.95 or higher, an initial fall off to a mAP@50 of around 0.2 between pertubation values 0.0005 and 0.0012, and then another sharp falloff to an mAP@50 of 0.0. (Note the relative mAP is guaranteed to be 1.0 when the perturbation is 0.0001, i.e. when the image is unchanged, the two detection sets are identical.)" ] }, { "cell_type": "markdown", "id": "3f0f9b97-ce54-4d21-be91-160f4a5d3054", "metadata": {}, "source": [ "## Additional plots\n", "\n", "For further insight, we can plot the mAP per class:" ] }, { "cell_type": "code", "execution_count": 15, "id": "65d28ff5-838e-467a-a703-81432a408b35", "metadata": {}, "outputs": [ { "data": { "image/jpeg": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#\n", "# Each instance of the metrics object has, potentially, a different set of observed classes.\n", "# Loop through them to accumulate a unified set of classes to ensure consistent plotting across\n", "# all thresholds.\n", "#\n", "\n", "unified_classes = set()\n", "for m in perturbed_metrics:\n", " for class_idx in m[\"classes\"].tolist():\n", " unified_classes.add(class_idx)\n", "\n", "#\n", "# dictionary of class_idx -> list of per-class mAP, or 0 if not present at that threshold\n", "#\n", "\n", "class_mAP = {class_idx: list() for class_idx in unified_classes} # noqa: N816\n", "\n", "#\n", "# populate the lists across the perturbation values\n", "#\n", "\n", "for m in perturbed_metrics:\n", " this_perturbation_classes = m[\"classes\"].tolist()\n", " for class_idx in unified_classes:\n", " if class_idx in this_perturbation_classes:\n", " # the index of the class in this individual metric instance\n", " this_class_idx = this_perturbation_classes.index(class_idx)\n", " class_mAP[class_idx].append(m[\"map_per_class\"][this_class_idx].item())\n", " else:\n", " class_mAP[class_idx].append(0)\n", "\n", "#\n", "# plot\n", "#\n", "\n", "plt.title(\"Relative mAP per class\")\n", "plt.xlabel(\"Defocus perturbation factor\")\n", "plt.ylabel(\"relative mAP @ 50% IoU\")\n", "for class_idx, class_mAP_list in class_mAP.items(): # noqa: N816\n", " plt.plot(perturbation_values, class_mAP_list, label=baseline[0].names[class_idx])\n", "plt.legend()\n", "plt.show()" ] }, { "attachments": {}, "cell_type": "markdown", "id": "3aef482b-1a2b-4b2e-b522-7032776320d2", "metadata": {}, "source": [ "This plot shows several interesting results:\n", "\n", "- The truck and motorcycle classes are slightly more robust to the initial de-focus set of parameters, but drop off much more quickly than the car and person classes. \n", " - There are only two detections for each of the truck and motorcycle classes, causing those class types to be much more sensitive to pertubations than other classes.\n", " - One of the 2 truck instances gets incorrectly switched to a car detection early on in the pertubations, so while the detection is correct, the classification is not\n", " - Upon visual inspection, the motorcycle beings to blend into the road even to the human eye very quickly when the de-focus parameter starts kicking in.\n", "\n", "- The car class seems to have the most linear mAP@50 degredation of the classes.\n", " - This could be due to the fact that the cars have a wider variety of sizes compared to other classes\n", " - Additionally there are many more car instances (15) than non-car (5 persons, 1 motorcycle, 2 trucks) in the unperturbed image.\n", "\n", "- The person class is capable of holding onto an mAP@50 of ~0.5 longer than other classes.\n", " - People, in particular, are distributed throughout the image, but only detected when relatively close and large.\n", "\n", "Any conclusions about classification accuracy should be considered in light of these caveats. In particular, the foreground positioning of the detected non-car objects suggests that instead of looking at per-class results, we drill down by bounding box area. Fortunately, the metrics class supports this:\n" ] }, { "cell_type": "code", "execution_count": 16, "id": "23ec21e7-e682-4d08-ad1d-6c42d850402f", "metadata": {}, "outputs": [ { "data": { "image/jpeg": "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eK/2Z/3ZS/NS/UjHL3+Zfyxf3afodLRUNpcJeWcFzH9yaNZF+hGamroWpad9QooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK5zxL/AMh7wj/2FX/9I7mujrnPEv8AyHvCP/YVf/0juaAOjooooAK4LXvC/iO7fxPBYTaMLDXBh2ulkMsY+zpEenHG0sPrXe1xXiHw1ql7rM1/JHBrmmtt2aRczvAseFAOMZjkyQTiReMkZxQBf8J63d6pNf213qOjXslp5ak6WzsEJ3ZDluM8dByOc9q2dY1KLRtFvtUnUtFZ28lw6jqQiliB+VYHw8eS28K2WiXWnXdje6ZaxQ3CTw7VZsEbkcZVwSp5BPvjNb+sabFrOi32lzsVivLeS3dh1AdSpI/OgDntL17XodY0qz16HT9mrQPJB9kVwYJEUMY33E7/AJSfmG3lTxzTPFfjJ9H1q10W0lt4bqW3a5eae2luNqBtoCxRYZiTuJOQFC89RTLXQvE0t7YXmpS6WZtJtJY7IQtIVnndAoklyo2DA+6u77x54FWb/RNaXX7LxFp66dJqQsDY3cNxI6RMCwfcjhWIwwPBHIPbFAG7o17/AGjo9pefara686MN51qCI391BJIHsScVy+reItE1XxV4Ws9P1iwu7qLVJGkhguEd0AtLgElQcjBIH41v+F9GfQPD1vp8syzTK0ksrou1S8kjSNtHZQWIHsBVLxIoGveESAAf7Vft/wBOdzQB0lFFFABRRRQAUUUUAch41g8xkGP9bZ3KfiEyP1rW0LZqXg2wSTlZrJI39/k2n+tQ+JYg8ullujXPkk+zgiofAMpk8GWKt9+PfGw9MO39MVnQ2qx/vJ/fH/gFV1d033i190v+CP8ABM7yeGoreX/XWcj20nsVPH6EV0Vcxpn/ABK/Gup6e3EV+gvIf97o4+uefwrp6KXw27aHPQfuWfTT7gooorQ2CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACuc8S/8AIe8I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EbSRvLXag4yq8nLcdetNi8Qa8dKtfFLaoGtp9VW0OleQmxYmuPIAD43mQfePOOCMV1ln4R0WxhtIYLebyrOcXFskl3LIsLhGQbQzHChWYbR8vPSkTwfoKav/AGothi5843AHmv5YlPWQR7tgf/a2596AOPu9c8Rw6f4i1xdZxBpOqtDFZfZo9ksKsgKu2N2cMcEEEd810XxLjlk+G3iHyrmSArYysTGFJZQpypyDwRwcYPoRWrL4b0mbT7+wktM21/M09ynmP+8ckEnOcj7o4GBxVzUdPtdW0250++i821uY2imj3FdykYIyCCPwoA4vUrm/01LDRNP1bW7m/S1M7Cys7RnKFsKzl1SMKDlQFwTj8ah0vxNrHim38MWsF4NMl1HT5b26uYokdmMbImyMPuUZL7jkNgD8a6vU/C+j6xcw3F7as80UZiV0mkjLRk5KNtYb1/2WyPaon8HaC+lWWmixKW1iSbXyp5I5Ic5ztkVg4zn1oA5y90rUX+JWixHxDepKmj3O6aOGAF8TQ5BBjIG7IzjH3RjGTmCfxBrw0u+8UJqgW2tdUa0GleQmxokuPIIL43iQ8sMHHIGDXWzeFNHnSxV4Zw1iGFvLHdzJIoYgsC6sGYEgZBJzjmmv4P0GTV/7UewzcmYXBHmuIzKOkhj3bC4wPmK5460AZmhT61qninXmm1d00/TtREENrHBH848iNiHYrnGXyMEHOckjAHX1Vs9NtLCa8mtovLkvJvPnO4nfJtVM8nj5UUYGBxVqgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9k=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.title(\"relative mAP values per area\")\n", "plt.xlabel(\"Defocus perturbation factor\")\n", "plt.ylabel(\"relative mAP\")\n", "for k in (\"map\", \"map_small\", \"map_medium\"):\n", " plt.plot(perturbation_values, [m[k].item() for m in perturbed_metrics], label=k)\n", "plt.legend()\n", "plt.show()" ] }, { "attachments": {}, "cell_type": "markdown", "id": "f6e276bd-2eaf-4a4c-a3cd-9bb8c98fa30c", "metadata": {}, "source": [ "The `map` line covers all sizes; `map_small` and `map_medium` are the mean average precision for objects (smaller than 32^2 pixels, between 32^2 and 96^2 pixels) in area, respectively. (There are no detections in the `map_large` category.) (Here, the mAP value is averaged over a **range** of IoU thresholds, between 0.5 and 0.95.) We see that medium objects, regardless of class, are generally much more robust to de-focus perturbations than small ones.\n" ] }, { "cell_type": "markdown", "id": "b28b9f2a-7217-4427-9c4f-f84656a4dcf2", "metadata": {}, "source": [ "# End of notebook" ] } ], "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.9.21" } }, "nbformat": 4, "nbformat_minor": 5 }