From 17e0e121cb2afad1e7a2d5f99670ccd13c774a72 Mon Sep 17 00:00:00 2001 From: Sachin Prasad Date: Fri, 21 Mar 2025 22:41:31 +0000 Subject: [PATCH 1/8] retinanet guide --- .../retinanet_architecture.png | Bin 0 -> 202891 bytes .../object_detection_retinanet.ipynb | 1105 +++++++++++++++++ .../keras_hub/object_detection_retinanet.py | 767 ++++++++++++ 3 files changed, 1872 insertions(+) create mode 100644 guides/img/object_detection_retinanet/retinanet_architecture.png create mode 100644 guides/ipynb/keras_hub/object_detection_retinanet.ipynb create mode 100644 guides/keras_hub/object_detection_retinanet.py diff --git a/guides/img/object_detection_retinanet/retinanet_architecture.png b/guides/img/object_detection_retinanet/retinanet_architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..95ef949713b55fa3a21805123e0045356aaf3985 GIT binary patch literal 202891 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\n", + "**Date created:** 2025/03/21
\n", + "**Last modified:** 2025/03/21
\n", + "**Description:** RetinaNet Object Detection: Training, Fine-tuning, and Inference." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text" + }, + "source": [ + "![](https://storage.googleapis.com/keras-hub/getting_started_guide/prof_keras_intermediate.png)\n", + "\n", + "## Introduction\n", + "Object detection is a crucial computer vision task that goes beyond simple image\n", + "classification. It requires models to not only identify the types of objects\n", + "present in an image but also pinpoint their locations using bounding boxes. This\n", + "dual requirement of classification and localization makes object detection a\n", + "more complex and powerful tool.\n", + "Object detection models are broadly classified into two categories: \"two-stage\"\n", + "and \"single-stage\" detectors. Two-stage detectors often achieve higher accuracy\n", + "by first proposing regions of interest and then classifying them. However, this\n", + "approach can be computationally expensive. Single-stage detectors, on the other\n", + "hand, aim for speed by directly predicting object classes and bounding boxes in\n", + "a single pass.\n", + "\n", + "In this tutorial, we'll be diving into `RetinaNet`, a powerful object detection\n", + "model known for its speed and precision. `RetinaNet` is a single-stage detector,\n", + "a design choice that allows it to be remarkably efficient. Its impressive\n", + "performance stems from two key architectural innovations:\n", + "1. **Feature Pyramid Network (FPN):** FPN equips `RetinaNet` with the ability to\n", + "seamlessly detect objects of all scales, from distant, tiny instances to large,\n", + "prominent ones.\n", + "2. **Focal Loss:** This ingenious loss function tackles the common challenge of\n", + "imbalanced data by focusing the model's learning on the most crucial and\n", + "challenging object examples, leading to enhanced accuracy without compromising\n", + "speed.\n", + "\n", + "![retinanet](/img/guides/object_detection_retinanet/retinanet_architecture.png)\n", + "\n", + "### References\n", + "- [Focal Loss for Dense Object Detection](https://arxiv.org/abs/1708.02002)\n", + "- [Feature Pyramid Networks for Object Detection](https://arxiv.org/abs/1612.03144)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text" + }, + "source": [ + "## Setup and Imports\n", + "\n", + "Let's install the dependencies and import the necessary modules.\n", + "\n", + "To run this tutorial, you will need to install the following packages:\n", + "\n", + "* `keras-hub`\n", + "* `keras`" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab_type": "code" + }, + "outputs": [], + "source": [ + "!pip install -q --upgrade keras-hub\n", + "!pip install -q --upgrade keras" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab_type": "code" + }, + "outputs": [], + "source": [ + "import os\n", + "\n", + "os.environ[\"KERAS_BACKEND\"] = \"jax\"\n", + "import keras\n", + "import keras_hub\n", + "import tensorflow as tf\n", + "import warnings\n", + "\n", + "warnings.filterwarnings(\"ignore\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text" + }, + "source": [ + "### Helper functions" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab_type": "code" + }, + "outputs": [], + "source": [ + "# @title Helper functions\n", + "import logging\n", + "import multiprocessing\n", + "from builtins import open\n", + "import os.path\n", + "import xml\n", + "from typing import Callable, Tuple, Dict, Any\n", + "\n", + "import tensorflow_datasets as tfds\n", + "\n", + "VOC_2007_URL = (\n", + " \"http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar\"\n", + ")\n", + "VOC_2012_URL = (\n", + " \"http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar\"\n", + ")\n", + "\n", + "# Note that this list doesn't contain the background class. In the\n", + "# classification use case, the label is 0 based (aeroplane -> 0), whereas in\n", + "# segmentation use case, the 0 is reserved for background, so aeroplane maps to\n", + "# 1.\n", + "CLASSES = [\n", + " \"aeroplane\",\n", + " \"bicycle\",\n", + " \"bird\",\n", + " \"boat\",\n", + " \"bottle\",\n", + " \"bus\",\n", + " \"car\",\n", + " \"cat\",\n", + " \"chair\",\n", + " \"cow\",\n", + " \"diningtable\",\n", + " \"dog\",\n", + " \"horse\",\n", + " \"motorbike\",\n", + " \"person\",\n", + " \"pottedplant\",\n", + " \"sheep\",\n", + " \"sofa\",\n", + " \"train\",\n", + " \"tvmonitor\",\n", + "]\n", + "COCO_90_CLASS_MAPPING = {\n", + " 1: \"person\",\n", + " 2: \"bicycle\",\n", + " 3: \"car\",\n", + " 4: \"motorcycle\",\n", + " 5: \"airplane\",\n", + " 6: \"bus\",\n", + " 7: \"train\",\n", + " 8: \"truck\",\n", + " 9: \"boat\",\n", + " 10: \"traffic light\",\n", + " 11: \"fire hydrant\",\n", + " 13: \"stop sign\",\n", + " 14: \"parking meter\",\n", + " 15: \"bench\",\n", + " 16: \"bird\",\n", + " 17: \"cat\",\n", + " 18: \"dog\",\n", + " 19: \"horse\",\n", + " 20: \"sheep\",\n", + " 21: \"cow\",\n", + " 22: \"elephant\",\n", + " 23: \"bear\",\n", + " 24: \"zebra\",\n", + " 25: \"giraffe\",\n", + " 27: \"backpack\",\n", + " 28: \"umbrella\",\n", + " 31: \"handbag\",\n", + " 32: \"tie\",\n", + " 33: \"suitcase\",\n", + " 34: \"frisbee\",\n", + " 35: \"skis\",\n", + " 36: \"snowboard\",\n", + " 37: \"sports ball\",\n", + " 38: \"kite\",\n", + " 39: \"baseball bat\",\n", + " 40: \"baseball glove\",\n", + " 41: \"skateboard\",\n", + " 42: \"surfboard\",\n", + " 43: \"tennis racket\",\n", + " 44: \"bottle\",\n", + " 46: \"wine glass\",\n", + " 47: \"cup\",\n", + " 48: \"fork\",\n", + " 49: \"knife\",\n", + " 50: \"spoon\",\n", + " 51: \"bowl\",\n", + " 52: \"banana\",\n", + " 53: \"apple\",\n", + " 54: \"sandwich\",\n", + " 55: \"orange\",\n", + " 56: \"broccoli\",\n", + " 57: \"carrot\",\n", + " 58: \"hot dog\",\n", + " 59: \"pizza\",\n", + " 60: \"donut\",\n", + " 61: \"cake\",\n", + " 62: \"chair\",\n", + " 63: \"couch\",\n", + " 64: \"potted plant\",\n", + " 65: \"bed\",\n", + " 67: \"dining table\",\n", + " 70: \"toilet\",\n", + " 72: \"tv\",\n", + " 73: \"laptop\",\n", + " 74: \"mouse\",\n", + " 75: \"remote\",\n", + " 76: \"keyboard\",\n", + " 77: \"cell phone\",\n", + " 78: \"microwave\",\n", + " 79: \"oven\",\n", + " 80: \"toaster\",\n", + " 81: \"sink\",\n", + " 82: \"refrigerator\",\n", + " 84: \"book\",\n", + " 85: \"clock\",\n", + " 86: \"vase\",\n", + " 87: \"scissors\",\n", + " 88: \"teddy bear\",\n", + " 89: \"hair drier\",\n", + " 90: \"toothbrush\",\n", + "}\n", + "# This is used to map between string class to index.\n", + "CLASS_TO_INDEX = {name: index for index, name in enumerate(CLASSES)}\n", + "INDEX_TO_CLASS = {index: name for index, name in enumerate(CLASSES)}\n", + "\n", + "\n", + "def get_image_ids(data_dir, split):\n", + " \"\"\"To get image ids from the \"train\", \"eval\" or \"trainval\" files of VOC data.\"\"\"\n", + " data_file_mapping = {\n", + " \"train\": \"train.txt\",\n", + " \"eval\": \"val.txt\",\n", + " \"trainval\": \"trainval.txt\",\n", + " }\n", + " with open(\n", + " os.path.join(data_dir, \"ImageSets\", \"Main\", data_file_mapping[split]),\n", + " \"r\",\n", + " ) as f:\n", + " image_ids = f.read().splitlines()\n", + " logging.info(f\"Received {len(image_ids)} images for {split} dataset.\")\n", + " return image_ids\n", + "\n", + "\n", + "def load_images(example):\n", + " \"\"\"Loads VOC images for segmentation task from the provided paths\"\"\"\n", + " image_file_path = example.pop(\"image/file_path\")\n", + " image = tf.io.read_file(image_file_path)\n", + " image = tf.image.decode_jpeg(image)\n", + "\n", + " example.update(\n", + " {\n", + " \"image\": image,\n", + " }\n", + " )\n", + " return example\n", + "\n", + "\n", + "def parse_annotation_data(annotation_file_path):\n", + " \"\"\"Parse the annotation XML file for the image.\n", + "\n", + " The annotation contains the metadata, as well as the object bounding box\n", + " information.\n", + "\n", + " \"\"\"\n", + " with open(annotation_file_path, \"r\") as f:\n", + " root = xml.etree.ElementTree.parse(f).getroot()\n", + "\n", + " size = root.find(\"size\")\n", + " width = int(size.find(\"width\").text)\n", + " height = int(size.find(\"height\").text)\n", + " filename = root.find(\"filename\").text\n", + "\n", + " objects = []\n", + " for obj in root.findall(\"object\"):\n", + " # Get object's label name.\n", + " label = CLASS_TO_INDEX[obj.find(\"name\").text.lower()]\n", + " bndbox = obj.find(\"bndbox\")\n", + " xmax = int(float(bndbox.find(\"xmax\").text))\n", + " xmin = int(float(bndbox.find(\"xmin\").text))\n", + " ymax = int(float(bndbox.find(\"ymax\").text))\n", + " ymin = int(float(bndbox.find(\"ymin\").text))\n", + " objects.append(\n", + " {\n", + " \"label\": label,\n", + " \"bbox\": [ymin, xmin, ymax, xmax],\n", + " }\n", + " )\n", + "\n", + " return {\n", + " \"image/filename\": filename,\n", + " \"width\": width,\n", + " \"height\": height,\n", + " \"objects\": objects,\n", + " }\n", + "\n", + "\n", + "def parse_single_image(annotation_file_path):\n", + " \"\"\"Creates metadata of VOC images and path.\"\"\"\n", + " data_dir, annotation_file_name = os.path.split(annotation_file_path)\n", + " data_dir = os.path.normpath(os.path.join(data_dir, os.path.pardir))\n", + " image_annotations = parse_annotation_data(annotation_file_path)\n", + "\n", + " result = {\n", + " \"image/file_path\": os.path.join(\n", + " data_dir, \"JPEGImages\", image_annotations[\"image/filename\"]\n", + " )\n", + " }\n", + " result.update(image_annotations)\n", + " # Labels field should be same as the 'object.label'\n", + " labels = list(set([o[\"label\"] for o in result[\"objects\"]]))\n", + " result[\"labels\"] = sorted(labels)\n", + " return result\n", + "\n", + "\n", + "def build_metadata(data_dir, image_ids):\n", + " \"\"\"Transpose the metadata which convert from list of dict to dict of list.\"\"\"\n", + " # Parallel process all the images.\n", + " image_file_paths = [\n", + " os.path.join(data_dir, \"JPEGImages\", i + \".jpg\") for i in image_ids\n", + " ]\n", + " annotation_file_paths = tf.io.gfile.glob(\n", + " os.path.join(data_dir, \"Annotations\", \"*.xml\")\n", + " )\n", + " pool_size = 10 if len(image_ids) > 10 else len(annotation_file_paths)\n", + " with multiprocessing.Pool(pool_size) as p:\n", + " metadata = p.map(parse_single_image, annotation_file_paths)\n", + "\n", + " keys = [\n", + " \"image/filename\",\n", + " \"image/file_path\",\n", + " \"labels\",\n", + " \"width\",\n", + " \"height\",\n", + " ]\n", + " result = {}\n", + " for key in keys:\n", + " values = [value[key] for value in metadata]\n", + " result[key] = values\n", + "\n", + " # The ragged objects need some special handling\n", + " for key in [\"label\", \"bbox\"]:\n", + " values = []\n", + " objects = [value[\"objects\"] for value in metadata]\n", + " for object in objects:\n", + " values.append([o[key] for o in object])\n", + " result[\"objects/\" + key] = values\n", + " return result\n", + "\n", + "\n", + "def build_dataset_from_metadata(metadata):\n", + " \"\"\"Builds TensorFlow dataset from the image metadata of VOC dataset.\"\"\"\n", + " # The objects need some manual conversion to ragged tensor.\n", + " metadata[\"labels\"] = tf.ragged.constant(metadata[\"labels\"])\n", + " metadata[\"objects/label\"] = tf.ragged.constant(metadata[\"objects/label\"])\n", + " metadata[\"objects/bbox\"] = tf.ragged.constant(\n", + " metadata[\"objects/bbox\"], ragged_rank=1\n", + " )\n", + "\n", + " dataset = tf.data.Dataset.from_tensor_slices(metadata)\n", + " dataset = dataset.map(load_images, num_parallel_calls=tf.data.AUTOTUNE)\n", + " return dataset\n", + "\n", + "\n", + "def load_voc(\n", + " year=\"2007\",\n", + " split=\"trainval\",\n", + " data_dir=\"./\",\n", + " voc_url=VOC_2007_URL,\n", + "):\n", + " extracted_dir = os.path.join(\"VOCdevkit\", f\"VOC{year}\")\n", + " get_data = keras.utils.get_file(\n", + " fname=os.path.basename(voc_url),\n", + " origin=voc_url,\n", + " cache_dir=data_dir,\n", + " extract=True,\n", + " )\n", + " data_dir = os.path.join(get_data, extracted_dir)\n", + " image_ids = get_image_ids(data_dir, split)\n", + " metadata = build_metadata(data_dir, image_ids)\n", + " dataset = build_dataset_from_metadata(metadata)\n", + "\n", + " return dataset\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text" + }, + "source": [ + "## Load the dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab_type": "code" + }, + "outputs": [], + "source": [ + "train_ds_2007 = load_voc(\n", + " year=\"2007\",\n", + " split=\"trainval\",\n", + " data_dir=\"./\",\n", + " voc_url=VOC_2007_URL,\n", + ")\n", + "train_ds_2012 = load_voc(\n", + " year=\"2012\",\n", + " split=\"trainval\",\n", + " data_dir=\"./\",\n", + " voc_url=VOC_2012_URL,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text" + }, + "source": [ + "## Inference using a pre-trained object detector\n", + "\n", + "Let's begin with the simplest `KerasHub` API: a pre-trained object detector. In\n", + "this example, we will construct an object detector that was pre-trained on the\n", + "`COCO` dataset. We'll use this model to detect objects in a sample image.\n", + "\n", + "The highest-level module in KerasHub is a `task`. A `task` is a `keras.Model`\n", + "consisting of a (generally pre-trained) backbone model and task-specific layers.\n", + "Here's an example using `keras_hub.models.ImageObjectDetector` with the\n", + "`RetinaNet` model architecture and `ResNet50` as the backbone.\n", + "\n", + "ResNet is a great starting model when constructing an image classification\n", + "pipeline. This architecture manages to achieve high accuracy while using a\n", + "relatively small number of parameters. If a ResNet isn't powerful enough for the\n", + "task you are hoping to solve, be sure to check out KerasHub's other available\n", + "backbones here https://keras.io/keras_hub/presets/" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab_type": "code" + }, + "outputs": [], + "source": [ + "object_detector = keras_hub.models.ImageObjectDetector.from_preset(\n", + " \"kaggle://keras/retinanet/keras/retinanet_resnet50_fpn_coco\"\n", + ")\n", + "object_detector.summary()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text" + }, + "source": [ + "## Preprocessing Layers" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab_type": "code" + }, + "outputs": [], + "source": [ + "image_size = (800, 800)\n", + "batch_size = 4\n", + "gt_bbox_format = \"yxyx\"\n", + "epochs = 5\n", + "\n", + "# Resizing layer: Resizes images and pads to maintain aspect ratio\n", + "resizing = keras.layers.Resizing(\n", + " height=image_size[0],\n", + " width=image_size[1],\n", + " interpolation=\"bilinear\",\n", + " pad_to_aspect_ratio=True,\n", + " bounding_box_format=gt_bbox_format,\n", + ")\n", + "\n", + "# Max bounding box layer: Limits the number of bounding boxes per image\n", + "max_box_layer = keras.layers.MaxNumBoundingBoxes(\n", + " max_number=100, bounding_box_format=gt_bbox_format\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text" + }, + "source": [ + "### Predict and Visualize\n", + "Next, let's get some predictions from our object detector:" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab_type": "code" + }, + "outputs": [], + "source": [ + "filepath = keras.utils.get_file(\n", + " origin=\"http://farm4.staticflickr.com/3755/10245052896_958cbf4766_z.jpg\"\n", + ")\n", + "image = keras.utils.load_img(filepath)\n", + "image = keras.ops.cast(image, \"float32\")\n", + "image = keras.ops.expand_dims(image, axis=0)\n", + "\n", + "predictions = object_detector.predict(image, batch_size=1)\n", + "\n", + "keras.visualization.plot_bounding_box_gallery(\n", + " resizing(image), # resize image as per prediction preprocessing pipeline\n", + " bounding_box_format=gt_bbox_format,\n", + " y_pred={\n", + " \"boxes\": predictions[\"boxes\"],\n", + " \"labels\": predictions[\"labels\"],\n", + " \"confidences\": predictions[\"confidence\"],\n", + " },\n", + " scale=4,\n", + " class_mapping=COCO_90_CLASS_MAPPING,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text" + }, + "source": [ + "## Fine tuning a pretrained object detector\n", + "In this guide, we'll assemble a full training pipeline for a KerasHub `RetinaNet`\n", + "object detection model. This includes data loading, augmentation, training, and\n", + "inference using Pascal VOC 2007 & 2012 dataset!" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text" + }, + "source": [ + "## TFDS Preprocessing\n", + "This preprocessing step prepares the TFDS dataset for object detection. It\n", + "includes:\n", + "- Merging the Pascal VOC 2007 and 2012 datasets.\n", + "- Resizing all images to a resolution of 800x800 pixels.\n", + "- Limiting the number of bounding boxes per image to a maximum of 100.\n", + "- Finally, the resulting dataset is batched into sets of 4 images and bounding\n", + "box annotations." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab_type": "code" + }, + "outputs": [], + "source": [ + "\n", + "def decode_custom_tfds(record: Dict[str, Any]) -> Dict[str, Any]:\n", + " \"\"\"Decodes a custom TFDS record into a dictionary.\n", + "\n", + " Args:\n", + " record: A dictionary representing a single TFDS record.\n", + "\n", + " Returns:\n", + " A dictionary with \"images\" and \"bounding_boxes\".\n", + " \"\"\"\n", + " image = record[\"image\"]\n", + " boxes = record[\"objects/bbox\"]\n", + " labels = record[\"objects/label\"]\n", + "\n", + " bounding_boxes = {\"boxes\": boxes, \"labels\": labels}\n", + "\n", + " return {\"images\": image, \"bounding_boxes\": bounding_boxes}\n", + "\n", + "\n", + "def convert_to_tuple(record: Dict[str, Any]) -> Tuple[tf.Tensor, Dict[str, Any]]:\n", + " \"\"\"Converts a decoded TFDS record to a tuple for keras-hub.\n", + "\n", + " Args:\n", + " record: A dictionary returned by `decode_custom_tfds` or `decode_tfds`.\n", + "\n", + " Returns:\n", + " A tuple (image, bounding_boxes).\n", + " \"\"\"\n", + " return record[\"images\"], {\n", + " \"boxes\": record[\"bounding_boxes\"][\"boxes\"],\n", + " \"labels\": record[\"bounding_boxes\"][\"labels\"],\n", + " }\n", + "\n", + "\n", + "def decode_tfds(record: Dict[str, Any]) -> Dict[str, Any]:\n", + " \"\"\"Decodes a standard TFDS object detection record.\n", + "\n", + " Args:\n", + " record: A dictionary representing a single TFDS record.\n", + "\n", + " Returns:\n", + " A dictionary with \"images\" and \"bounding_boxes\".\n", + " \"\"\"\n", + " image = record[\"image\"]\n", + " image_shape = tf.shape(image)\n", + " height, width = image_shape[0], image_shape[1]\n", + " boxes = keras.utils.bounding_boxes.convert_format(\n", + " record[\"objects\"][\"bbox\"],\n", + " source=\"rel_yxyx\",\n", + " target=gt_bbox_format,\n", + " height=height,\n", + " width=width,\n", + " )\n", + " labels = record[\"objects\"][\"label\"]\n", + "\n", + " bounding_boxes = {\"boxes\": boxes, \"labels\": labels}\n", + "\n", + " return {\"images\": image, \"bounding_boxes\": bounding_boxes}\n", + "\n", + "\n", + "def preprocess_tfds(ds: tf.data.Dataset) -> tf.data.Dataset:\n", + " \"\"\"Preprocesses a TFDS dataset for object detection.\n", + "\n", + " Args:\n", + " ds: The TFDS dataset.\n", + " resizing: A resizing function.\n", + " max_box_layer: A max box processing function.\n", + " batch_size: The batch size.\n", + "\n", + " Returns:\n", + " A preprocessed TFDS dataset.\n", + " \"\"\"\n", + " ds = ds.map(resizing, num_parallel_calls=tf.data.AUTOTUNE)\n", + " ds = ds.map(max_box_layer, num_parallel_calls=tf.data.AUTOTUNE)\n", + " ds = ds.batch(batch_size, drop_remainder=True)\n", + " return ds\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text" + }, + "source": [ + "Now concatenate both 2007 and 2012 VOC data" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab_type": "code" + }, + "outputs": [], + "source": [ + "train_ds = train_ds_2007.concatenate(train_ds_2012)\n", + "train_ds = train_ds.map(decode_custom_tfds, num_parallel_calls=tf.data.AUTOTUNE)\n", + "train_ds = preprocess_tfds(train_ds)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text" + }, + "source": [ + "Load the eval data" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab_type": "code" + }, + "outputs": [], + "source": [ + "eval_ds = tfds.load(\"voc/2007\", split=\"test\")\n", + "eval_ds = eval_ds.map(decode_tfds, num_parallel_calls=tf.data.AUTOTUNE)\n", + "eval_ds = preprocess_tfds(eval_ds)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text" + }, + "source": [ + "### Let's visualize batch of training data" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab_type": "code" + }, + "outputs": [], + "source": [ + "record = next(iter(train_ds.shuffle(100).take(1)))\n", + "keras.visualization.plot_bounding_box_gallery(\n", + " record[\"images\"],\n", + " bounding_box_format=gt_bbox_format,\n", + " y_true=record[\"bounding_boxes\"],\n", + " scale=3,\n", + " rows=2,\n", + " cols=2,\n", + " class_mapping=INDEX_TO_CLASS,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text" + }, + "source": [ + "### Decoded TFDS record to a tuple for keras-hub" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab_type": "code" + }, + "outputs": [], + "source": [ + "train_ds = train_ds.map(convert_to_tuple, num_parallel_calls=tf.data.AUTOTUNE)\n", + "train_ds = train_ds.prefetch(tf.data.AUTOTUNE)\n", + "\n", + "eval_ds = eval_ds.map(convert_to_tuple, num_parallel_calls=tf.data.AUTOTUNE)\n", + "eval_ds = eval_ds.prefetch(tf.data.AUTOTUNE)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text" + }, + "source": [ + "## Congiure RetinaNet Model\n", + "Configure the model with backbone, num_classes and preprocessor.\n", + "Use callbacks for recording logs and saving checkpoints." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab_type": "code" + }, + "outputs": [], + "source": [ + "\n", + "def get_callbacks(experiment_path: str):\n", + " \"\"\"Creates a list of callbacks for model training.\n", + "\n", + " Args:\n", + " experiment_path (str): Path to the experiment directory.\n", + "\n", + " Returns:\n", + " List of keras callback instances.\n", + " \"\"\"\n", + " # models_path = os.path.join(experiment_path, \"tf_models\")\n", + " tb_logs_path = os.path.join(experiment_path, \"logs\")\n", + " ckpt_path = os.path.join(experiment_path, \"weights\")\n", + " return [\n", + " keras.callbacks.BackupAndRestore(ckpt_path, delete_checkpoint=False),\n", + " keras.callbacks.TensorBoard(\n", + " tb_logs_path,\n", + " update_freq=1,\n", + " ),\n", + " keras.callbacks.ModelCheckpoint(\n", + " ckpt_path + \"/{epoch:04d}-{val_loss:.2f}.weights.h5\",\n", + " save_best_only=True,\n", + " save_weights_only=True,\n", + " verbose=1,\n", + " ),\n", + " ]\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text" + }, + "source": [ + "## Load backbone weights and preprocessor config" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab_type": "code" + }, + "outputs": [], + "source": [ + "backbone = keras_hub.models.Backbone.from_preset(\"retinanet_resnet50_fpn_coco\")\n", + "\n", + "preprocessor = keras_hub.models.RetinaNetObjectDetectorPreprocessor.from_preset(\n", + " \"retinanet_resnet50_fpn_coco\"\n", + ")\n", + "model = keras_hub.models.RetinaNetObjectDetector(\n", + " backbone=backbone, num_classes=len(CLASSES), preprocessor=preprocessor\n", + ")\n", + "model.compile(box_loss=keras.losses.MeanAbsoluteError(reduction=\"sum\"))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text" + }, + "source": [ + "## Fit the model\n", + "\n", + "**Note:** The model trained on L4 GPU, while training on T4 it takes significant time." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab_type": "code" + }, + "outputs": [], + "source": [ + "model.fit(\n", + " train_ds,\n", + " epochs=epochs,\n", + " validation_data=eval_ds,\n", + " callbacks=get_callbacks(\"fine_tuning\"),\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text" + }, + "source": [ + "### Prediction on evaluation data" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab_type": "code" + }, + "outputs": [], + "source": [ + "images, y_true = next(iter(eval_ds.shuffle(50).take(1)))\n", + "y_pred = model.predict(images)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text" + }, + "source": [ + "### Plot the predictions" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab_type": "code" + }, + "outputs": [], + "source": [ + "keras.visualization.plot_bounding_box_gallery(\n", + " images,\n", + " bounding_box_format=gt_bbox_format,\n", + " y_true={\"boxes\": y_true[\"boxes\"], \"labels\": y_true[\"classes\"]},\n", + " y_pred={\n", + " \"boxes\": y_pred[\"boxes\"],\n", + " \"labels\": y_pred[\"classes\"],\n", + " \"confidence\": y_pred[\"confidence\"],\n", + " },\n", + " scale=3,\n", + " rows=2,\n", + " cols=2,\n", + " class_mapping=INDEX_TO_CLASS,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text" + }, + "source": [ + "## Custom training object detector\n", + "Additionally, you can customize the object detector by modifying the image\n", + "converter, selecting a different image encoder, etc.\n", + "\n", + "### Image Converter\n", + "The `RetinaNetImageConverter` class prepares images for use with the `RetinaNet`\n", + "object detection model. Here's what it does:\n", + "\n", + "- Scaling and Offsetting\n", + "- ImageNet Normalization\n", + "- Resizing" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab_type": "code" + }, + "outputs": [], + "source": [ + "image_converter = keras_hub.layers.RetinaNetImageConverter(scale=1 / 255)\n", + "\n", + "preprocessor = keras_hub.models.RetinaNetObjectDetectorPreprocessor(\n", + " image_converter=image_converter\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text" + }, + "source": [ + "### Image Encoder and RetinaNet Backbone\n", + "The image encoder, while typically initialized with pre-trained weights\n", + "(e.g., from ImageNet), can also be instantiated without them. This results in\n", + "the image encoder (and, consequently, the entire object detection network built\n", + "upon it) having randomly initialized weights.\n", + "\n", + "This configuration is equivalent to training the model from scratch, as opposed\n", + "to fine-tuning a pre-trained model.\n", + "\n", + "Training from scratch generally requires significantly more data and\n", + "computational resources to achieve performance comparable to fine-tuning.\n", + "\n", + "**Note:**\n", + "`use_p5`: If True, the output of the last backbone layer (typically `P5` in an\n", + "`FPN`) is used as input to create higher-level feature maps (e.g., `P6`, `P7`)\n", + "through additional convolutional layers. If `False`, the original `P5` feature\n", + "map from the backbone is directly used as input for creating the coarser levels,\n", + "bypassing any further processing of `P5` within the feature pyramid. Defaults to\n", + "`False`." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab_type": "code" + }, + "outputs": [], + "source": [ + "# Load a pre-trained ResNet50 model.\n", + "# This will serve as the base for extracting image features.\n", + "image_encoder = keras_hub.models.Backbone.from_preset(\"resnet_50_imagenet\")\n", + "\n", + "# Build the RetinaNet Feature Pyramid Network (FPN) on top of the ResNet50\n", + "# backbone. The FPN creates multi-scale feature maps for better object detection\n", + "# at different sizes.\n", + "backbone = keras_hub.models.RetinaNetBackbone(\n", + " image_encoder=image_encoder, min_level=3, max_level=5, use_p5=True\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text" + }, + "source": [ + "### Train and visulaize RetinaNet model\n", + "\n", + "**Note:** Training the model (for demonstration purposes only 5 epochs). In a\n", + "real scenario, you would train for many more epochs (often hundreds) to achieve\n", + "good results." + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab_type": "code" + }, + "outputs": [], + "source": [ + "model = keras_hub.models.RetinaNetObjectDetector(\n", + " backbone=backbone,\n", + " num_classes=len(CLASSES),\n", + " preprocessor=preprocessor,\n", + " use_prediction_head_norm=True,\n", + ")\n", + "model.compile(\n", + " optimizer=keras.optimizers.Adam(learning_rate=0.001),\n", + " box_loss=keras.losses.MeanAbsoluteError(reduction=\"sum\"),\n", + ")\n", + "\n", + "model.fit(\n", + " train_ds,\n", + " epochs=epochs,\n", + " validation_data=eval_ds,\n", + " callbacks=get_callbacks(\"custom_training\"),\n", + ")\n", + "\n", + "images, y_true = next(iter(eval_ds.shuffle(50).take(1)))\n", + "y_pred = model.predict(images)\n", + "\n", + "keras.visualization.plot_bounding_box_gallery(\n", + " images,\n", + " bounding_box_format=gt_bbox_format,\n", + " y_true={\"boxes\": y_true[\"boxes\"], \"labels\": y_true[\"classes\"]},\n", + " y_pred={\n", + " \"boxes\": y_pred[\"boxes\"],\n", + " \"labels\": y_pred[\"classes\"],\n", + " \"confidence\": y_pred[\"confidence\"],\n", + " },\n", + " scale=3,\n", + " rows=2,\n", + " cols=2,\n", + " class_mapping=INDEX_TO_CLASS,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text" + }, + "source": [ + "Here is a sample image showing the output of the object detector after training\n", + "for 100 epochs on an `A100 GPU`, which takes approximately 15 hours on `JAX` backend.\n", + "\n", + "![retinanet](/img/guides/object_detection_retinanet/retinanet_architecture.png)" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "collapsed_sections": [], + "name": "object_detection_retinanet", + "private_outputs": false, + "provenance": [], + "toc_visible": true + }, + "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.7.0" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/guides/keras_hub/object_detection_retinanet.py b/guides/keras_hub/object_detection_retinanet.py new file mode 100644 index 0000000000..2c149d1af7 --- /dev/null +++ b/guides/keras_hub/object_detection_retinanet.py @@ -0,0 +1,767 @@ +""" +Title: Object Detection with KerasHub +Authors: [Siva Sravana Kumar Neeli](https://github.com/sineeli), [Sachin Prasad](https://github.com/sachinprasadhs) +Date created: 2025/03/21 +Last modified: 2025/03/21 +Description: RetinaNet Object Detection: Training, Fine-tuning, and Inference. +Accelerator: GPU +""" + +""" +![](https://storage.googleapis.com/keras-hub/getting_started_guide/prof_keras_intermediate.png) + +## Introduction +Object detection is a crucial computer vision task that goes beyond simple image +classification. It requires models to not only identify the types of objects +present in an image but also pinpoint their locations using bounding boxes. This +dual requirement of classification and localization makes object detection a +more complex and powerful tool. +Object detection models are broadly classified into two categories: "two-stage" +and "single-stage" detectors. Two-stage detectors often achieve higher accuracy +by first proposing regions of interest and then classifying them. However, this +approach can be computationally expensive. Single-stage detectors, on the other +hand, aim for speed by directly predicting object classes and bounding boxes in +a single pass. + +In this tutorial, we'll be diving into `RetinaNet`, a powerful object detection +model known for its speed and precision. `RetinaNet` is a single-stage detector, +a design choice that allows it to be remarkably efficient. Its impressive +performance stems from two key architectural innovations: +1. **Feature Pyramid Network (FPN):** FPN equips `RetinaNet` with the ability to +seamlessly detect objects of all scales, from distant, tiny instances to large, +prominent ones. +2. **Focal Loss:** This ingenious loss function tackles the common challenge of +imbalanced data by focusing the model's learning on the most crucial and +challenging object examples, leading to enhanced accuracy without compromising +speed. + +![retinanet](/img/guides/object_detection_retinanet/retinanet_architecture.png) + +### References +- [Focal Loss for Dense Object Detection](https://arxiv.org/abs/1708.02002) +- [Feature Pyramid Networks for Object Detection](https://arxiv.org/abs/1612.03144) +""" + +""" +## Setup and Imports + +Let's install the dependencies and import the necessary modules. + +To run this tutorial, you will need to install the following packages: + +* `keras-hub` +* `keras` +""" + +"""shell +pip install -q --upgrade keras-hub +pip install -q --upgrade keras +""" + +import os + +os.environ["KERAS_BACKEND"] = "jax" +import keras +import keras_hub +import tensorflow as tf +import warnings + +warnings.filterwarnings("ignore") + +""" +### Helper functions +""" +# @title Helper functions +import logging +import multiprocessing +from builtins import open +import os.path +import xml +from typing import Callable, Tuple, Dict, Any + +import tensorflow_datasets as tfds + +VOC_2007_URL = ( + "http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar" +) +VOC_2012_URL = ( + "http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar" +) + +# Note that this list doesn't contain the background class. In the +# classification use case, the label is 0 based (aeroplane -> 0), whereas in +# segmentation use case, the 0 is reserved for background, so aeroplane maps to +# 1. +CLASSES = [ + "aeroplane", + "bicycle", + "bird", + "boat", + "bottle", + "bus", + "car", + "cat", + "chair", + "cow", + "diningtable", + "dog", + "horse", + "motorbike", + "person", + "pottedplant", + "sheep", + "sofa", + "train", + "tvmonitor", +] +COCO_90_CLASS_MAPPING = { + 1: "person", + 2: "bicycle", + 3: "car", + 4: "motorcycle", + 5: "airplane", + 6: "bus", + 7: "train", + 8: "truck", + 9: "boat", + 10: "traffic light", + 11: "fire hydrant", + 13: "stop sign", + 14: "parking meter", + 15: "bench", + 16: "bird", + 17: "cat", + 18: "dog", + 19: "horse", + 20: "sheep", + 21: "cow", + 22: "elephant", + 23: "bear", + 24: "zebra", + 25: "giraffe", + 27: "backpack", + 28: "umbrella", + 31: "handbag", + 32: "tie", + 33: "suitcase", + 34: "frisbee", + 35: "skis", + 36: "snowboard", + 37: "sports ball", + 38: "kite", + 39: "baseball bat", + 40: "baseball glove", + 41: "skateboard", + 42: "surfboard", + 43: "tennis racket", + 44: "bottle", + 46: "wine glass", + 47: "cup", + 48: "fork", + 49: "knife", + 50: "spoon", + 51: "bowl", + 52: "banana", + 53: "apple", + 54: "sandwich", + 55: "orange", + 56: "broccoli", + 57: "carrot", + 58: "hot dog", + 59: "pizza", + 60: "donut", + 61: "cake", + 62: "chair", + 63: "couch", + 64: "potted plant", + 65: "bed", + 67: "dining table", + 70: "toilet", + 72: "tv", + 73: "laptop", + 74: "mouse", + 75: "remote", + 76: "keyboard", + 77: "cell phone", + 78: "microwave", + 79: "oven", + 80: "toaster", + 81: "sink", + 82: "refrigerator", + 84: "book", + 85: "clock", + 86: "vase", + 87: "scissors", + 88: "teddy bear", + 89: "hair drier", + 90: "toothbrush", +} +# This is used to map between string class to index. +CLASS_TO_INDEX = {name: index for index, name in enumerate(CLASSES)} +INDEX_TO_CLASS = {index: name for index, name in enumerate(CLASSES)} + + +def get_image_ids(data_dir, split): + """To get image ids from the "train", "eval" or "trainval" files of VOC data.""" + data_file_mapping = { + "train": "train.txt", + "eval": "val.txt", + "trainval": "trainval.txt", + } + with open( + os.path.join(data_dir, "ImageSets", "Main", data_file_mapping[split]), + "r", + ) as f: + image_ids = f.read().splitlines() + logging.info(f"Received {len(image_ids)} images for {split} dataset.") + return image_ids + + +def load_images(example): + """Loads VOC images for segmentation task from the provided paths""" + image_file_path = example.pop("image/file_path") + image = tf.io.read_file(image_file_path) + image = tf.image.decode_jpeg(image) + + example.update( + { + "image": image, + } + ) + return example + + +def parse_annotation_data(annotation_file_path): + """Parse the annotation XML file for the image. + + The annotation contains the metadata, as well as the object bounding box + information. + + """ + with open(annotation_file_path, "r") as f: + root = xml.etree.ElementTree.parse(f).getroot() + + size = root.find("size") + width = int(size.find("width").text) + height = int(size.find("height").text) + filename = root.find("filename").text + + objects = [] + for obj in root.findall("object"): + # Get object's label name. + label = CLASS_TO_INDEX[obj.find("name").text.lower()] + bndbox = obj.find("bndbox") + xmax = int(float(bndbox.find("xmax").text)) + xmin = int(float(bndbox.find("xmin").text)) + ymax = int(float(bndbox.find("ymax").text)) + ymin = int(float(bndbox.find("ymin").text)) + objects.append( + { + "label": label, + "bbox": [ymin, xmin, ymax, xmax], + } + ) + + return { + "image/filename": filename, + "width": width, + "height": height, + "objects": objects, + } + + +def parse_single_image(annotation_file_path): + """Creates metadata of VOC images and path.""" + data_dir, annotation_file_name = os.path.split(annotation_file_path) + data_dir = os.path.normpath(os.path.join(data_dir, os.path.pardir)) + image_annotations = parse_annotation_data(annotation_file_path) + + result = { + "image/file_path": os.path.join( + data_dir, "JPEGImages", image_annotations["image/filename"] + ) + } + result.update(image_annotations) + # Labels field should be same as the 'object.label' + labels = list(set([o["label"] for o in result["objects"]])) + result["labels"] = sorted(labels) + return result + + +def build_metadata(data_dir, image_ids): + """Transpose the metadata which convert from list of dict to dict of list.""" + # Parallel process all the images. + image_file_paths = [ + os.path.join(data_dir, "JPEGImages", i + ".jpg") for i in image_ids + ] + annotation_file_paths = tf.io.gfile.glob( + os.path.join(data_dir, "Annotations", "*.xml") + ) + pool_size = 10 if len(image_ids) > 10 else len(annotation_file_paths) + with multiprocessing.Pool(pool_size) as p: + metadata = p.map(parse_single_image, annotation_file_paths) + + keys = [ + "image/filename", + "image/file_path", + "labels", + "width", + "height", + ] + result = {} + for key in keys: + values = [value[key] for value in metadata] + result[key] = values + + # The ragged objects need some special handling + for key in ["label", "bbox"]: + values = [] + objects = [value["objects"] for value in metadata] + for object in objects: + values.append([o[key] for o in object]) + result["objects/" + key] = values + return result + + +def build_dataset_from_metadata(metadata): + """Builds TensorFlow dataset from the image metadata of VOC dataset.""" + # The objects need some manual conversion to ragged tensor. + metadata["labels"] = tf.ragged.constant(metadata["labels"]) + metadata["objects/label"] = tf.ragged.constant(metadata["objects/label"]) + metadata["objects/bbox"] = tf.ragged.constant( + metadata["objects/bbox"], ragged_rank=1 + ) + + dataset = tf.data.Dataset.from_tensor_slices(metadata) + dataset = dataset.map(load_images, num_parallel_calls=tf.data.AUTOTUNE) + return dataset + + +def load_voc( + year="2007", + split="trainval", + data_dir="./", + voc_url=VOC_2007_URL, +): + extracted_dir = os.path.join("VOCdevkit", f"VOC{year}") + get_data = keras.utils.get_file( + fname=os.path.basename(voc_url), + origin=voc_url, + cache_dir=data_dir, + extract=True, + ) + data_dir = os.path.join(get_data, extracted_dir) + image_ids = get_image_ids(data_dir, split) + metadata = build_metadata(data_dir, image_ids) + dataset = build_dataset_from_metadata(metadata) + + return dataset + + +""" +## Load the dataset +""" +train_ds_2007 = load_voc( + year="2007", + split="trainval", + data_dir="./", + voc_url=VOC_2007_URL, +) +train_ds_2012 = load_voc( + year="2012", + split="trainval", + data_dir="./", + voc_url=VOC_2012_URL, +) + +""" +## Inference using a pre-trained object detector + +Let's begin with the simplest `KerasHub` API: a pre-trained object detector. In +this example, we will construct an object detector that was pre-trained on the +`COCO` dataset. We'll use this model to detect objects in a sample image. + +The highest-level module in KerasHub is a `task`. A `task` is a `keras.Model` +consisting of a (generally pre-trained) backbone model and task-specific layers. +Here's an example using `keras_hub.models.ImageObjectDetector` with the +`RetinaNet` model architecture and `ResNet50` as the backbone. + +ResNet is a great starting model when constructing an image classification +pipeline. This architecture manages to achieve high accuracy while using a +relatively small number of parameters. If a ResNet isn't powerful enough for the +task you are hoping to solve, be sure to check out KerasHub's other available +backbones here https://keras.io/keras_hub/presets/ +""" + +object_detector = keras_hub.models.ImageObjectDetector.from_preset( + "kaggle://keras/retinanet/keras/retinanet_resnet50_fpn_coco" +) +object_detector.summary() + +""" +## Preprocessing Layers +""" +image_size = (800, 800) +batch_size = 4 +gt_bbox_format = "yxyx" +epochs = 5 + +# Resizing layer: Resizes images and pads to maintain aspect ratio +resizing = keras.layers.Resizing( + height=image_size[0], + width=image_size[1], + interpolation="bilinear", + pad_to_aspect_ratio=True, + bounding_box_format=gt_bbox_format, +) + +# Max bounding box layer: Limits the number of bounding boxes per image +max_box_layer = keras.layers.MaxNumBoundingBoxes( + max_number=100, bounding_box_format=gt_bbox_format +) + +""" +### Predict and Visualize +Next, let's get some predictions from our object detector: +""" + +filepath = keras.utils.get_file( + origin="http://farm4.staticflickr.com/3755/10245052896_958cbf4766_z.jpg" +) +image = keras.utils.load_img(filepath) +image = keras.ops.cast(image, "float32") +image = keras.ops.expand_dims(image, axis=0) + +predictions = object_detector.predict(image, batch_size=1) + +keras.visualization.plot_bounding_box_gallery( + resizing(image), # resize image as per prediction preprocessing pipeline + bounding_box_format=gt_bbox_format, + y_pred={ + "boxes": predictions["boxes"], + "labels": predictions["labels"], + "confidences": predictions["confidence"], + }, + scale=4, + class_mapping=COCO_90_CLASS_MAPPING, +) + +""" +## Fine tuning a pretrained object detector +In this guide, we'll assemble a full training pipeline for a KerasHub `RetinaNet` +object detection model. This includes data loading, augmentation, training, and +inference using Pascal VOC 2007 & 2012 dataset! +""" + +""" +## TFDS Preprocessing +This preprocessing step prepares the TFDS dataset for object detection. It +includes: +- Merging the Pascal VOC 2007 and 2012 datasets. +- Resizing all images to a resolution of 800x800 pixels. +- Limiting the number of bounding boxes per image to a maximum of 100. +- Finally, the resulting dataset is batched into sets of 4 images and bounding +box annotations. +""" + + +def decode_custom_tfds(record: Dict[str, Any]) -> Dict[str, Any]: + """Decodes a custom TFDS record into a dictionary. + + Args: + record: A dictionary representing a single TFDS record. + + Returns: + A dictionary with "images" and "bounding_boxes". + """ + image = record["image"] + boxes = record["objects/bbox"] + labels = record["objects/label"] + + bounding_boxes = {"boxes": boxes, "labels": labels} + + return {"images": image, "bounding_boxes": bounding_boxes} + + +def convert_to_tuple(record: Dict[str, Any]) -> Tuple[tf.Tensor, Dict[str, Any]]: + """Converts a decoded TFDS record to a tuple for keras-hub. + + Args: + record: A dictionary returned by `decode_custom_tfds` or `decode_tfds`. + + Returns: + A tuple (image, bounding_boxes). + """ + return record["images"], { + "boxes": record["bounding_boxes"]["boxes"], + "labels": record["bounding_boxes"]["labels"], + } + + +def decode_tfds(record: Dict[str, Any]) -> Dict[str, Any]: + """Decodes a standard TFDS object detection record. + + Args: + record: A dictionary representing a single TFDS record. + + Returns: + A dictionary with "images" and "bounding_boxes". + """ + image = record["image"] + image_shape = tf.shape(image) + height, width = image_shape[0], image_shape[1] + boxes = keras.utils.bounding_boxes.convert_format( + record["objects"]["bbox"], + source="rel_yxyx", + target=gt_bbox_format, + height=height, + width=width, + ) + labels = record["objects"]["label"] + + bounding_boxes = {"boxes": boxes, "labels": labels} + + return {"images": image, "bounding_boxes": bounding_boxes} + + +def preprocess_tfds(ds: tf.data.Dataset) -> tf.data.Dataset: + """Preprocesses a TFDS dataset for object detection. + + Args: + ds: The TFDS dataset. + resizing: A resizing function. + max_box_layer: A max box processing function. + batch_size: The batch size. + + Returns: + A preprocessed TFDS dataset. + """ + ds = ds.map(resizing, num_parallel_calls=tf.data.AUTOTUNE) + ds = ds.map(max_box_layer, num_parallel_calls=tf.data.AUTOTUNE) + ds = ds.batch(batch_size, drop_remainder=True) + return ds + + +""" +Now concatenate both 2007 and 2012 VOC data +""" +train_ds = train_ds_2007.concatenate(train_ds_2012) +train_ds = train_ds.map(decode_custom_tfds, num_parallel_calls=tf.data.AUTOTUNE) +train_ds = preprocess_tfds(train_ds) + +""" +Load the eval data +""" +eval_ds = tfds.load("voc/2007", split="test") +eval_ds = eval_ds.map(decode_tfds, num_parallel_calls=tf.data.AUTOTUNE) +eval_ds = preprocess_tfds(eval_ds) + +""" +### Let's visualize batch of training data +""" +record = next(iter(train_ds.shuffle(100).take(1))) +keras.visualization.plot_bounding_box_gallery( + record["images"], + bounding_box_format=gt_bbox_format, + y_true=record["bounding_boxes"], + scale=3, + rows=2, + cols=2, + class_mapping=INDEX_TO_CLASS, +) + +""" +### Decoded TFDS record to a tuple for keras-hub +""" +train_ds = train_ds.map(convert_to_tuple, num_parallel_calls=tf.data.AUTOTUNE) +train_ds = train_ds.prefetch(tf.data.AUTOTUNE) + +eval_ds = eval_ds.map(convert_to_tuple, num_parallel_calls=tf.data.AUTOTUNE) +eval_ds = eval_ds.prefetch(tf.data.AUTOTUNE) + +""" +## Congiure RetinaNet Model +Configure the model with backbone, num_classes and preprocessor. +Use callbacks for recording logs and saving checkpoints. +""" + + +def get_callbacks(experiment_path: str): + """Creates a list of callbacks for model training. + + Args: + experiment_path (str): Path to the experiment directory. + + Returns: + List of keras callback instances. + """ + # models_path = os.path.join(experiment_path, "tf_models") + tb_logs_path = os.path.join(experiment_path, "logs") + ckpt_path = os.path.join(experiment_path, "weights") + return [ + keras.callbacks.BackupAndRestore(ckpt_path, delete_checkpoint=False), + keras.callbacks.TensorBoard( + tb_logs_path, + update_freq=1, + ), + keras.callbacks.ModelCheckpoint( + ckpt_path + "/{epoch:04d}-{val_loss:.2f}.weights.h5", + save_best_only=True, + save_weights_only=True, + verbose=1, + ), + ] + + +""" +## Load backbone weights and preprocessor config +""" + +backbone = keras_hub.models.Backbone.from_preset("retinanet_resnet50_fpn_coco") + +preprocessor = keras_hub.models.RetinaNetObjectDetectorPreprocessor.from_preset( + "retinanet_resnet50_fpn_coco" +) +model = keras_hub.models.RetinaNetObjectDetector( + backbone=backbone, num_classes=len(CLASSES), preprocessor=preprocessor +) +model.compile(box_loss=keras.losses.MeanAbsoluteError(reduction="sum")) + +""" +## Fit the model + +**Note:** The model trained on L4 GPU, while training on T4 it takes significant time. +""" + +model.fit( + train_ds, + epochs=epochs, + validation_data=eval_ds, + callbacks=get_callbacks("fine_tuning"), +) + +""" +### Prediction on evaluation data +""" +images, y_true = next(iter(eval_ds.shuffle(50).take(1))) +y_pred = model.predict(images) + +""" +### Plot the predictions +""" +keras.visualization.plot_bounding_box_gallery( + images, + bounding_box_format=gt_bbox_format, + y_true={"boxes": y_true["boxes"], "labels": y_true["classes"]}, + y_pred={ + "boxes": y_pred["boxes"], + "labels": y_pred["classes"], + "confidence": y_pred["confidence"], + }, + scale=3, + rows=2, + cols=2, + class_mapping=INDEX_TO_CLASS, +) + +""" +## Custom training object detector +Additionally, you can customize the object detector by modifying the image +converter, selecting a different image encoder, etc. + +### Image Converter +The `RetinaNetImageConverter` class prepares images for use with the `RetinaNet` +object detection model. Here's what it does: + +- Scaling and Offsetting +- ImageNet Normalization +- Resizing +""" + +image_converter = keras_hub.layers.RetinaNetImageConverter(scale=1 / 255) + +preprocessor = keras_hub.models.RetinaNetObjectDetectorPreprocessor( + image_converter=image_converter +) + +""" +### Image Encoder and RetinaNet Backbone +The image encoder, while typically initialized with pre-trained weights +(e.g., from ImageNet), can also be instantiated without them. This results in +the image encoder (and, consequently, the entire object detection network built +upon it) having randomly initialized weights. + +This configuration is equivalent to training the model from scratch, as opposed +to fine-tuning a pre-trained model. + +Training from scratch generally requires significantly more data and +computational resources to achieve performance comparable to fine-tuning. + +**Note:** +`use_p5`: If True, the output of the last backbone layer (typically `P5` in an +`FPN`) is used as input to create higher-level feature maps (e.g., `P6`, `P7`) +through additional convolutional layers. If `False`, the original `P5` feature +map from the backbone is directly used as input for creating the coarser levels, +bypassing any further processing of `P5` within the feature pyramid. Defaults to +`False`. +""" +# Load a pre-trained ResNet50 model. +# This will serve as the base for extracting image features. +image_encoder = keras_hub.models.Backbone.from_preset("resnet_50_imagenet") + +# Build the RetinaNet Feature Pyramid Network (FPN) on top of the ResNet50 +# backbone. The FPN creates multi-scale feature maps for better object detection +# at different sizes. +backbone = keras_hub.models.RetinaNetBackbone( + image_encoder=image_encoder, min_level=3, max_level=5, use_p5=True +) + +""" +### Train and visulaize RetinaNet model + +**Note:** Training the model (for demonstration purposes only 5 epochs). In a +real scenario, you would train for many more epochs (often hundreds) to achieve +good results. +""" +model = keras_hub.models.RetinaNetObjectDetector( + backbone=backbone, + num_classes=len(CLASSES), + preprocessor=preprocessor, + use_prediction_head_norm=True, +) +model.compile( + optimizer=keras.optimizers.Adam(learning_rate=0.001), + box_loss=keras.losses.MeanAbsoluteError(reduction="sum"), +) + +model.fit( + train_ds, + epochs=epochs, + validation_data=eval_ds, + callbacks=get_callbacks("custom_training"), +) + +images, y_true = next(iter(eval_ds.shuffle(50).take(1))) +y_pred = model.predict(images) + +keras.visualization.plot_bounding_box_gallery( + images, + bounding_box_format=gt_bbox_format, + y_true={"boxes": y_true["boxes"], "labels": y_true["classes"]}, + y_pred={ + "boxes": y_pred["boxes"], + "labels": y_pred["classes"], + "confidence": y_pred["confidence"], + }, + scale=3, + rows=2, + cols=2, + class_mapping=INDEX_TO_CLASS, +) + +""" +Here is a sample image showing the output of the object detector after training +for 100 epochs on an `A100 GPU`, which takes approximately 15 hours on `JAX` backend. + +![retinanet](/img/guides/object_detection_retinanet/retinanet_architecture.png) +""" From 2dd68638dcd939bda24013d8a0d27a0a0b0c204a Mon Sep 17 00:00:00 2001 From: Sachin Prasad Date: Tue, 25 Mar 2025 22:12:54 +0000 Subject: [PATCH 2/8] generate md and .ipynb files --- .../object_detection_retinanet_14_2.png | Bin 0 -> 201974 bytes .../object_detection_retinanet_23_0.png | Bin 0 -> 431467 bytes .../object_detection_retinanet_35_0.png | Bin 0 -> 499345 bytes .../object_detection_retinanet_41_27687.png | Bin 0 -> 436234 bytes .../object_detection_retinanet.ipynb | 42 +- .../keras_hub/object_detection_retinanet.py | 33 +- .../keras_hub/object_detection_retinanet.md | 395087 +++++++++++++++ 7 files changed, 395105 insertions(+), 57 deletions(-) create mode 100644 guides/img/object_detection_retinanet/object_detection_retinanet_14_2.png create mode 100644 guides/img/object_detection_retinanet/object_detection_retinanet_23_0.png create mode 100644 guides/img/object_detection_retinanet/object_detection_retinanet_35_0.png create mode 100644 guides/img/object_detection_retinanet/object_detection_retinanet_41_27687.png create mode 100644 guides/md/keras_hub/object_detection_retinanet.md diff --git a/guides/img/object_detection_retinanet/object_detection_retinanet_14_2.png b/guides/img/object_detection_retinanet/object_detection_retinanet_14_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a1dc0b1517be0f5e2cf8383309eff0d321a82cea GIT binary patch literal 201974 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 z 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