{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "gCMycQ_2U8SA"
      },
      "source": [
        "<div align=\"center\">\n",
        "  <img src=\"https://github.com/open-mmlab/mmdetection/raw/3.x/resources/mmdet-logo.png\" width=\"600\"/>\n",
        "  <div>&nbsp;</div>\n",
        "  <div align=\"center\">\n",
        "    <b><font size=\"5\">OpenMMLab website</font></b>\n",
        "    <sup>\n",
        "      <a href=\"https://openmmlab.com\">\n",
        "        <i><font size=\"4\">HOT</font></i>\n",
        "      </a>\n",
        "    </sup>\n",
        "    &nbsp;&nbsp;&nbsp;&nbsp;\n",
        "    <b><font size=\"5\">OpenMMLab platform</font></b>\n",
        "    <sup>\n",
        "      <a href=\"https://platform.openmmlab.com\">\n",
        "        <i><font size=\"4\">TRY IT OUT</font></i>\n",
        "      </a>\n",
        "    </sup>\n",
        "  </div>\n",
        "  <div>&nbsp;</div>\n",
        "\n",
        "<a href=\"https://colab.research.google.com/github/open-mmlab/mmdetection/blob/dev-3.x/demo/MMDet_Tutorial.ipynb\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"></a>\n",
        "\n",
        "[![PyPI](https://img.shields.io/pypi/v/mmdet)](https://pypi.org/project/mmdet)\n",
        "[![docs](https://img.shields.io/badge/docs-latest-blue)](https://mmdetection.readthedocs.io/en/latest/)\n",
        "[![badge](https://github.com/open-mmlab/mmdetection/workflows/build/badge.svg)](https://github.com/open-mmlab/mmdetection/actions)\n",
        "[![codecov](https://codecov.io/gh/open-mmlab/mmdetection/branch/master/graph/badge.svg)](https://codecov.io/gh/open-mmlab/mmdetection)\n",
        "[![license](https://img.shields.io/github/license/open-mmlab/mmdetection.svg)](https://github.com/open-mmlab/mmdetection/blob/master/LICENSE)\n",
        "[![open issues](https://isitmaintained.com/badge/open/open-mmlab/mmdetection.svg)](https://github.com/open-mmlab/mmdetection/issues)\n",
        "[![issue resolution](https://isitmaintained.com/badge/resolution/open-mmlab/mmdetection.svg)](https://github.com/open-mmlab/mmdetection/issues)\n",
        "\n",
        "[📘Documentation](https://mmdetection.readthedocs.io/en/3.x/) |\n",
        "[🛠️Installation](https://mmdetection.readthedocs.io/en/3.x/get_started.html) |\n",
        "[👀Model Zoo](https://mmdetection.readthedocs.io/en/3.x/model_zoo.html) |\n",
        "[🆕Update News](https://mmdetection.readthedocs.io/en/3.x/notes/changelog.html) |\n",
        "[🚀Ongoing Projects](https://github.com/open-mmlab/mmdetection/projects) |\n",
        "[🤔Reporting Issues](https://github.com/open-mmlab/mmdetection/issues/new/choose)\n",
        "\n",
        "</div>\n",
        "\n",
        "<div align=\"center\">\n",
        "  <a href=\"https://openmmlab.medium.com/\" style=\"text-decoration:none;\">\n",
        "    <img src=\"https://user-images.githubusercontent.com/25839884/219255827-67c1a27f-f8c5-46a9-811d-5e57448c61d1.png\" width=\"3%\" alt=\"\" /></a>\n",
        "  <img src=\"https://user-images.githubusercontent.com/25839884/218346358-56cc8e2f-a2b8-487f-9088-32480cceabcf.png\" width=\"3%\" alt=\"\" />\n",
        "  <a href=\"https://discord.com/channels/1037617289144569886/1046608014234370059\" style=\"text-decoration:none;\">\n",
        "    <img src=\"https://user-images.githubusercontent.com/25839884/218347213-c080267f-cbb6-443e-8532-8e1ed9a58ea9.png\" width=\"3%\" alt=\"\" /></a>\n",
        "  <img src=\"https://user-images.githubusercontent.com/25839884/218346358-56cc8e2f-a2b8-487f-9088-32480cceabcf.png\" width=\"3%\" alt=\"\" />\n",
        "  <a href=\"https://twitter.com/OpenMMLab\" style=\"text-decoration:none;\">\n",
        "    <img src=\"https://user-images.githubusercontent.com/25839884/218346637-d30c8a0f-3eba-4699-8131-512fb06d46db.png\" width=\"3%\" alt=\"\" /></a>\n",
        "  <img src=\"https://user-images.githubusercontent.com/25839884/218346358-56cc8e2f-a2b8-487f-9088-32480cceabcf.png\" width=\"3%\" alt=\"\" />\n",
        "  <a href=\"https://www.youtube.com/openmmlab\" style=\"text-decoration:none;\">\n",
        "    <img src=\"https://user-images.githubusercontent.com/25839884/218346691-ceb2116a-465a-40af-8424-9f30d2348ca9.png\" width=\"3%\" alt=\"\" /></a>\n",
        "  <img src=\"https://user-images.githubusercontent.com/25839884/218346358-56cc8e2f-a2b8-487f-9088-32480cceabcf.png\" width=\"3%\" alt=\"\" />\n",
        "  <a href=\"https://space.bilibili.com/1293512903\" style=\"text-decoration:none;\">\n",
        "    <img src=\"https://user-images.githubusercontent.com/25839884/219026751-d7d14cce-a7c9-4e82-9942-8375fca65b99.png\" width=\"3%\" alt=\"\" /></a>\n",
        "  <img src=\"https://user-images.githubusercontent.com/25839884/218346358-56cc8e2f-a2b8-487f-9088-32480cceabcf.png\" width=\"3%\" alt=\"\" />\n",
        "  <a href=\"https://www.zhihu.com/people/openmmlab\" style=\"text-decoration:none;\">\n",
        "    <img src=\"https://user-images.githubusercontent.com/25839884/219026120-ba71e48b-6e94-4bd4-b4e9-b7d175b5e362.png\" width=\"3%\" alt=\"\" /></a>\n",
        "</div>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "aGYwt_UjIrqp"
      },
      "source": [
        "# Object Detection\n",
        "\n",
        "In this tutorial, you will learn:\n",
        "- the basic structure of RTMDet.\n",
        "- to perform inference with a MMDetection detector.\n",
        "- to train a new detector with a new dataset.\n",
        "\n",
        "Let's start!\n",
        "\n",
        "```{note}\n",
        "The commands in this tutorial are mainly for Colab.\n",
        "You can click the button above, `Open in Colab`, to run this notebook in Colab.\n",
        "```"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "tJxJHruNLb7Y"
      },
      "source": [
        "## Install MMDetection"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 1,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Wi4LPmsR66sy",
        "outputId": "13704ca1-3e1f-4bfc-8638-86458b1effb1"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "nvcc: NVIDIA (R) Cuda compiler driver\n",
            "Copyright (c) 2005-2022 NVIDIA Corporation\n",
            "Built on Wed_Sep_21_10:33:58_PDT_2022\n",
            "Cuda compilation tools, release 11.8, V11.8.89\n",
            "Build cuda_11.8.r11.8/compiler.31833905_0\n",
            "gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0\n",
            "Copyright (C) 2019 Free Software Foundation, Inc.\n",
            "This is free software; see the source for copying conditions.  There is NO\n",
            "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n",
            "\n"
          ]
        }
      ],
      "source": [
        "# Check nvcc version\n",
        "!nvcc -V\n",
        "# Check GCC version\n",
        "!gcc --version"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 2,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "gkGnB9WyHSXB",
        "outputId": "781c6870-be3d-4162-cae1-017ebf0c6043"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n",
            "Collecting openmim\n",
            "  Downloading openmim-0.3.7-py2.py3-none-any.whl (51 kB)\n",
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m51.3/51.3 kB\u001b[0m \u001b[31m536.0 kB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[?25hRequirement already satisfied: requests in /usr/local/lib/python3.9/dist-packages (from openmim) (2.27.1)\n",
            "Collecting model-index\n",
            "  Downloading model_index-0.1.11-py3-none-any.whl (34 kB)\n",
            "Requirement already satisfied: rich in /usr/local/lib/python3.9/dist-packages (from openmim) (13.3.3)\n",
            "Requirement already satisfied: tabulate in /usr/local/lib/python3.9/dist-packages (from openmim) (0.8.10)\n",
            "Requirement already satisfied: pandas in /usr/local/lib/python3.9/dist-packages (from openmim) (1.5.3)\n",
            "Requirement already satisfied: Click in /usr/local/lib/python3.9/dist-packages (from openmim) (8.1.3)\n",
            "Collecting colorama\n",
            "  Downloading colorama-0.4.6-py2.py3-none-any.whl (25 kB)\n",
            "Requirement already satisfied: pip>=19.3 in /usr/local/lib/python3.9/dist-packages (from openmim) (23.0.1)\n",
            "Collecting ordered-set\n",
            "  Downloading ordered_set-4.1.0-py3-none-any.whl (7.6 kB)\n",
            "Requirement already satisfied: markdown in /usr/local/lib/python3.9/dist-packages (from model-index->openmim) (3.4.3)\n",
            "Requirement already satisfied: pyyaml in /usr/local/lib/python3.9/dist-packages (from model-index->openmim) (6.0)\n",
            "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.9/dist-packages (from pandas->openmim) (2022.7.1)\n",
            "Requirement already satisfied: numpy>=1.20.3 in /usr/local/lib/python3.9/dist-packages (from pandas->openmim) (1.22.4)\n",
            "Requirement already satisfied: python-dateutil>=2.8.1 in /usr/local/lib/python3.9/dist-packages (from pandas->openmim) (2.8.2)\n",
            "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.9/dist-packages (from requests->openmim) (2022.12.7)\n",
            "Requirement already satisfied: charset-normalizer~=2.0.0 in /usr/local/lib/python3.9/dist-packages (from requests->openmim) (2.0.12)\n",
            "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.9/dist-packages (from requests->openmim) (1.26.15)\n",
            "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.9/dist-packages (from requests->openmim) (3.4)\n",
            "Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /usr/local/lib/python3.9/dist-packages (from rich->openmim) (2.14.0)\n",
            "Requirement already satisfied: markdown-it-py<3.0.0,>=2.2.0 in /usr/local/lib/python3.9/dist-packages (from rich->openmim) (2.2.0)\n",
            "Requirement already satisfied: mdurl~=0.1 in /usr/local/lib/python3.9/dist-packages (from markdown-it-py<3.0.0,>=2.2.0->rich->openmim) (0.1.2)\n",
            "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.9/dist-packages (from python-dateutil>=2.8.1->pandas->openmim) (1.16.0)\n",
            "Requirement already satisfied: importlib-metadata>=4.4 in /usr/local/lib/python3.9/dist-packages (from markdown->model-index->openmim) (6.3.0)\n",
            "Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.9/dist-packages (from importlib-metadata>=4.4->markdown->model-index->openmim) (3.15.0)\n",
            "Installing collected packages: ordered-set, colorama, model-index, openmim\n",
            "Successfully installed colorama-0.4.6 model-index-0.1.11 openmim-0.3.7 ordered-set-4.1.0\n",
            "/usr/local/lib/python3.9/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.\n",
            "  warnings.warn(\n",
            "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n",
            "Looking in links: https://download.openmmlab.com/mmcv/dist/cu118/torch2.0.0/index.html\n",
            "Collecting mmengine>=0.7.0\n",
            "  Downloading mmengine-0.7.2-py3-none-any.whl (366 kB)\n",
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m366.9/366.9 kB\u001b[0m \u001b[31m26.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[?25hRequirement already satisfied: pyyaml in /usr/local/lib/python3.9/dist-packages (from mmengine>=0.7.0) (6.0)\n",
            "Requirement already satisfied: rich in /usr/local/lib/python3.9/dist-packages (from mmengine>=0.7.0) (13.3.3)\n",
            "Requirement already satisfied: opencv-python>=3 in /usr/local/lib/python3.9/dist-packages (from mmengine>=0.7.0) (4.7.0.72)\n",
            "Collecting addict\n",
            "  Downloading addict-2.4.0-py3-none-any.whl (3.8 kB)\n",
            "Requirement already satisfied: matplotlib in /usr/local/lib/python3.9/dist-packages (from mmengine>=0.7.0) (3.7.1)\n",
            "Collecting yapf\n",
            "  Downloading yapf-0.32.0-py2.py3-none-any.whl (190 kB)\n",
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m190.2/190.2 kB\u001b[0m \u001b[31m25.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[?25hRequirement already satisfied: numpy in /usr/local/lib/python3.9/dist-packages (from mmengine>=0.7.0) (1.22.4)\n",
            "Requirement already satisfied: termcolor in /usr/local/lib/python3.9/dist-packages (from mmengine>=0.7.0) (2.2.0)\n",
            "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.9/dist-packages (from matplotlib->mmengine>=0.7.0) (3.0.9)\n",
            "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.9/dist-packages (from matplotlib->mmengine>=0.7.0) (4.39.3)\n",
            "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.9/dist-packages (from matplotlib->mmengine>=0.7.0) (1.0.7)\n",
            "Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.9/dist-packages (from matplotlib->mmengine>=0.7.0) (8.4.0)\n",
            "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.9/dist-packages (from matplotlib->mmengine>=0.7.0) (0.11.0)\n",
            "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.9/dist-packages (from matplotlib->mmengine>=0.7.0) (1.4.4)\n",
            "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.9/dist-packages (from matplotlib->mmengine>=0.7.0) (23.0)\n",
            "Requirement already satisfied: importlib-resources>=3.2.0 in /usr/local/lib/python3.9/dist-packages (from matplotlib->mmengine>=0.7.0) (5.12.0)\n",
            "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.9/dist-packages (from matplotlib->mmengine>=0.7.0) (2.8.2)\n",
            "Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /usr/local/lib/python3.9/dist-packages (from rich->mmengine>=0.7.0) (2.14.0)\n",
            "Requirement already satisfied: markdown-it-py<3.0.0,>=2.2.0 in /usr/local/lib/python3.9/dist-packages (from rich->mmengine>=0.7.0) (2.2.0)\n",
            "Requirement already satisfied: zipp>=3.1.0 in /usr/local/lib/python3.9/dist-packages (from importlib-resources>=3.2.0->matplotlib->mmengine>=0.7.0) (3.15.0)\n",
            "Requirement already satisfied: mdurl~=0.1 in /usr/local/lib/python3.9/dist-packages (from markdown-it-py<3.0.0,>=2.2.0->rich->mmengine>=0.7.0) (0.1.2)\n",
            "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.9/dist-packages (from python-dateutil>=2.7->matplotlib->mmengine>=0.7.0) (1.16.0)\n",
            "Installing collected packages: yapf, addict, mmengine\n",
            "/usr/local/lib/python3.9/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.\n",
            "  warnings.warn(\n",
            "/usr/local/lib/python3.9/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.\n",
            "  warnings.warn(\n",
            "/usr/local/lib/python3.9/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.\n",
            "  warnings.warn(\n",
            "/usr/local/lib/python3.9/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.\n",
            "  warnings.warn(\n",
            "Successfully installed addict-2.4.0 mmengine-0.7.2 yapf-0.32.0\n",
            "/usr/local/lib/python3.9/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.\n",
            "  warnings.warn(\n",
            "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n",
            "Looking in links: https://download.openmmlab.com/mmcv/dist/cu118/torch2.0.0/index.html\n",
            "Collecting mmcv>=2.0.0rc4\n",
            "  Downloading https://download.openmmlab.com/mmcv/dist/cu118/torch2.0.0/mmcv-2.0.0-cp39-cp39-manylinux1_x86_64.whl (74.4 MB)\n",
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m74.4/74.4 MB\u001b[0m \u001b[31m12.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[?25hRequirement already satisfied: mmengine>=0.2.0 in /usr/local/lib/python3.9/dist-packages (from mmcv>=2.0.0rc4) (0.7.2)\n",
            "Requirement already satisfied: Pillow in /usr/local/lib/python3.9/dist-packages (from mmcv>=2.0.0rc4) (8.4.0)\n",
            "Requirement already satisfied: addict in /usr/local/lib/python3.9/dist-packages (from mmcv>=2.0.0rc4) (2.4.0)\n",
            "Requirement already satisfied: pyyaml in /usr/local/lib/python3.9/dist-packages (from mmcv>=2.0.0rc4) (6.0)\n",
            "Requirement already satisfied: numpy in /usr/local/lib/python3.9/dist-packages (from mmcv>=2.0.0rc4) (1.22.4)\n",
            "Requirement already satisfied: packaging in /usr/local/lib/python3.9/dist-packages (from mmcv>=2.0.0rc4) (23.0)\n",
            "Requirement already satisfied: yapf in /usr/local/lib/python3.9/dist-packages (from mmcv>=2.0.0rc4) (0.32.0)\n",
            "Requirement already satisfied: opencv-python>=3 in /usr/local/lib/python3.9/dist-packages (from mmcv>=2.0.0rc4) (4.7.0.72)\n",
            "Requirement already satisfied: termcolor in /usr/local/lib/python3.9/dist-packages (from mmengine>=0.2.0->mmcv>=2.0.0rc4) (2.2.0)\n",
            "Requirement already satisfied: matplotlib in /usr/local/lib/python3.9/dist-packages (from mmengine>=0.2.0->mmcv>=2.0.0rc4) (3.7.1)\n",
            "Requirement already satisfied: rich in /usr/local/lib/python3.9/dist-packages (from mmengine>=0.2.0->mmcv>=2.0.0rc4) (13.3.3)\n",
            "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.9/dist-packages (from matplotlib->mmengine>=0.2.0->mmcv>=2.0.0rc4) (3.0.9)\n",
            "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.9/dist-packages (from matplotlib->mmengine>=0.2.0->mmcv>=2.0.0rc4) (1.0.7)\n",
            "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.9/dist-packages (from matplotlib->mmengine>=0.2.0->mmcv>=2.0.0rc4) (4.39.3)\n",
            "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.9/dist-packages (from matplotlib->mmengine>=0.2.0->mmcv>=2.0.0rc4) (0.11.0)\n",
            "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.9/dist-packages (from matplotlib->mmengine>=0.2.0->mmcv>=2.0.0rc4) (2.8.2)\n",
            "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.9/dist-packages (from matplotlib->mmengine>=0.2.0->mmcv>=2.0.0rc4) (1.4.4)\n",
            "Requirement already satisfied: importlib-resources>=3.2.0 in /usr/local/lib/python3.9/dist-packages (from matplotlib->mmengine>=0.2.0->mmcv>=2.0.0rc4) (5.12.0)\n",
            "Requirement already satisfied: markdown-it-py<3.0.0,>=2.2.0 in /usr/local/lib/python3.9/dist-packages (from rich->mmengine>=0.2.0->mmcv>=2.0.0rc4) (2.2.0)\n",
            "Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /usr/local/lib/python3.9/dist-packages (from rich->mmengine>=0.2.0->mmcv>=2.0.0rc4) (2.14.0)\n",
            "Requirement already satisfied: zipp>=3.1.0 in /usr/local/lib/python3.9/dist-packages (from importlib-resources>=3.2.0->matplotlib->mmengine>=0.2.0->mmcv>=2.0.0rc4) (3.15.0)\n",
            "Requirement already satisfied: mdurl~=0.1 in /usr/local/lib/python3.9/dist-packages (from markdown-it-py<3.0.0,>=2.2.0->rich->mmengine>=0.2.0->mmcv>=2.0.0rc4) (0.1.2)\n",
            "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.9/dist-packages (from python-dateutil>=2.7->matplotlib->mmengine>=0.2.0->mmcv>=2.0.0rc4) (1.16.0)\n",
            "Installing collected packages: mmcv\n",
            "/usr/local/lib/python3.9/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.\n",
            "  warnings.warn(\n",
            "/usr/local/lib/python3.9/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.\n",
            "  warnings.warn(\n",
            "Successfully installed mmcv-2.0.0\n",
            "Cloning into 'mmdetection'...\n",
            "remote: Enumerating objects: 35338, done.\u001b[K\n",
            "remote: Counting objects: 100% (31/31), done.\u001b[K\n",
            "remote: Compressing objects: 100% (31/31), done.\u001b[K\n",
            "remote: Total 35338 (delta 2), reused 8 (delta 0), pack-reused 35307\u001b[K\n",
            "Receiving objects: 100% (35338/35338), 47.30 MiB | 16.88 MiB/s, done.\n",
            "Resolving deltas: 100% (24919/24919), done.\n",
            "/content/mmdetection\n",
            "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n",
            "Obtaining file:///content/mmdetection\n",
            "  Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
            "Requirement already satisfied: matplotlib in /usr/local/lib/python3.9/dist-packages (from mmdet==3.0.0) (3.7.1)\n",
            "Requirement already satisfied: numpy in /usr/local/lib/python3.9/dist-packages (from mmdet==3.0.0) (1.22.4)\n",
            "Requirement already satisfied: pycocotools in /usr/local/lib/python3.9/dist-packages (from mmdet==3.0.0) (2.0.6)\n",
            "Requirement already satisfied: scipy in /usr/local/lib/python3.9/dist-packages (from mmdet==3.0.0) (1.10.1)\n",
            "Requirement already satisfied: shapely in /usr/local/lib/python3.9/dist-packages (from mmdet==3.0.0) (2.0.1)\n",
            "Requirement already satisfied: six in /usr/local/lib/python3.9/dist-packages (from mmdet==3.0.0) (1.16.0)\n",
            "Collecting terminaltables\n",
            "  Downloading terminaltables-3.1.10-py2.py3-none-any.whl (15 kB)\n",
            "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.9/dist-packages (from matplotlib->mmdet==3.0.0) (1.4.4)\n",
            "Requirement already satisfied: importlib-resources>=3.2.0 in /usr/local/lib/python3.9/dist-packages (from matplotlib->mmdet==3.0.0) (5.12.0)\n",
            "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.9/dist-packages (from matplotlib->mmdet==3.0.0) (3.0.9)\n",
            "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.9/dist-packages (from matplotlib->mmdet==3.0.0) (1.0.7)\n",
            "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.9/dist-packages (from matplotlib->mmdet==3.0.0) (0.11.0)\n",
            "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.9/dist-packages (from matplotlib->mmdet==3.0.0) (2.8.2)\n",
            "Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.9/dist-packages (from matplotlib->mmdet==3.0.0) (8.4.0)\n",
            "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.9/dist-packages (from matplotlib->mmdet==3.0.0) (23.0)\n",
            "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.9/dist-packages (from matplotlib->mmdet==3.0.0) (4.39.3)\n",
            "Requirement already satisfied: zipp>=3.1.0 in /usr/local/lib/python3.9/dist-packages (from importlib-resources>=3.2.0->matplotlib->mmdet==3.0.0) (3.15.0)\n",
            "Installing collected packages: terminaltables, mmdet\n",
            "  Running setup.py develop for mmdet\n",
            "Successfully installed mmdet-3.0.0 terminaltables-3.1.10\n"
          ]
        }
      ],
      "source": [
        "# install dependencies: (use cu111 because colab has CUDA 11.1)\n",
        "%pip install -U openmim\n",
        "!mim install \"mmengine>=0.7.0\"\n",
        "!mim install \"mmcv>=2.0.0rc4\"\n",
        "\n",
        "# Install mmdetection\n",
        "!rm -rf mmdetection\n",
        "!git clone https://github.com/open-mmlab/mmdetection.git\n",
        "%cd mmdetection\n",
        "\n",
        "%pip install -e ."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 3,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "_YeUiqAoCaoV",
        "outputId": "98b02135-08f8-4142-9b59-80056f29192d"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "sys.platform: linux\n",
            "Python: 3.9.16 (main, Dec  7 2022, 01:11:51) [GCC 9.4.0]\n",
            "CUDA available: True\n",
            "numpy_random_seed: 2147483648\n",
            "GPU 0: Tesla T4\n",
            "CUDA_HOME: /usr/local/cuda\n",
            "NVCC: Cuda compilation tools, release 11.8, V11.8.89\n",
            "GCC: x86_64-linux-gnu-gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0\n",
            "PyTorch: 2.0.0+cu118\n",
            "PyTorch compiling details: PyTorch built with:\n",
            "  - GCC 9.3\n",
            "  - C++ Version: 201703\n",
            "  - Intel(R) oneAPI Math Kernel Library Version 2022.2-Product Build 20220804 for Intel(R) 64 architecture applications\n",
            "  - Intel(R) MKL-DNN v2.7.3 (Git Hash 6dbeffbae1f23cbbeae17adb7b5b13f1f37c080e)\n",
            "  - OpenMP 201511 (a.k.a. OpenMP 4.5)\n",
            "  - LAPACK is enabled (usually provided by MKL)\n",
            "  - NNPACK is enabled\n",
            "  - CPU capability usage: AVX2\n",
            "  - CUDA Runtime 11.8\n",
            "  - NVCC architecture flags: -gencode;arch=compute_37,code=sm_37;-gencode;arch=compute_50,code=sm_50;-gencode;arch=compute_60,code=sm_60;-gencode;arch=compute_70,code=sm_70;-gencode;arch=compute_75,code=sm_75;-gencode;arch=compute_80,code=sm_80;-gencode;arch=compute_86,code=sm_86;-gencode;arch=compute_90,code=sm_90\n",
            "  - CuDNN 8.7\n",
            "  - Magma 2.6.1\n",
            "  - Build settings: BLAS_INFO=mkl, BUILD_TYPE=Release, CUDA_VERSION=11.8, CUDNN_VERSION=8.7.0, CXX_COMPILER=/opt/rh/devtoolset-9/root/usr/bin/c++, CXX_FLAGS= -D_GLIBCXX_USE_CXX11_ABI=0 -fabi-version=11 -Wno-deprecated -fvisibility-inlines-hidden -DUSE_PTHREADPOOL -DNDEBUG -DUSE_KINETO -DLIBKINETO_NOROCTRACER -DUSE_FBGEMM -DUSE_QNNPACK -DUSE_PYTORCH_QNNPACK -DUSE_XNNPACK -DSYMBOLICATE_MOBILE_DEBUG_HANDLE -O2 -fPIC -Wall -Wextra -Werror=return-type -Werror=non-virtual-dtor -Werror=bool-operation -Wnarrowing -Wno-missing-field-initializers -Wno-type-limits -Wno-array-bounds -Wno-unknown-pragmas -Wunused-local-typedefs -Wno-unused-parameter -Wno-unused-function -Wno-unused-result -Wno-strict-overflow -Wno-strict-aliasing -Wno-error=deprecated-declarations -Wno-stringop-overflow -Wno-psabi -Wno-error=pedantic -Wno-error=redundant-decls -Wno-error=old-style-cast -fdiagnostics-color=always -faligned-new -Wno-unused-but-set-variable -Wno-maybe-uninitialized -fno-math-errno -fno-trapping-math -Werror=format -Werror=cast-function-type -Wno-stringop-overflow, LAPACK_INFO=mkl, PERF_WITH_AVX=1, PERF_WITH_AVX2=1, PERF_WITH_AVX512=1, TORCH_DISABLE_GPU_ASSERTS=ON, TORCH_VERSION=2.0.0, USE_CUDA=ON, USE_CUDNN=ON, USE_EXCEPTION_PTR=1, USE_GFLAGS=OFF, USE_GLOG=OFF, USE_MKL=ON, USE_MKLDNN=ON, USE_MPI=OFF, USE_NCCL=1, USE_NNPACK=ON, USE_OPENMP=ON, USE_ROCM=OFF, \n",
            "\n",
            "TorchVision: 0.15.1+cu118\n",
            "OpenCV: 4.7.0\n",
            "MMEngine: 0.7.2\n",
            "MMDetection: 3.0.0+ecac3a7\n"
          ]
        }
      ],
      "source": [
        "from mmengine.utils import get_git_hash\n",
        "from mmengine.utils.dl_utils import collect_env as collect_base_env\n",
        "\n",
        "import mmdet\n",
        "\n",
        "\n",
        "def collect_env():\n",
        "    \"\"\"Collect the information of the running environments.\"\"\"\n",
        "    env_info = collect_base_env()\n",
        "    env_info['MMDetection'] = f'{mmdet.__version__}+{get_git_hash()[:7]}'\n",
        "    return env_info\n",
        "\n",
        "\n",
        "if __name__ == '__main__':\n",
        "    for name, val in collect_env().items():\n",
        "        print(f'{name}: {val}')"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "gi9zw03oM4CH"
      },
      "source": [
        "## Perform Inference with An MMDet detector\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "s99mDGBG1S1z"
      },
      "source": [
        "### An efficient Real-Time one-stage detector\n",
        "\n",
        "In this tutorial, we use RTMDet, an efficient Real-Time one-stage detector as an example.\n",
        "\n",
        "The high-level architecture of RTMDet is shown in the following picture. More details can be found in the [paper](https://arxiv.org/abs/2212.07784).\n",
        "\n",
        "![RTMDet](https://user-images.githubusercontent.com/27466624/225922103-404064c1-3cb0-4ab5-9388-79f9517dcdb0.jpg)\n",
        "\n",
        "To obtain a more efficient model architecture, MMDetection explore an architecture that has compatible capacities in the backbone and neck, constructed by a basic building block that consists of large-kernel depth-wise convolutions. MMDetection further introduce soft labels when calculating matching costs in the dynamic label assignment to improve accuracy. Together with better training techniques, the resulting object detector, named RTMDet, achieves 52.8% AP on COCO with 300+ FPS on an NVIDIA 3090 GPU, outperforming the current mainstream industrial detectors. RTMDet achieves the best parameter-accuracy trade-off with tiny/small/medium/large/extra-large model sizes for various application scenarios, and obtains new state-of-the-art performance on real-time instance segmentation and rotated object detection. We hope the experimental results can provide new insights into designing versatile real-time object detectors for many object recognition tasks.\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 4,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "j4doHX4exvS1",
        "outputId": "9eb9d460-7e3f-4bbc-f9e6-5823773375d3"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "processing rtmdet_tiny_8xb32-300e_coco...\n",
            "\u001b[2Kdownloading \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m54.9/54.9 MiB\u001b[0m \u001b[31m54.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[?25h\u001b[32mSuccessfully downloaded rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth to /content/mmdetection/checkpoints\u001b[0m\n",
            "\u001b[32mSuccessfully dumped rtmdet_tiny_8xb32-300e_coco.py to /content/mmdetection/checkpoints\u001b[0m\n"
          ]
        }
      ],
      "source": [
        "# We download the pre-trained checkpoints for inference and finetuning.\n",
        "!mkdir ./checkpoints\n",
        "!mim download mmdet --config rtmdet_tiny_8xb32-300e_coco --dest ./checkpoints"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "fLgFRMtP91ue"
      },
      "source": [
        "### Inference the detector\n",
        "\n",
        "Since the model is successfully created and loaded, let's see how good it is. We use the high-level API `DetInferencer` implemented in the MMDetection. This API is created to ease the inference process. The details of the codes can be found [here](https://github.com/open-mmlab/mmdetection/blob/dev-3.x/mmdet/apis/det_inferencer.py)."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 5,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 244,
          "referenced_widgets": [
            "b1188048a1f04c2fa77c0d3829da39bd",
            "534561e3c4804bae96a30d44493d701d"
          ]
        },
        "id": "Wi6DRpsQPEmV",
        "outputId": "0b0a14bc-fd10-4ec4-a585-e1ddefc33973"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Loads checkpoint by local backend from path: ./checkpoints/rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth\n",
            "The model and loaded state dict do not match exactly\n",
            "\n",
            "unexpected key in source state_dict: data_preprocessor.mean, data_preprocessor.std\n",
            "\n",
            "04/17 10:28:19 - mmengine - WARNING - Failed to search registry with scope \"mmdet\" in the \"function\" registry tree. As a workaround, the current \"function\" registry in \"mmengine\" is used to build instance. This may cause unexpected failure when running the built modules. Please check whether \"mmdet\" is a correct scope, or whether the registry is initialized.\n",
            "04/17 10:28:19 - mmengine - WARNING - `Visualizer` backend is not initialized because save_dir is None.\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "Output()"
            ],
            "application/vnd.jupyter.widget-view+json": {
              "version_major": 2,
              "version_minor": 0,
              "model_id": "b1188048a1f04c2fa77c0d3829da39bd"
            }
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "/usr/local/lib/python3.9/dist-packages/torch/functional.py:504: UserWarning: torch.meshgrid: in an upcoming \n",
              "release, it will be required to pass the indexing argument. (Triggered internally at \n",
              "../aten/src/ATen/native/TensorShape.cpp:3483.)\n",
              "  return _VF.meshgrid(tensors, **kwargs)  # type: ignore[attr-defined]\n"
            ],
            "text/html": [
              "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">/usr/local/lib/python3.9/dist-packages/torch/functional.py:504: UserWarning: torch.meshgrid: in an upcoming \n",
              "release, it will be required to pass the indexing argument. (Triggered internally at \n",
              "../aten/src/ATen/native/TensorShape.cpp:3483.)\n",
              "  return _VF.meshgrid(tensors, **kwargs)  # type: ignore[attr-defined]\n",
              "</pre>\n"
            ]
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [],
            "text/html": [
              "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
            ]
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "\n"
            ],
            "text/html": [
              "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">\n",
              "</pre>\n"
            ]
          },
          "metadata": {}
        }
      ],
      "source": [
        "from mmdet.apis import DetInferencer\n",
        "\n",
        "# Choose to use a config\n",
        "model_name = 'rtmdet_tiny_8xb32-300e_coco'\n",
        "# Setup a checkpoint file to load\n",
        "checkpoint = './checkpoints/rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth'\n",
        "\n",
        "# Set the device to be used for evaluation\n",
        "device = 'cuda:0'\n",
        "\n",
        "# Initialize the DetInferencer\n",
        "inferencer = DetInferencer(model_name, checkpoint, device)\n",
        "\n",
        "# Use the detector to do inference\n",
        "img = './demo/demo.jpg'\n",
        "result = inferencer(img, out_dir='./output')"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 6,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        },
        "id": "m6a8T4goU8Sq",
        "outputId": "68005045-d741-4f53-b59b-16881337bebf"
      },
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "\u001b[1m{\u001b[0m\n",
              "\u001b[2;32m│   \u001b[0m\u001b[32m'predictions'\u001b[0m: \u001b[1m[\u001b[0m\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m{\u001b[0m\n",
              "\u001b[2;32m│   │   │   \u001b[0m\u001b[32m'bboxes'\u001b[0m: \u001b[1m[\u001b[0m\n",
              "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m221.37188720703125\u001b[0m, \u001b[1;36m176.12808227539062\u001b[0m, \u001b[1;36m456.25811767578125\u001b[0m, \u001b[1;36m383.2401428222656\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m295.3505859375\u001b[0m, \u001b[1;36m117.18350219726562\u001b[0m, \u001b[1;36m378.571533203125\u001b[0m, \u001b[1;36m150.27117919921875\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m190.57350158691406\u001b[0m, \u001b[1;36m109.70985412597656\u001b[0m, \u001b[1;36m299.52215576171875\u001b[0m, \u001b[1;36m155.0396270751953\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[1m[\u001b[0m\u001b[1;36m431.36944580078125\u001b[0m, \u001b[1;36m104.98468780517578\u001b[0m, \u001b[1;36m484.879150390625\u001b[0m, \u001b[1;36m131.94033813476562\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   │   │   \u001b[0m\u001b[33m...\u001b[0m +\u001b[1;36m296\u001b[0m\n",
              "\u001b[2;32m│   │   │   \u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   │   \u001b[0m\u001b[32m'labels'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1;36m13\u001b[0m, \u001b[1;36m2\u001b[0m, \u001b[1;36m2\u001b[0m, \u001b[1;36m2\u001b[0m, \u001b[33m...\u001b[0m +\u001b[1;36m296\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   │   \u001b[0m\u001b[32m'scores'\u001b[0m: \u001b[1m[\u001b[0m\u001b[1;36m0.8703235387802124\u001b[0m, \u001b[1;36m0.7677358984947205\u001b[0m, \u001b[1;36m0.7427828311920166\u001b[0m, \u001b[1;36m0.6994596123695374\u001b[0m, \u001b[33m...\u001b[0m +\u001b[1;36m296\u001b[0m\u001b[1m]\u001b[0m\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m}\u001b[0m\n",
              "\u001b[2;32m│   \u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   \u001b[0m\u001b[32m'visualization'\u001b[0m: \u001b[1m[\u001b[0m\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1;35marray\u001b[0m\u001b[1m(\u001b[0m\u001b[1m[\u001b[0m\u001b[1m[\u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m28\u001b[0m,  \u001b[1;36m48\u001b[0m,  \u001b[1;36m13\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m37\u001b[0m,  \u001b[1;36m63\u001b[0m,  \u001b[1;36m28\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m30\u001b[0m,  \u001b[1;36m64\u001b[0m,  \u001b[1;36m27\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[33m...\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m23\u001b[0m,  \u001b[1;36m47\u001b[0m,  \u001b[1;36m31\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m31\u001b[0m,  \u001b[1;36m67\u001b[0m,  \u001b[1;36m31\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m54\u001b[0m,  \u001b[1;36m92\u001b[0m,  \u001b[1;36m17\u001b[0m\u001b[1m]\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│      \u001b[0m\n",
              "\u001b[2;32m│      \u001b[0m\u001b[1m[\u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m23\u001b[0m,  \u001b[1;36m42\u001b[0m,   \u001b[1;36m0\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m25\u001b[0m,  \u001b[1;36m50\u001b[0m,   \u001b[1;36m8\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m30\u001b[0m,  \u001b[1;36m62\u001b[0m,  \u001b[1;36m21\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[33m...\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m92\u001b[0m, \u001b[1;36m114\u001b[0m, \u001b[1;36m102\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m16\u001b[0m,  \u001b[1;36m53\u001b[0m,  \u001b[1;36m12\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m44\u001b[0m,  \u001b[1;36m75\u001b[0m,  \u001b[1;36m16\u001b[0m\u001b[1m]\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│      \u001b[0m\n",
              "\u001b[2;32m│      \u001b[0m\u001b[1m[\u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m20\u001b[0m,  \u001b[1;36m50\u001b[0m,   \u001b[1;36m0\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m25\u001b[0m,  \u001b[1;36m59\u001b[0m,   \u001b[1;36m8\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m29\u001b[0m,  \u001b[1;36m66\u001b[0m,  \u001b[1;36m23\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[33m...\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m47\u001b[0m,  \u001b[1;36m70\u001b[0m,  \u001b[1;36m44\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m29\u001b[0m,  \u001b[1;36m60\u001b[0m,  \u001b[1;36m18\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m54\u001b[0m,  \u001b[1;36m77\u001b[0m,  \u001b[1;36m31\u001b[0m\u001b[1m]\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│      \u001b[0m\n",
              "\u001b[2;32m│      \u001b[0m\u001b[33m...\u001b[0m,\n",
              "\u001b[2;32m│      \u001b[0m\n",
              "\u001b[2;32m│      \u001b[0m\u001b[1m[\u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m63\u001b[0m,  \u001b[1;36m68\u001b[0m,  \u001b[1;36m45\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m58\u001b[0m,  \u001b[1;36m66\u001b[0m,  \u001b[1;36m27\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m74\u001b[0m,  \u001b[1;36m84\u001b[0m,  \u001b[1;36m49\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[33m...\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m32\u001b[0m,  \u001b[1;36m46\u001b[0m,  \u001b[1;36m23\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m56\u001b[0m,  \u001b[1;36m76\u001b[0m,  \u001b[1;36m39\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m31\u001b[0m,  \u001b[1;36m47\u001b[0m,  \u001b[1;36m18\u001b[0m\u001b[1m]\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│      \u001b[0m\n",
              "\u001b[2;32m│      \u001b[0m\u001b[1m[\u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m60\u001b[0m,  \u001b[1;36m66\u001b[0m,  \u001b[1;36m40\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m45\u001b[0m,  \u001b[1;36m55\u001b[0m,  \u001b[1;36m18\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m83\u001b[0m,  \u001b[1;36m92\u001b[0m,  \u001b[1;36m61\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[33m...\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m63\u001b[0m,  \u001b[1;36m77\u001b[0m,  \u001b[1;36m54\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m47\u001b[0m,  \u001b[1;36m67\u001b[0m,  \u001b[1;36m30\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m35\u001b[0m,  \u001b[1;36m52\u001b[0m,  \u001b[1;36m20\u001b[0m\u001b[1m]\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│      \u001b[0m\n",
              "\u001b[2;32m│      \u001b[0m\u001b[1m[\u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m64\u001b[0m,  \u001b[1;36m70\u001b[0m,  \u001b[1;36m42\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m85\u001b[0m,  \u001b[1;36m95\u001b[0m,  \u001b[1;36m60\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m66\u001b[0m,  \u001b[1;36m75\u001b[0m,  \u001b[1;36m48\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[33m...\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m37\u001b[0m,  \u001b[1;36m51\u001b[0m,  \u001b[1;36m28\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m59\u001b[0m,  \u001b[1;36m79\u001b[0m,  \u001b[1;36m42\u001b[0m\u001b[1m]\u001b[0m,\n",
              "\u001b[2;32m│   │   \u001b[0m\u001b[1m[\u001b[0m \u001b[1;36m44\u001b[0m,  \u001b[1;36m61\u001b[0m,  \u001b[1;36m29\u001b[0m\u001b[1m]\u001b[0m\u001b[1m]\u001b[0m\u001b[1m]\u001b[0m, \u001b[33mdtype\u001b[0m=\u001b[35muint8\u001b[0m\u001b[1m)\u001b[0m\n",
              "\u001b[2;32m│   \u001b[0m\u001b[1m]\u001b[0m\n",
              "\u001b[1m}\u001b[0m\n"
            ],
            "text/html": [
              "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">{</span>\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   </span><span style=\"color: #008000; text-decoration-color: #008000\">'predictions'</span>: <span style=\"font-weight: bold\">[</span>\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">{</span>\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   │   </span><span style=\"color: #008000; text-decoration-color: #008000\">'bboxes'</span>: <span style=\"font-weight: bold\">[</span>\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   │   │   </span><span style=\"font-weight: bold\">[</span><span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">221.37188720703125</span>, <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">176.12808227539062</span>, <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">456.25811767578125</span>, <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">383.2401428222656</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   │   │   </span><span style=\"font-weight: bold\">[</span><span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">295.3505859375</span>, <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">117.18350219726562</span>, <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">378.571533203125</span>, <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">150.27117919921875</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   │   │   </span><span style=\"font-weight: bold\">[</span><span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">190.57350158691406</span>, <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">109.70985412597656</span>, <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">299.52215576171875</span>, <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">155.0396270751953</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   │   │   </span><span style=\"font-weight: bold\">[</span><span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">431.36944580078125</span>, <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">104.98468780517578</span>, <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">484.879150390625</span>, <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">131.94033813476562</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   │   │   </span><span style=\"color: #808000; text-decoration-color: #808000\">...</span> +<span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">296</span>\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   │   </span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   │   </span><span style=\"color: #008000; text-decoration-color: #008000\">'labels'</span>: <span style=\"font-weight: bold\">[</span><span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">13</span>, <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">2</span>, <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">2</span>, <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">2</span>, <span style=\"color: #808000; text-decoration-color: #808000\">...</span> +<span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">296</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   │   </span><span style=\"color: #008000; text-decoration-color: #008000\">'scores'</span>: <span style=\"font-weight: bold\">[</span><span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.8703235387802124</span>, <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.7677358984947205</span>, <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.7427828311920166</span>, <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.6994596123695374</span>, <span style=\"color: #808000; text-decoration-color: #808000\">...</span> +<span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">296</span><span style=\"font-weight: bold\">]</span>\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">}</span>\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   </span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   </span><span style=\"color: #008000; text-decoration-color: #008000\">'visualization'</span>: <span style=\"font-weight: bold\">[</span>\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">array</span><span style=\"font-weight: bold\">([[[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">28</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">48</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">13</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">37</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">63</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">28</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">30</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">64</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">27</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"color: #808000; text-decoration-color: #808000\">...</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">23</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">47</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">31</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">31</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">67</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">31</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">54</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">92</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">17</span><span style=\"font-weight: bold\">]]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│      </span>\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│      </span><span style=\"font-weight: bold\">[[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">23</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">42</span>,   <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">25</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">50</span>,   <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">8</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">30</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">62</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">21</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"color: #808000; text-decoration-color: #808000\">...</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">92</span>, <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">114</span>, <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">102</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">16</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">53</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">12</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">44</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">75</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">16</span><span style=\"font-weight: bold\">]]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│      </span>\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│      </span><span style=\"font-weight: bold\">[[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">20</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">50</span>,   <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">25</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">59</span>,   <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">8</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">29</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">66</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">23</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"color: #808000; text-decoration-color: #808000\">...</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">47</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">70</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">44</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">29</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">60</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">18</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">54</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">77</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">31</span><span style=\"font-weight: bold\">]]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│      </span>\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│      </span><span style=\"color: #808000; text-decoration-color: #808000\">...</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│      </span>\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│      </span><span style=\"font-weight: bold\">[[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">63</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">68</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">45</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">58</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">66</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">27</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">74</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">84</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">49</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"color: #808000; text-decoration-color: #808000\">...</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">32</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">46</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">23</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">56</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">76</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">39</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">31</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">47</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">18</span><span style=\"font-weight: bold\">]]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│      </span>\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│      </span><span style=\"font-weight: bold\">[[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">60</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">66</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">40</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">45</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">55</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">18</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">83</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">92</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">61</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"color: #808000; text-decoration-color: #808000\">...</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">63</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">77</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">54</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">47</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">67</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">30</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">35</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">52</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">20</span><span style=\"font-weight: bold\">]]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│      </span>\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│      </span><span style=\"font-weight: bold\">[[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">64</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">70</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">42</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">85</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">95</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">60</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">66</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">75</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">48</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"color: #808000; text-decoration-color: #808000\">...</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">37</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">51</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">28</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">59</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">79</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">42</span><span style=\"font-weight: bold\">]</span>,\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   │   </span><span style=\"font-weight: bold\">[</span> <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">44</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">61</span>,  <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">29</span><span style=\"font-weight: bold\">]]]</span>, <span style=\"color: #808000; text-decoration-color: #808000\">dtype</span>=<span style=\"color: #800080; text-decoration-color: #800080\">uint8</span><span style=\"font-weight: bold\">)</span>\n",
              "<span style=\"color: #7fbf7f; text-decoration-color: #7fbf7f\">│   </span><span style=\"font-weight: bold\">]</span>\n",
              "<span style=\"font-weight: bold\">}</span>\n",
              "</pre>\n"
            ]
          },
          "metadata": {}
        }
      ],
      "source": [
        "# Show the structure of result dict\n",
        "from rich.pretty import pprint\n",
        "pprint(result, max_length=4)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 7,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 444
        },
        "id": "UsJU5D-QPX8L",
        "outputId": "766f3211-301b-4a89-ae9d-898a92181c67"
      },
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=640x427 at 0x7FA9DC923910>"
            ],
            "image/png": "[encoded data, 835468 characters]\n"
          },
          "metadata": {},
          "execution_count": 7
        }
      ],
      "source": [
        "# Show the output image\n",
        "from PIL import Image\n",
        "Image.open('./output/vis/demo.jpg')"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "7GrWIJywLV-V"
      },
      "source": [
        "## Train with customized datasets\n",
        "\n",
        "In this part, you will know how to train predefined models with customized datasets and then test it. We use the [balloon dataset](https://github.com/matterport/Mask_RCNN/tree/master/samples/balloon) as an example to describe the whole process.\n",
        "\n",
        "The basic steps are as below:\n",
        "\n",
        "1. Prepare the customized dataset\n",
        "2. Prepare a config\n",
        "3. Train, test, and infer models on the customized dataset.\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "E73y5Lru-wBx"
      },
      "source": [
        "### Prepare the customized dataset\n",
        "\n",
        "There are three ways to support a new dataset in MMDetection:\n",
        "\n",
        "1. Reorganize the dataset into COCO format.\n",
        "2. Reorganize the dataset into a middle format.\n",
        "3. Implement a new dataset.\n",
        "\n",
        "Usually, we recommend using the first two methods which are usually easier than the third.\n",
        "\n",
        "In this tutorial, we use the ballon dataset an example of converting the data into COCO format.\n",
        "\n",
        "**Note**: Datasets and metrics have been decoupled except CityScapes since MMDetection 3.0. Therefore, users can use any kind of evaluation metrics for any format of datasets during validation. For example: evaluate on COCO dataset with VOC metric, or evaluate on OpenImages dataset with both VOC and COCO metrics."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 8,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "sbJhEsckU8UX",
        "outputId": "b9fdd1b1-5591-41b9-b27c-cadccac9aafa"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Downloading https://download.openmmlab.com/mmyolo/data/balloon_dataset.zip to data/balloon_dataset.zip\n",
            "100% 36.9M/36.9M [00:01<00:00, 25.0MB/s]\n",
            "Unzipping balloon_dataset.zip\n"
          ]
        }
      ],
      "source": [
        "# Download the data and unzip it\n",
        "!python tools/misc/download_dataset.py --dataset-name balloon --save-dir data --unzip"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "gmMpkzs2U8UY"
      },
      "source": [
        "#### COCO annotation format\n",
        "The necessary keys of COCO format for instance segmentation are as below, for the complete details, please refer [here](https://cocodataset.org/#format-data).\n",
        "\n",
        "```json\n",
        "{\n",
        "    \"images\": [image],\n",
        "    \"annotations\": [annotation],\n",
        "    \"categories\": [category]\n",
        "}\n",
        "image = {\n",
        "    \"id\": int,\n",
        "    \"width\": int,\n",
        "    \"height\": int,\n",
        "    \"file_name\": str,\n",
        "}\n",
        "annotation = {\n",
        "    \"id\": int,\n",
        "    \"image_id\": int,\n",
        "    \"category_id\": int,\n",
        "    \"segmentation\": RLE or [polygon],\n",
        "    \"area\": float,\n",
        "    \"bbox\": [x,y,width,height], # (x, y) are the coordinates of the upper left corner of the bbox\n",
        "    \"iscrowd\": 0 or 1,\n",
        "}\n",
        "categories = [{\n",
        "    \"id\": int,\n",
        "    \"name\": str,\n",
        "    \"supercategory\": str,\n",
        "}]\n",
        "```\n",
        "\n",
        "Assume we use the balloon dataset.\n",
        "After downloading the data, we need to implement a function to convert the annotation format into the COCO format. Then we can use implemented `CocoDataset` to load the data and perform training and evaluation.\n",
        "\n",
        "If you take a look at the dataset, you will find the dataset format is as below:\n",
        "\n",
        "```json\n",
        "{'base64_img_data': '',\n",
        " 'file_attributes': {},\n",
        " 'filename': '34020010494_e5cb88e1c4_k.jpg',\n",
        " 'fileref': '',\n",
        " 'regions': {'0': {'region_attributes': {},\n",
        "   'shape_attributes': {'all_points_x': [1020,\n",
        "     1000,\n",
        "     994,\n",
        "     1003,\n",
        "     1023,\n",
        "     1050,\n",
        "     1089,\n",
        "     1134,\n",
        "     1190,\n",
        "     1265,\n",
        "     1321,\n",
        "     1361,\n",
        "     1403,\n",
        "     1428,\n",
        "     1442,\n",
        "     1445,\n",
        "     1441,\n",
        "     1427,\n",
        "     1400,\n",
        "     1361,\n",
        "     1316,\n",
        "     1269,\n",
        "     1228,\n",
        "     1198,\n",
        "     1207,\n",
        "     1210,\n",
        "     1190,\n",
        "     1177,\n",
        "     1172,\n",
        "     1174,\n",
        "     1170,\n",
        "     1153,\n",
        "     1127,\n",
        "     1104,\n",
        "     1061,\n",
        "     1032,\n",
        "     1020],\n",
        "    'all_points_y': [963,\n",
        "     899,\n",
        "     841,\n",
        "     787,\n",
        "     738,\n",
        "     700,\n",
        "     663,\n",
        "     638,\n",
        "     621,\n",
        "     619,\n",
        "     643,\n",
        "     672,\n",
        "     720,\n",
        "     765,\n",
        "     800,\n",
        "     860,\n",
        "     896,\n",
        "     942,\n",
        "     990,\n",
        "     1035,\n",
        "     1079,\n",
        "     1112,\n",
        "     1129,\n",
        "     1134,\n",
        "     1144,\n",
        "     1153,\n",
        "     1166,\n",
        "     1166,\n",
        "     1150,\n",
        "     1136,\n",
        "     1129,\n",
        "     1122,\n",
        "     1112,\n",
        "     1084,\n",
        "     1037,\n",
        "     989,\n",
        "     963],\n",
        "    'name': 'polygon'}}},\n",
        " 'size': 1115004}\n",
        "```\n",
        "\n",
        "The annotation is a JSON file where each key indicates an image's all annotations.\n",
        "The code to convert the balloon dataset into coco format is as below.\n",
        "\n",
        "Using the function below, users can successfully convert the annotation file into json format, then we can use `CocoDataset` to train and evaluate the model with `CocoMetric`."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 9,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "rHnw5Q_nARXq",
        "outputId": "4b1efb44-f81d-486f-80e6-461a57fe84bc"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] 61/61, 34.8 task/s, elapsed: 2s, ETA:     0s\n",
            "[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] 13/13, 22.2 task/s, elapsed: 1s, ETA:     0s\n"
          ]
        }
      ],
      "source": [
        "import os.path as osp\n",
        "import mmcv\n",
        "from mmengine.fileio import dump, load\n",
        "from mmengine.utils import track_iter_progress\n",
        "\n",
        "def convert_balloon_to_coco(ann_file, out_file, image_prefix):\n",
        "    data_infos = load(ann_file)\n",
        "\n",
        "    annotations = []\n",
        "    images = []\n",
        "    obj_count = 0\n",
        "    for idx, v in enumerate(track_iter_progress(data_infos.values())):\n",
        "        filename = v['filename']\n",
        "        img_path = osp.join(image_prefix, filename)\n",
        "        height, width = mmcv.imread(img_path).shape[:2]\n",
        "\n",
        "        images.append(\n",
        "            dict(id=idx, file_name=filename, height=height, width=width))\n",
        "        \n",
        "        for _, obj in v['regions'].items():\n",
        "            assert not obj['region_attributes']\n",
        "            obj = obj['shape_attributes']\n",
        "            px = obj['all_points_x']\n",
        "            py = obj['all_points_y']\n",
        "            poly = [(x + 0.5, y + 0.5) for x, y in zip(px, py)]\n",
        "            poly = [p for x in poly for p in x]\n",
        "\n",
        "            x_min, y_min, x_max, y_max = (min(px), min(py), max(px), max(py))\n",
        "\n",
        "            data_anno = dict(\n",
        "                image_id=idx,\n",
        "                id=obj_count,\n",
        "                category_id=0,\n",
        "                bbox=[x_min, y_min, x_max - x_min, y_max - y_min],\n",
        "                area=(x_max - x_min) * (y_max - y_min),\n",
        "                segmentation=[poly],\n",
        "                iscrowd=0)\n",
        "            annotations.append(data_anno)\n",
        "            obj_count += 1\n",
        "\n",
        "    coco_format_json = dict(\n",
        "        images=images,\n",
        "        annotations=annotations,\n",
        "        categories=[{\n",
        "            'id': 0,\n",
        "            'name': 'balloon'\n",
        "        }])\n",
        "    dump(coco_format_json, out_file)\n",
        "\n",
        "if __name__ == '__main__':\n",
        "    convert_balloon_to_coco(ann_file='data/balloon/train/via_region_data.json',\n",
        "                            out_file='data/balloon/train.json',\n",
        "                            image_prefix='data/balloon/train')\n",
        "    convert_balloon_to_coco(ann_file='data/balloon/val/via_region_data.json',\n",
        "                            out_file='data/balloon/val.json',\n",
        "                            image_prefix='data/balloon/val')"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "yc9UDp1vU8UZ"
      },
      "source": [
        "## Prepare a config\n",
        "\n",
        "The second step is to prepare a config thus the dataset could be successfully loaded. Assume that we want to use RTMDet-tiny, the config to train the detector on balloon dataset is as below. Assume the config is under directory `configs/rtmdet/` and named as `rtmdet_tiny_1xb4-20e_balloon.py`, the config is as below.\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 10,
      "metadata": {
        "id": "XjTW6XydU8Ua"
      },
      "outputs": [],
      "source": [
        "config_balloon = \"\"\"\n",
        "# Inherit and overwrite part of the config based on this config\n",
        "_base_ = './rtmdet_tiny_8xb32-300e_coco.py'\n",
        "\n",
        "data_root = 'data/balloon/' # dataset root\n",
        "\n",
        "train_batch_size_per_gpu = 4\n",
        "train_num_workers = 2\n",
        "\n",
        "max_epochs = 20\n",
        "stage2_num_epochs = 1\n",
        "base_lr = 0.00008\n",
        "\n",
        "\n",
        "metainfo = {\n",
        "    'classes': ('balloon', ),\n",
        "    'palette': [\n",
        "        (220, 20, 60),\n",
        "    ]\n",
        "}\n",
        "\n",
        "train_dataloader = dict(\n",
        "    batch_size=train_batch_size_per_gpu,\n",
        "    num_workers=train_num_workers,\n",
        "    dataset=dict(\n",
        "        data_root=data_root,\n",
        "        metainfo=metainfo,\n",
        "        data_prefix=dict(img='train/'),\n",
        "        ann_file='train.json'))\n",
        "\n",
        "val_dataloader = dict(\n",
        "    dataset=dict(\n",
        "        data_root=data_root,\n",
        "        metainfo=metainfo,\n",
        "        data_prefix=dict(img='val/'),\n",
        "        ann_file='val.json'))\n",
        "\n",
        "test_dataloader = val_dataloader\n",
        "\n",
        "val_evaluator = dict(ann_file=data_root + 'val.json')\n",
        "\n",
        "test_evaluator = val_evaluator\n",
        "\n",
        "model = dict(bbox_head=dict(num_classes=1))\n",
        "\n",
        "# learning rate\n",
        "param_scheduler = [\n",
        "    dict(\n",
        "        type='LinearLR',\n",
        "        start_factor=1.0e-5,\n",
        "        by_epoch=False,\n",
        "        begin=0,\n",
        "        end=10),\n",
        "    dict(\n",
        "        # use cosine lr from 10 to 20 epoch\n",
        "        type='CosineAnnealingLR',\n",
        "        eta_min=base_lr * 0.05,\n",
        "        begin=max_epochs // 2,\n",
        "        end=max_epochs,\n",
        "        T_max=max_epochs // 2,\n",
        "        by_epoch=True,\n",
        "        convert_to_iter_based=True),\n",
        "]\n",
        "\n",
        "train_pipeline_stage2 = [\n",
        "    dict(type='LoadImageFromFile', backend_args=None),\n",
        "    dict(type='LoadAnnotations', with_bbox=True),\n",
        "    dict(\n",
        "        type='RandomResize',\n",
        "        scale=(640, 640),\n",
        "        ratio_range=(0.1, 2.0),\n",
        "        keep_ratio=True),\n",
        "    dict(type='RandomCrop', crop_size=(640, 640)),\n",
        "    dict(type='YOLOXHSVRandomAug'),\n",
        "    dict(type='RandomFlip', prob=0.5),\n",
        "    dict(type='Pad', size=(640, 640), pad_val=dict(img=(114, 114, 114))),\n",
        "    dict(type='PackDetInputs')\n",
        "]\n",
        "\n",
        "# optimizer\n",
        "optim_wrapper = dict(\n",
        "    _delete_=True,\n",
        "    type='OptimWrapper',\n",
        "    optimizer=dict(type='AdamW', lr=base_lr, weight_decay=0.05),\n",
        "    paramwise_cfg=dict(\n",
        "        norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True))\n",
        "\n",
        "default_hooks = dict(\n",
        "    checkpoint=dict(\n",
        "        interval=5,\n",
        "        max_keep_ckpts=2,  # only keep latest 2 checkpoints\n",
        "        save_best='auto'\n",
        "    ),\n",
        "    logger=dict(type='LoggerHook', interval=5))\n",
        "\n",
        "custom_hooks = [\n",
        "    dict(\n",
        "        type='PipelineSwitchHook',\n",
        "        switch_epoch=max_epochs - stage2_num_epochs,\n",
        "        switch_pipeline=train_pipeline_stage2)\n",
        "]\n",
        "\n",
        "# load COCO pre-trained weight\n",
        "load_from = './checkpoints/rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth'\n",
        "\n",
        "train_cfg = dict(type='EpochBasedTrainLoop', max_epochs=max_epochs, val_interval=1)\n",
        "visualizer = dict(vis_backends=[dict(type='LocalVisBackend'),dict(type='TensorboardVisBackend')])\n",
        "\"\"\"\n",
        "\n",
        "with open('./configs/rtmdet/rtmdet_tiny_1xb4-20e_balloon.py', 'w') as f:\n",
        "    f.write(config_balloon)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 11,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "5LNm7LxwZG2w",
        "outputId": "aac457c5-f915-433d-e98a-85ddd9005543"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "04/17 10:28:35 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - \n",
            "------------------------------------------------------------\n",
            "System environment:\n",
            "    sys.platform: linux\n",
            "    Python: 3.9.16 (main, Dec  7 2022, 01:11:51) [GCC 9.4.0]\n",
            "    CUDA available: True\n",
            "    numpy_random_seed: 904036445\n",
            "    GPU 0: Tesla T4\n",
            "    CUDA_HOME: /usr/local/cuda\n",
            "    NVCC: Cuda compilation tools, release 11.8, V11.8.89\n",
            "    GCC: x86_64-linux-gnu-gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0\n",
            "    PyTorch: 2.0.0+cu118\n",
            "    PyTorch compiling details: PyTorch built with:\n",
            "  - GCC 9.3\n",
            "  - C++ Version: 201703\n",
            "  - Intel(R) oneAPI Math Kernel Library Version 2022.2-Product Build 20220804 for Intel(R) 64 architecture applications\n",
            "  - Intel(R) MKL-DNN v2.7.3 (Git Hash 6dbeffbae1f23cbbeae17adb7b5b13f1f37c080e)\n",
            "  - OpenMP 201511 (a.k.a. OpenMP 4.5)\n",
            "  - LAPACK is enabled (usually provided by MKL)\n",
            "  - NNPACK is enabled\n",
            "  - CPU capability usage: AVX2\n",
            "  - CUDA Runtime 11.8\n",
            "  - NVCC architecture flags: -gencode;arch=compute_37,code=sm_37;-gencode;arch=compute_50,code=sm_50;-gencode;arch=compute_60,code=sm_60;-gencode;arch=compute_70,code=sm_70;-gencode;arch=compute_75,code=sm_75;-gencode;arch=compute_80,code=sm_80;-gencode;arch=compute_86,code=sm_86;-gencode;arch=compute_90,code=sm_90\n",
            "  - CuDNN 8.7\n",
            "  - Magma 2.6.1\n",
            "  - Build settings: BLAS_INFO=mkl, BUILD_TYPE=Release, CUDA_VERSION=11.8, CUDNN_VERSION=8.7.0, CXX_COMPILER=/opt/rh/devtoolset-9/root/usr/bin/c++, CXX_FLAGS= -D_GLIBCXX_USE_CXX11_ABI=0 -fabi-version=11 -Wno-deprecated -fvisibility-inlines-hidden -DUSE_PTHREADPOOL -DNDEBUG -DUSE_KINETO -DLIBKINETO_NOROCTRACER -DUSE_FBGEMM -DUSE_QNNPACK -DUSE_PYTORCH_QNNPACK -DUSE_XNNPACK -DSYMBOLICATE_MOBILE_DEBUG_HANDLE -O2 -fPIC -Wall -Wextra -Werror=return-type -Werror=non-virtual-dtor -Werror=bool-operation -Wnarrowing -Wno-missing-field-initializers -Wno-type-limits -Wno-array-bounds -Wno-unknown-pragmas -Wunused-local-typedefs -Wno-unused-parameter -Wno-unused-function -Wno-unused-result -Wno-strict-overflow -Wno-strict-aliasing -Wno-error=deprecated-declarations -Wno-stringop-overflow -Wno-psabi -Wno-error=pedantic -Wno-error=redundant-decls -Wno-error=old-style-cast -fdiagnostics-color=always -faligned-new -Wno-unused-but-set-variable -Wno-maybe-uninitialized -fno-math-errno -fno-trapping-math -Werror=format -Werror=cast-function-type -Wno-stringop-overflow, LAPACK_INFO=mkl, PERF_WITH_AVX=1, PERF_WITH_AVX2=1, PERF_WITH_AVX512=1, TORCH_DISABLE_GPU_ASSERTS=ON, TORCH_VERSION=2.0.0, USE_CUDA=ON, USE_CUDNN=ON, USE_EXCEPTION_PTR=1, USE_GFLAGS=OFF, USE_GLOG=OFF, USE_MKL=ON, USE_MKLDNN=ON, USE_MPI=OFF, USE_NCCL=1, USE_NNPACK=ON, USE_OPENMP=ON, USE_ROCM=OFF, \n",
            "\n",
            "    TorchVision: 0.15.1+cu118\n",
            "    OpenCV: 4.7.0\n",
            "    MMEngine: 0.7.2\n",
            "\n",
            "Runtime environment:\n",
            "    cudnn_benchmark: False\n",
            "    mp_cfg: {'mp_start_method': 'fork', 'opencv_num_threads': 0}\n",
            "    dist_cfg: {'backend': 'nccl'}\n",
            "    seed: None\n",
            "    Distributed launcher: none\n",
            "    Distributed training: False\n",
            "    GPU number: 1\n",
            "------------------------------------------------------------\n",
            "\n",
            "04/17 10:28:37 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Config:\n",
            "default_scope = 'mmdet'\n",
            "default_hooks = dict(\n",
            "    timer=dict(type='IterTimerHook'),\n",
            "    logger=dict(type='LoggerHook', interval=5),\n",
            "    param_scheduler=dict(type='ParamSchedulerHook'),\n",
            "    checkpoint=dict(\n",
            "        type='CheckpointHook', interval=5, max_keep_ckpts=2, save_best='auto'),\n",
            "    sampler_seed=dict(type='DistSamplerSeedHook'),\n",
            "    visualization=dict(type='DetVisualizationHook'))\n",
            "env_cfg = dict(\n",
            "    cudnn_benchmark=False,\n",
            "    mp_cfg=dict(mp_start_method='fork', opencv_num_threads=0),\n",
            "    dist_cfg=dict(backend='nccl'))\n",
            "vis_backends = [dict(type='LocalVisBackend')]\n",
            "visualizer = dict(\n",
            "    type='DetLocalVisualizer',\n",
            "    vis_backends=[\n",
            "        dict(type='LocalVisBackend'),\n",
            "        dict(type='TensorboardVisBackend')\n",
            "    ],\n",
            "    name='visualizer')\n",
            "log_processor = dict(type='LogProcessor', window_size=50, by_epoch=True)\n",
            "log_level = 'INFO'\n",
            "load_from = './checkpoints/rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth'\n",
            "resume = False\n",
            "train_cfg = dict(\n",
            "    type='EpochBasedTrainLoop',\n",
            "    max_epochs=20,\n",
            "    val_interval=1,\n",
            "    dynamic_intervals=[(280, 1)])\n",
            "val_cfg = dict(type='ValLoop')\n",
            "test_cfg = dict(type='TestLoop')\n",
            "param_scheduler = [\n",
            "    dict(type='LinearLR', start_factor=1e-05, by_epoch=False, begin=0, end=10),\n",
            "    dict(\n",
            "        type='CosineAnnealingLR',\n",
            "        eta_min=4.000000000000001e-06,\n",
            "        begin=10,\n",
            "        end=20,\n",
            "        T_max=10,\n",
            "        by_epoch=True,\n",
            "        convert_to_iter_based=True)\n",
            "]\n",
            "optim_wrapper = dict(\n",
            "    type='OptimWrapper',\n",
            "    optimizer=dict(type='AdamW', lr=8e-05, weight_decay=0.05),\n",
            "    paramwise_cfg=dict(\n",
            "        norm_decay_mult=0, bias_decay_mult=0, bypass_duplicate=True))\n",
            "auto_scale_lr = dict(enable=False, base_batch_size=16)\n",
            "dataset_type = 'CocoDataset'\n",
            "data_root = 'data/balloon/'\n",
            "backend_args = None\n",
            "train_pipeline = [\n",
            "    dict(type='LoadImageFromFile', backend_args=None),\n",
            "    dict(type='LoadAnnotations', with_bbox=True),\n",
            "    dict(\n",
            "        type='CachedMosaic',\n",
            "        img_scale=(640, 640),\n",
            "        pad_val=114.0,\n",
            "        max_cached_images=20,\n",
            "        random_pop=False),\n",
            "    dict(\n",
            "        type='RandomResize',\n",
            "        scale=(1280, 1280),\n",
            "        ratio_range=(0.5, 2.0),\n",
            "        keep_ratio=True),\n",
            "    dict(type='RandomCrop', crop_size=(640, 640)),\n",
            "    dict(type='YOLOXHSVRandomAug'),\n",
            "    dict(type='RandomFlip', prob=0.5),\n",
            "    dict(type='Pad', size=(640, 640), pad_val=dict(img=(114, 114, 114))),\n",
            "    dict(\n",
            "        type='CachedMixUp',\n",
            "        img_scale=(640, 640),\n",
            "        ratio_range=(1.0, 1.0),\n",
            "        max_cached_images=10,\n",
            "        random_pop=False,\n",
            "        pad_val=(114, 114, 114),\n",
            "        prob=0.5),\n",
            "    dict(type='PackDetInputs')\n",
            "]\n",
            "test_pipeline = [\n",
            "    dict(type='LoadImageFromFile', backend_args=None),\n",
            "    dict(type='Resize', scale=(640, 640), keep_ratio=True),\n",
            "    dict(type='Pad', size=(640, 640), pad_val=dict(img=(114, 114, 114))),\n",
            "    dict(\n",
            "        type='PackDetInputs',\n",
            "        meta_keys=('img_id', 'img_path', 'ori_shape', 'img_shape',\n",
            "                   'scale_factor'))\n",
            "]\n",
            "train_dataloader = dict(\n",
            "    batch_size=4,\n",
            "    num_workers=2,\n",
            "    persistent_workers=True,\n",
            "    sampler=dict(type='DefaultSampler', shuffle=True),\n",
            "    batch_sampler=None,\n",
            "    dataset=dict(\n",
            "        type='CocoDataset',\n",
            "        data_root='data/balloon/',\n",
            "        ann_file='train.json',\n",
            "        data_prefix=dict(img='train/'),\n",
            "        filter_cfg=dict(filter_empty_gt=True, min_size=32),\n",
            "        pipeline=[\n",
            "            dict(type='LoadImageFromFile', backend_args=None),\n",
            "            dict(type='LoadAnnotations', with_bbox=True),\n",
            "            dict(\n",
            "                type='CachedMosaic',\n",
            "                img_scale=(640, 640),\n",
            "                pad_val=114.0,\n",
            "                max_cached_images=20,\n",
            "                random_pop=False),\n",
            "            dict(\n",
            "                type='RandomResize',\n",
            "                scale=(1280, 1280),\n",
            "                ratio_range=(0.5, 2.0),\n",
            "                keep_ratio=True),\n",
            "            dict(type='RandomCrop', crop_size=(640, 640)),\n",
            "            dict(type='YOLOXHSVRandomAug'),\n",
            "            dict(type='RandomFlip', prob=0.5),\n",
            "            dict(\n",
            "                type='Pad', size=(640, 640),\n",
            "                pad_val=dict(img=(114, 114, 114))),\n",
            "            dict(\n",
            "                type='CachedMixUp',\n",
            "                img_scale=(640, 640),\n",
            "                ratio_range=(1.0, 1.0),\n",
            "                max_cached_images=10,\n",
            "                random_pop=False,\n",
            "                pad_val=(114, 114, 114),\n",
            "                prob=0.5),\n",
            "            dict(type='PackDetInputs')\n",
            "        ],\n",
            "        backend_args=None,\n",
            "        metainfo=dict(classes=('balloon', ), palette=[(220, 20, 60)])),\n",
            "    pin_memory=True)\n",
            "val_dataloader = dict(\n",
            "    batch_size=5,\n",
            "    num_workers=10,\n",
            "    persistent_workers=True,\n",
            "    drop_last=False,\n",
            "    sampler=dict(type='DefaultSampler', shuffle=False),\n",
            "    dataset=dict(\n",
            "        type='CocoDataset',\n",
            "        data_root='data/balloon/',\n",
            "        ann_file='val.json',\n",
            "        data_prefix=dict(img='val/'),\n",
            "        test_mode=True,\n",
            "        pipeline=[\n",
            "            dict(type='LoadImageFromFile', backend_args=None),\n",
            "            dict(type='Resize', scale=(640, 640), keep_ratio=True),\n",
            "            dict(\n",
            "                type='Pad', size=(640, 640),\n",
            "                pad_val=dict(img=(114, 114, 114))),\n",
            "            dict(\n",
            "                type='PackDetInputs',\n",
            "                meta_keys=('img_id', 'img_path', 'ori_shape', 'img_shape',\n",
            "                           'scale_factor'))\n",
            "        ],\n",
            "        backend_args=None,\n",
            "        metainfo=dict(classes=('balloon', ), palette=[(220, 20, 60)])))\n",
            "test_dataloader = dict(\n",
            "    batch_size=5,\n",
            "    num_workers=10,\n",
            "    persistent_workers=True,\n",
            "    drop_last=False,\n",
            "    sampler=dict(type='DefaultSampler', shuffle=False),\n",
            "    dataset=dict(\n",
            "        type='CocoDataset',\n",
            "        data_root='data/balloon/',\n",
            "        ann_file='val.json',\n",
            "        data_prefix=dict(img='val/'),\n",
            "        test_mode=True,\n",
            "        pipeline=[\n",
            "            dict(type='LoadImageFromFile', backend_args=None),\n",
            "            dict(type='Resize', scale=(640, 640), keep_ratio=True),\n",
            "            dict(\n",
            "                type='Pad', size=(640, 640),\n",
            "                pad_val=dict(img=(114, 114, 114))),\n",
            "            dict(\n",
            "                type='PackDetInputs',\n",
            "                meta_keys=('img_id', 'img_path', 'ori_shape', 'img_shape',\n",
            "                           'scale_factor'))\n",
            "        ],\n",
            "        backend_args=None,\n",
            "        metainfo=dict(classes=('balloon', ), palette=[(220, 20, 60)])))\n",
            "val_evaluator = dict(\n",
            "    type='CocoMetric',\n",
            "    ann_file='data/balloon/val.json',\n",
            "    metric='bbox',\n",
            "    format_only=False,\n",
            "    backend_args=None,\n",
            "    proposal_nums=(100, 1, 10))\n",
            "test_evaluator = dict(\n",
            "    type='CocoMetric',\n",
            "    ann_file='data/balloon/val.json',\n",
            "    metric='bbox',\n",
            "    format_only=False,\n",
            "    backend_args=None,\n",
            "    proposal_nums=(100, 1, 10))\n",
            "tta_model = dict(\n",
            "    type='DetTTAModel',\n",
            "    tta_cfg=dict(nms=dict(type='nms', iou_threshold=0.6), max_per_img=100))\n",
            "img_scales = [(640, 640), (320, 320), (960, 960)]\n",
            "tta_pipeline = [\n",
            "    dict(type='LoadImageFromFile', backend_args=None),\n",
            "    dict(\n",
            "        type='TestTimeAug',\n",
            "        transforms=[[{\n",
            "            'type': 'Resize',\n",
            "            'scale': (640, 640),\n",
            "            'keep_ratio': True\n",
            "        }, {\n",
            "            'type': 'Resize',\n",
            "            'scale': (320, 320),\n",
            "            'keep_ratio': True\n",
            "        }, {\n",
            "            'type': 'Resize',\n",
            "            'scale': (960, 960),\n",
            "            'keep_ratio': True\n",
            "        }],\n",
            "                    [{\n",
            "                        'type': 'RandomFlip',\n",
            "                        'prob': 1.0\n",
            "                    }, {\n",
            "                        'type': 'RandomFlip',\n",
            "                        'prob': 0.0\n",
            "                    }],\n",
            "                    [{\n",
            "                        'type': 'Pad',\n",
            "                        'size': (960, 960),\n",
            "                        'pad_val': {\n",
            "                            'img': (114, 114, 114)\n",
            "                        }\n",
            "                    }],\n",
            "                    [{\n",
            "                        'type':\n",
            "                        'PackDetInputs',\n",
            "                        'meta_keys':\n",
            "                        ('img_id', 'img_path', 'ori_shape', 'img_shape',\n",
            "                         'scale_factor', 'flip', 'flip_direction')\n",
            "                    }]])\n",
            "]\n",
            "model = dict(\n",
            "    type='RTMDet',\n",
            "    data_preprocessor=dict(\n",
            "        type='DetDataPreprocessor',\n",
            "        mean=[103.53, 116.28, 123.675],\n",
            "        std=[57.375, 57.12, 58.395],\n",
            "        bgr_to_rgb=False,\n",
            "        batch_augments=None),\n",
            "    backbone=dict(\n",
            "        type='CSPNeXt',\n",
            "        arch='P5',\n",
            "        expand_ratio=0.5,\n",
            "        deepen_factor=0.167,\n",
            "        widen_factor=0.375,\n",
            "        channel_attention=True,\n",
            "        norm_cfg=dict(type='SyncBN'),\n",
            "        act_cfg=dict(type='SiLU', inplace=True),\n",
            "        init_cfg=dict(\n",
            "            type='Pretrained',\n",
            "            prefix='backbone.',\n",
            "            checkpoint=\n",
            "            'https://download.openmmlab.com/mmdetection/v3.0/rtmdet/cspnext_rsb_pretrain/cspnext-tiny_imagenet_600e.pth'\n",
            "        )),\n",
            "    neck=dict(\n",
            "        type='CSPNeXtPAFPN',\n",
            "        in_channels=[96, 192, 384],\n",
            "        out_channels=96,\n",
            "        num_csp_blocks=1,\n",
            "        expand_ratio=0.5,\n",
            "        norm_cfg=dict(type='SyncBN'),\n",
            "        act_cfg=dict(type='SiLU', inplace=True)),\n",
            "    bbox_head=dict(\n",
            "        type='RTMDetSepBNHead',\n",
            "        num_classes=1,\n",
            "        in_channels=96,\n",
            "        stacked_convs=2,\n",
            "        feat_channels=96,\n",
            "        anchor_generator=dict(\n",
            "            type='MlvlPointGenerator', offset=0, strides=[8, 16, 32]),\n",
            "        bbox_coder=dict(type='DistancePointBBoxCoder'),\n",
            "        loss_cls=dict(\n",
            "            type='QualityFocalLoss',\n",
            "            use_sigmoid=True,\n",
            "            beta=2.0,\n",
            "            loss_weight=1.0),\n",
            "        loss_bbox=dict(type='GIoULoss', loss_weight=2.0),\n",
            "        with_objectness=False,\n",
            "        exp_on_reg=False,\n",
            "        share_conv=True,\n",
            "        pred_kernel_size=1,\n",
            "        norm_cfg=dict(type='SyncBN'),\n",
            "        act_cfg=dict(type='SiLU', inplace=True)),\n",
            "    train_cfg=dict(\n",
            "        assigner=dict(type='DynamicSoftLabelAssigner', topk=13),\n",
            "        allowed_border=-1,\n",
            "        pos_weight=-1,\n",
            "        debug=False),\n",
            "    test_cfg=dict(\n",
            "        nms_pre=30000,\n",
            "        min_bbox_size=0,\n",
            "        score_thr=0.001,\n",
            "        nms=dict(type='nms', iou_threshold=0.65),\n",
            "        max_per_img=300))\n",
            "train_pipeline_stage2 = [\n",
            "    dict(type='LoadImageFromFile', backend_args=None),\n",
            "    dict(type='LoadAnnotations', with_bbox=True),\n",
            "    dict(\n",
            "        type='RandomResize',\n",
            "        scale=(640, 640),\n",
            "        ratio_range=(0.1, 2.0),\n",
            "        keep_ratio=True),\n",
            "    dict(type='RandomCrop', crop_size=(640, 640)),\n",
            "    dict(type='YOLOXHSVRandomAug'),\n",
            "    dict(type='RandomFlip', prob=0.5),\n",
            "    dict(type='Pad', size=(640, 640), pad_val=dict(img=(114, 114, 114))),\n",
            "    dict(type='PackDetInputs')\n",
            "]\n",
            "max_epochs = 20\n",
            "stage2_num_epochs = 1\n",
            "base_lr = 8e-05\n",
            "interval = 10\n",
            "custom_hooks = [\n",
            "    dict(\n",
            "        type='PipelineSwitchHook',\n",
            "        switch_epoch=19,\n",
            "        switch_pipeline=[\n",
            "            dict(type='LoadImageFromFile', backend_args=None),\n",
            "            dict(type='LoadAnnotations', with_bbox=True),\n",
            "            dict(\n",
            "                type='RandomResize',\n",
            "                scale=(640, 640),\n",
            "                ratio_range=(0.1, 2.0),\n",
            "                keep_ratio=True),\n",
            "            dict(type='RandomCrop', crop_size=(640, 640)),\n",
            "            dict(type='YOLOXHSVRandomAug'),\n",
            "            dict(type='RandomFlip', prob=0.5),\n",
            "            dict(\n",
            "                type='Pad', size=(640, 640),\n",
            "                pad_val=dict(img=(114, 114, 114))),\n",
            "            dict(type='PackDetInputs')\n",
            "        ])\n",
            "]\n",
            "checkpoint = 'https://download.openmmlab.com/mmdetection/v3.0/rtmdet/cspnext_rsb_pretrain/cspnext-tiny_imagenet_600e.pth'\n",
            "train_batch_size_per_gpu = 4\n",
            "train_num_workers = 2\n",
            "metainfo = dict(classes=('balloon', ), palette=[(220, 20, 60)])\n",
            "launcher = 'none'\n",
            "work_dir = './work_dirs/rtmdet_tiny_1xb4-20e_balloon'\n",
            "\n",
            "2023-04-17 10:28:39.429834: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.\n",
            "To enable the following instructions: AVX2 AVX512F FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.\n",
            "2023-04-17 10:28:40.271799: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT\n",
            "04/17 10:28:43 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Distributed training is not used, all SyncBatchNorm (SyncBN) layers in the model will be automatically reverted to BatchNormXd layers if they are used.\n",
            "04/17 10:28:43 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Hooks will be executed in the following order:\n",
            "before_run:\n",
            "(VERY_HIGH   ) RuntimeInfoHook                    \n",
            "(BELOW_NORMAL) LoggerHook                         \n",
            " -------------------- \n",
            "before_train:\n",
            "(VERY_HIGH   ) RuntimeInfoHook                    \n",
            "(NORMAL      ) IterTimerHook                      \n",
            "(VERY_LOW    ) CheckpointHook                     \n",
            " -------------------- \n",
            "before_train_epoch:\n",
            "(VERY_HIGH   ) RuntimeInfoHook                    \n",
            "(NORMAL      ) IterTimerHook                      \n",
            "(NORMAL      ) DistSamplerSeedHook                \n",
            "(NORMAL      ) PipelineSwitchHook                 \n",
            " -------------------- \n",
            "before_train_iter:\n",
            "(VERY_HIGH   ) RuntimeInfoHook                    \n",
            "(NORMAL      ) IterTimerHook                      \n",
            " -------------------- \n",
            "after_train_iter:\n",
            "(VERY_HIGH   ) RuntimeInfoHook                    \n",
            "(NORMAL      ) IterTimerHook                      \n",
            "(BELOW_NORMAL) LoggerHook                         \n",
            "(LOW         ) ParamSchedulerHook                 \n",
            "(VERY_LOW    ) CheckpointHook                     \n",
            " -------------------- \n",
            "after_train_epoch:\n",
            "(NORMAL      ) IterTimerHook                      \n",
            "(LOW         ) ParamSchedulerHook                 \n",
            "(VERY_LOW    ) CheckpointHook                     \n",
            " -------------------- \n",
            "before_val_epoch:\n",
            "(NORMAL      ) IterTimerHook                      \n",
            " -------------------- \n",
            "before_val_iter:\n",
            "(NORMAL      ) IterTimerHook                      \n",
            " -------------------- \n",
            "after_val_iter:\n",
            "(NORMAL      ) IterTimerHook                      \n",
            "(NORMAL      ) DetVisualizationHook               \n",
            "(BELOW_NORMAL) LoggerHook                         \n",
            " -------------------- \n",
            "after_val_epoch:\n",
            "(VERY_HIGH   ) RuntimeInfoHook                    \n",
            "(NORMAL      ) IterTimerHook                      \n",
            "(BELOW_NORMAL) LoggerHook                         \n",
            "(LOW         ) ParamSchedulerHook                 \n",
            "(VERY_LOW    ) CheckpointHook                     \n",
            " -------------------- \n",
            "after_train:\n",
            "(VERY_LOW    ) CheckpointHook                     \n",
            " -------------------- \n",
            "before_test_epoch:\n",
            "(NORMAL      ) IterTimerHook                      \n",
            " -------------------- \n",
            "before_test_iter:\n",
            "(NORMAL      ) IterTimerHook                      \n",
            " -------------------- \n",
            "after_test_iter:\n",
            "(NORMAL      ) IterTimerHook                      \n",
            "(NORMAL      ) DetVisualizationHook               \n",
            "(BELOW_NORMAL) LoggerHook                         \n",
            " -------------------- \n",
            "after_test_epoch:\n",
            "(VERY_HIGH   ) RuntimeInfoHook                    \n",
            "(NORMAL      ) IterTimerHook                      \n",
            "(BELOW_NORMAL) LoggerHook                         \n",
            " -------------------- \n",
            "after_run:\n",
            "(BELOW_NORMAL) LoggerHook                         \n",
            " -------------------- \n",
            "loading annotations into memory...\n",
            "Done (t=0.00s)\n",
            "creating index...\n",
            "index created!\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stem.0.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stem.0.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stem.1.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stem.1.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stem.2.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stem.2.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage1.0.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage1.0.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage1.1.main_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage1.1.main_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage1.1.short_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage1.1.short_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage1.1.final_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage1.1.final_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage1.1.blocks.0.conv1.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage1.1.blocks.0.conv1.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage1.1.blocks.0.conv2.depthwise_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage1.1.blocks.0.conv2.depthwise_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage1.1.blocks.0.conv2.pointwise_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage1.1.blocks.0.conv2.pointwise_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage1.1.attention.fc.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage2.0.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage2.0.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage2.1.main_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage2.1.main_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage2.1.short_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage2.1.short_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage2.1.final_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage2.1.final_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage2.1.blocks.0.conv1.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage2.1.blocks.0.conv1.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage2.1.blocks.0.conv2.depthwise_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage2.1.blocks.0.conv2.depthwise_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage2.1.blocks.0.conv2.pointwise_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage2.1.blocks.0.conv2.pointwise_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage2.1.attention.fc.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage3.0.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage3.0.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage3.1.main_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage3.1.main_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage3.1.short_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage3.1.short_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage3.1.final_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage3.1.final_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage3.1.blocks.0.conv1.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage3.1.blocks.0.conv1.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage3.1.blocks.0.conv2.depthwise_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage3.1.blocks.0.conv2.depthwise_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage3.1.blocks.0.conv2.pointwise_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage3.1.blocks.0.conv2.pointwise_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage3.1.attention.fc.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage4.0.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage4.0.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage4.1.conv1.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage4.1.conv1.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage4.1.conv2.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage4.1.conv2.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage4.2.main_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage4.2.main_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage4.2.short_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage4.2.short_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage4.2.final_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage4.2.final_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage4.2.blocks.0.conv1.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage4.2.blocks.0.conv1.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage4.2.blocks.0.conv2.depthwise_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage4.2.blocks.0.conv2.depthwise_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage4.2.blocks.0.conv2.pointwise_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage4.2.blocks.0.conv2.pointwise_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- backbone.stage4.2.attention.fc.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.reduce_layers.0.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.reduce_layers.0.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.reduce_layers.1.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.reduce_layers.1.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.top_down_blocks.0.main_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.top_down_blocks.0.main_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.top_down_blocks.0.short_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.top_down_blocks.0.short_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.top_down_blocks.0.final_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.top_down_blocks.0.final_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.top_down_blocks.0.blocks.0.conv1.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.top_down_blocks.0.blocks.0.conv1.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.top_down_blocks.0.blocks.0.conv2.depthwise_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.top_down_blocks.0.blocks.0.conv2.depthwise_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.top_down_blocks.0.blocks.0.conv2.pointwise_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.top_down_blocks.0.blocks.0.conv2.pointwise_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.top_down_blocks.1.main_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.top_down_blocks.1.main_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.top_down_blocks.1.short_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.top_down_blocks.1.short_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.top_down_blocks.1.final_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.top_down_blocks.1.final_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.top_down_blocks.1.blocks.0.conv1.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.top_down_blocks.1.blocks.0.conv1.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.top_down_blocks.1.blocks.0.conv2.depthwise_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.top_down_blocks.1.blocks.0.conv2.depthwise_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.top_down_blocks.1.blocks.0.conv2.pointwise_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.top_down_blocks.1.blocks.0.conv2.pointwise_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.downsamples.0.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.downsamples.0.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.downsamples.1.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.downsamples.1.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.bottom_up_blocks.0.main_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.bottom_up_blocks.0.main_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.bottom_up_blocks.0.short_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.bottom_up_blocks.0.short_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.bottom_up_blocks.0.final_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.bottom_up_blocks.0.final_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.bottom_up_blocks.0.blocks.0.conv1.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.bottom_up_blocks.0.blocks.0.conv1.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.bottom_up_blocks.0.blocks.0.conv2.depthwise_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.bottom_up_blocks.0.blocks.0.conv2.depthwise_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.bottom_up_blocks.0.blocks.0.conv2.pointwise_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.bottom_up_blocks.0.blocks.0.conv2.pointwise_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.bottom_up_blocks.1.main_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.bottom_up_blocks.1.main_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.bottom_up_blocks.1.short_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.bottom_up_blocks.1.short_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.bottom_up_blocks.1.final_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.bottom_up_blocks.1.final_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.bottom_up_blocks.1.blocks.0.conv1.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.bottom_up_blocks.1.blocks.0.conv1.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.bottom_up_blocks.1.blocks.0.conv2.depthwise_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.bottom_up_blocks.1.blocks.0.conv2.depthwise_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.bottom_up_blocks.1.blocks.0.conv2.pointwise_conv.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.bottom_up_blocks.1.blocks.0.conv2.pointwise_conv.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.out_convs.0.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.out_convs.0.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.out_convs.1.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.out_convs.1.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.out_convs.2.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- neck.out_convs.2.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- bbox_head.cls_convs.0.0.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- bbox_head.cls_convs.0.0.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- bbox_head.cls_convs.0.1.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- bbox_head.cls_convs.0.1.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[5m\u001b[4m\u001b[33mWARNING\u001b[0m - bbox_head.cls_convs.1.0.conv is duplicate. It is skipped since bypass_duplicate=True\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- bbox_head.cls_convs.1.0.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- bbox_head.cls_convs.1.0.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[5m\u001b[4m\u001b[33mWARNING\u001b[0m - bbox_head.cls_convs.1.1.conv is duplicate. It is skipped since bypass_duplicate=True\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- bbox_head.cls_convs.1.1.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- bbox_head.cls_convs.1.1.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[5m\u001b[4m\u001b[33mWARNING\u001b[0m - bbox_head.cls_convs.2.0.conv is duplicate. It is skipped since bypass_duplicate=True\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- bbox_head.cls_convs.2.0.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- bbox_head.cls_convs.2.0.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[5m\u001b[4m\u001b[33mWARNING\u001b[0m - bbox_head.cls_convs.2.1.conv is duplicate. It is skipped since bypass_duplicate=True\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- bbox_head.cls_convs.2.1.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- bbox_head.cls_convs.2.1.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- bbox_head.reg_convs.0.0.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- bbox_head.reg_convs.0.0.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- bbox_head.reg_convs.0.1.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- bbox_head.reg_convs.0.1.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[5m\u001b[4m\u001b[33mWARNING\u001b[0m - bbox_head.reg_convs.1.0.conv is duplicate. It is skipped since bypass_duplicate=True\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- bbox_head.reg_convs.1.0.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- bbox_head.reg_convs.1.0.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[5m\u001b[4m\u001b[33mWARNING\u001b[0m - bbox_head.reg_convs.1.1.conv is duplicate. It is skipped since bypass_duplicate=True\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- bbox_head.reg_convs.1.1.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- bbox_head.reg_convs.1.1.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[5m\u001b[4m\u001b[33mWARNING\u001b[0m - bbox_head.reg_convs.2.0.conv is duplicate. It is skipped since bypass_duplicate=True\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- bbox_head.reg_convs.2.0.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- bbox_head.reg_convs.2.0.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[5m\u001b[4m\u001b[33mWARNING\u001b[0m - bbox_head.reg_convs.2.1.conv is duplicate. It is skipped since bypass_duplicate=True\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- bbox_head.reg_convs.2.1.bn.weight:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- bbox_head.reg_convs.2.1.bn.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- bbox_head.rtm_cls.0.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- bbox_head.rtm_cls.1.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- bbox_head.rtm_cls.2.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- bbox_head.rtm_reg.0.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- bbox_head.rtm_reg.1.bias:weight_decay=0.0\n",
            "04/17 10:28:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - paramwise_options -- bbox_head.rtm_reg.2.bias:weight_decay=0.0\n",
            "loading annotations into memory...\n",
            "Done (t=0.00s)\n",
            "creating index...\n",
            "index created!\n",
            "/usr/local/lib/python3.9/dist-packages/torch/utils/data/dataloader.py:561: UserWarning: This DataLoader will create 10 worker processes in total. Our suggested max number of worker in current system is 2, which is smaller than what this DataLoader is going to create. Please be aware that excessive worker creation might get DataLoader running slow or even freeze, lower the worker number to avoid potential slowness/freeze if necessary.\n",
            "  warnings.warn(_create_warning_msg(\n",
            "loading annotations into memory...\n",
            "Done (t=0.00s)\n",
            "creating index...\n",
            "index created!\n",
            "04/17 10:28:46 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - load backbone. in model from: https://download.openmmlab.com/mmdetection/v3.0/rtmdet/cspnext_rsb_pretrain/cspnext-tiny_imagenet_600e.pth\n",
            "Loads checkpoint by http backend from path: https://download.openmmlab.com/mmdetection/v3.0/rtmdet/cspnext_rsb_pretrain/cspnext-tiny_imagenet_600e.pth\n",
            "Downloading: \"https://download.openmmlab.com/mmdetection/v3.0/rtmdet/cspnext_rsb_pretrain/cspnext-tiny_imagenet_600e.pth\" to /root/.cache/torch/hub/checkpoints/cspnext-tiny_imagenet_600e.pth\n",
            "100% 31.5M/31.5M [00:01<00:00, 27.2MB/s]\n",
            "Loads checkpoint by local backend from path: ./checkpoints/rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth\n",
            "The model and loaded state dict do not match exactly\n",
            "\n",
            "size mismatch for bbox_head.rtm_cls.0.weight: copying a param with shape torch.Size([80, 96, 1, 1]) from checkpoint, the shape in current model is torch.Size([1, 96, 1, 1]).\n",
            "size mismatch for bbox_head.rtm_cls.0.bias: copying a param with shape torch.Size([80]) from checkpoint, the shape in current model is torch.Size([1]).\n",
            "size mismatch for bbox_head.rtm_cls.1.weight: copying a param with shape torch.Size([80, 96, 1, 1]) from checkpoint, the shape in current model is torch.Size([1, 96, 1, 1]).\n",
            "size mismatch for bbox_head.rtm_cls.1.bias: copying a param with shape torch.Size([80]) from checkpoint, the shape in current model is torch.Size([1]).\n",
            "size mismatch for bbox_head.rtm_cls.2.weight: copying a param with shape torch.Size([80, 96, 1, 1]) from checkpoint, the shape in current model is torch.Size([1, 96, 1, 1]).\n",
            "size mismatch for bbox_head.rtm_cls.2.bias: copying a param with shape torch.Size([80]) from checkpoint, the shape in current model is torch.Size([1]).\n",
            "unexpected key in source state_dict: data_preprocessor.mean, data_preprocessor.std\n",
            "\n",
            "04/17 10:28:48 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Load checkpoint from ./checkpoints/rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth\n",
            "04/17 10:28:48 - mmengine - \u001b[5m\u001b[4m\u001b[33mWARNING\u001b[0m - \"FileClient\" will be deprecated in future. Please use io functions in https://mmengine.readthedocs.io/en/latest/api/fileio.html#file-io\n",
            "04/17 10:28:48 - mmengine - \u001b[5m\u001b[4m\u001b[33mWARNING\u001b[0m - \"HardDiskBackend\" is the alias of \"LocalBackend\" and the former will be deprecated in future.\n",
            "04/17 10:28:48 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Checkpoints will be saved to /content/mmdetection/work_dirs/rtmdet_tiny_1xb4-20e_balloon.\n",
            "/usr/local/lib/python3.9/dist-packages/torch/functional.py:504: UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argument. (Triggered internally at ../aten/src/ATen/native/TensorShape.cpp:3483.)\n",
            "  return _VF.meshgrid(tensors, **kwargs)  # type: ignore[attr-defined]\n",
            "04/17 10:28:51 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train)  [1][ 5/16]  lr: 3.5556e-05  eta: 0:03:33  time: 0.6778  data_time: 0.2107  memory: 1422  loss: 2.7197  loss_cls: 2.0437  loss_bbox: 0.6761\n",
            "04/17 10:28:52 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train)  [1][10/16]  lr: 8.0000e-05  eta: 0:02:31  time: 0.4890  data_time: 0.1117  memory: 1422  loss: 2.7312  loss_cls: 2.0638  loss_bbox: 0.6673\n",
            "04/17 10:28:54 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train)  [1][15/16]  lr: 8.0000e-05  eta: 0:02:05  time: 0.4111  data_time: 0.0774  memory: 1422  loss: 2.7183  loss_cls: 2.0497  loss_bbox: 0.6687\n",
            "04/17 10:28:54 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Exp name: rtmdet_tiny_1xb4-20e_balloon_20230417_102835\n",
            "/usr/local/lib/python3.9/dist-packages/torch/utils/data/dataloader.py:561: UserWarning: This DataLoader will create 10 worker processes in total. Our suggested max number of worker in current system is 2, which is smaller than what this DataLoader is going to create. Please be aware that excessive worker creation might get DataLoader running slow or even freeze, lower the worker number to avoid potential slowness/freeze if necessary.\n",
            "  warnings.warn(_create_warning_msg(\n",
            "04/17 10:28:55 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Evaluating bbox...\n",
            "Loading and preparing results...\n",
            "DONE (t=0.01s)\n",
            "creating index...\n",
            "index created!\n",
            "Running per image evaluation...\n",
            "Evaluate annotation type *bbox*\n",
            "DONE (t=0.13s).\n",
            "Accumulating evaluation results...\n",
            "DONE (t=0.02s).\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.044\n",
            " Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.059\n",
            " Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.051\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.076\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.054\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.000\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.190\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.488\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.208\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.608\n",
            "04/17 10:28:55 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - bbox_mAP_copypaste: 0.044 0.059 0.051 0.000 0.076 0.054\n",
            "04/17 10:28:55 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [1][3/3]    coco/bbox_mAP: 0.0440  coco/bbox_mAP_50: 0.0590  coco/bbox_mAP_75: 0.0510  coco/bbox_mAP_s: 0.0000  coco/bbox_mAP_m: 0.0760  coco/bbox_mAP_l: 0.0540  data_time: 0.1730  time: 0.2618\n",
            "04/17 10:28:56 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - The best checkpoint with 0.0440 coco/bbox_mAP at 1 epoch is saved to best_coco_bbox_mAP_epoch_1.pth.\n",
            "04/17 10:28:59 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train)  [2][ 5/16]  lr: 8.0000e-05  eta: 0:02:09  time: 0.4335  data_time: 0.0945  memory: 1422  loss: 2.7141  loss_cls: 2.0473  loss_bbox: 0.6668\n",
            "04/17 10:29:02 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train)  [2][10/16]  lr: 8.0000e-05  eta: 0:02:20  time: 0.4791  data_time: 0.1165  memory: 1422  loss: 2.7160  loss_cls: 2.0560  loss_bbox: 0.6600\n",
            "04/17 10:29:04 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train)  [2][15/16]  lr: 8.0000e-05  eta: 0:02:13  time: 0.4614  data_time: 0.0997  memory: 1422  loss: 2.7240  loss_cls: 2.0732  loss_bbox: 0.6507\n",
            "04/17 10:29:04 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Exp name: rtmdet_tiny_1xb4-20e_balloon_20230417_102835\n",
            "04/17 10:29:05 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Evaluating bbox...\n",
            "Loading and preparing results...\n",
            "DONE (t=0.00s)\n",
            "creating index...\n",
            "index created!\n",
            "Running per image evaluation...\n",
            "Evaluate annotation type *bbox*\n",
            "DONE (t=0.12s).\n",
            "Accumulating evaluation results...\n",
            "DONE (t=0.02s).\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.128\n",
            " Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.165\n",
            " Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.147\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.081\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.164\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.056\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.320\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.570\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.325\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.683\n",
            "04/17 10:29:05 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - bbox_mAP_copypaste: 0.128 0.165 0.147 0.000 0.081 0.164\n",
            "04/17 10:29:05 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [2][3/3]    coco/bbox_mAP: 0.1280  coco/bbox_mAP_50: 0.1650  coco/bbox_mAP_75: 0.1470  coco/bbox_mAP_s: 0.0000  coco/bbox_mAP_m: 0.0810  coco/bbox_mAP_l: 0.1640  data_time: 0.1576  time: 0.2254\n",
            "04/17 10:29:05 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - The previous best checkpoint /content/mmdetection/work_dirs/rtmdet_tiny_1xb4-20e_balloon/best_coco_bbox_mAP_epoch_1.pth is removed\n",
            "04/17 10:29:06 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - The best checkpoint with 0.1280 coco/bbox_mAP at 2 epoch is saved to best_coco_bbox_mAP_epoch_2.pth.\n",
            "04/17 10:29:08 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train)  [3][ 5/16]  lr: 8.0000e-05  eta: 0:02:06  time: 0.4462  data_time: 0.1025  memory: 1422  loss: 2.7154  loss_cls: 2.0725  loss_bbox: 0.6429\n",
            "04/17 10:29:10 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train)  [3][10/16]  lr: 8.0000e-05  eta: 0:02:01  time: 0.4378  data_time: 0.1003  memory: 1422  loss: 2.7268  loss_cls: 2.0980  loss_bbox: 0.6288\n",
            "04/17 10:29:12 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train)  [3][15/16]  lr: 8.0000e-05  eta: 0:01:54  time: 0.4192  data_time: 0.0922  memory: 1422  loss: 2.7336  loss_cls: 2.1177  loss_bbox: 0.6159\n",
            "04/17 10:29:12 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Exp name: rtmdet_tiny_1xb4-20e_balloon_20230417_102835\n",
            "04/17 10:29:12 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Evaluating bbox...\n",
            "Loading and preparing results...\n",
            "DONE (t=0.00s)\n",
            "creating index...\n",
            "index created!\n",
            "Running per image evaluation...\n",
            "Evaluate annotation type *bbox*\n",
            "DONE (t=0.13s).\n",
            "Accumulating evaluation results...\n",
            "DONE (t=0.02s).\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.308\n",
            " Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.381\n",
            " Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.356\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.098\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.409\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.146\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.370\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.646\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.292\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.800\n",
            "04/17 10:29:12 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - bbox_mAP_copypaste: 0.308 0.381 0.356 0.000 0.098 0.409\n",
            "04/17 10:29:12 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [3][3/3]    coco/bbox_mAP: 0.3080  coco/bbox_mAP_50: 0.3810  coco/bbox_mAP_75: 0.3560  coco/bbox_mAP_s: 0.0000  coco/bbox_mAP_m: 0.0980  coco/bbox_mAP_l: 0.4090  data_time: 0.1456  time: 0.2063\n",
            "04/17 10:29:12 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - The previous best checkpoint /content/mmdetection/work_dirs/rtmdet_tiny_1xb4-20e_balloon/best_coco_bbox_mAP_epoch_2.pth is removed\n",
            "04/17 10:29:14 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - The best checkpoint with 0.3080 coco/bbox_mAP at 3 epoch is saved to best_coco_bbox_mAP_epoch_3.pth.\n",
            "04/17 10:29:17 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train)  [4][ 5/16]  lr: 8.0000e-05  eta: 0:01:54  time: 0.3957  data_time: 0.0830  memory: 1422  loss: 2.7228  loss_cls: 2.1246  loss_bbox: 0.5982\n",
            "04/17 10:29:19 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train)  [4][10/16]  lr: 8.0000e-05  eta: 0:01:54  time: 0.4205  data_time: 0.0934  memory: 1422  loss: 2.7104  loss_cls: 2.1374  loss_bbox: 0.5730\n",
            "04/17 10:29:21 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train)  [4][15/16]  lr: 8.0000e-05  eta: 0:01:51  time: 0.4289  data_time: 0.1029  memory: 1422  loss: 2.6786  loss_cls: 2.1263  loss_bbox: 0.5524\n",
            "04/17 10:29:21 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Exp name: rtmdet_tiny_1xb4-20e_balloon_20230417_102835\n",
            "04/17 10:29:22 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Evaluating bbox...\n",
            "Loading and preparing results...\n",
            "DONE (t=0.00s)\n",
            "creating index...\n",
            "index created!\n",
            "Running per image evaluation...\n",
            "Evaluate annotation type *bbox*\n",
            "DONE (t=0.12s).\n",
            "Accumulating evaluation results...\n",
            "DONE (t=0.02s).\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.406\n",
            " Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.531\n",
            " Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.449\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.116\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.525\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.166\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.496\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.694\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.533\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.786\n",
            "04/17 10:29:22 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - bbox_mAP_copypaste: 0.406 0.531 0.449 0.000 0.116 0.525\n",
            "04/17 10:29:22 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [4][3/3]    coco/bbox_mAP: 0.4060  coco/bbox_mAP_50: 0.5310  coco/bbox_mAP_75: 0.4490  coco/bbox_mAP_s: 0.0000  coco/bbox_mAP_m: 0.1160  coco/bbox_mAP_l: 0.5250  data_time: 0.1390  time: 0.1964\n",
            "04/17 10:29:22 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - The previous best checkpoint /content/mmdetection/work_dirs/rtmdet_tiny_1xb4-20e_balloon/best_coco_bbox_mAP_epoch_3.pth is removed\n",
            "04/17 10:29:23 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - The best checkpoint with 0.4060 coco/bbox_mAP at 4 epoch is saved to best_coco_bbox_mAP_epoch_4.pth.\n",
            "04/17 10:29:26 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train)  [5][ 5/16]  lr: 8.0000e-05  eta: 0:01:46  time: 0.4261  data_time: 0.1005  memory: 1422  loss: 2.6337  loss_cls: 2.1077  loss_bbox: 0.5260\n",
            "04/17 10:29:27 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train)  [5][10/16]  lr: 8.0000e-05  eta: 0:01:43  time: 0.4038  data_time: 0.0969  memory: 1422  loss: 2.5711  loss_cls: 2.0661  loss_bbox: 0.5050\n",
            "04/17 10:29:29 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train)  [5][15/16]  lr: 8.0000e-05  eta: 0:01:39  time: 0.3730  data_time: 0.0887  memory: 1422  loss: 2.4938  loss_cls: 2.0094  loss_bbox: 0.4844\n",
            "04/17 10:29:29 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Exp name: rtmdet_tiny_1xb4-20e_balloon_20230417_102835\n",
            "04/17 10:29:29 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Saving checkpoint at 5 epochs\n",
            "04/17 10:29:31 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Evaluating bbox...\n",
            "Loading and preparing results...\n",
            "DONE (t=0.01s)\n",
            "creating index...\n",
            "index created!\n",
            "Running per image evaluation...\n",
            "Evaluate annotation type *bbox*\n",
            "DONE (t=0.25s).\n",
            "Accumulating evaluation results...\n",
            "DONE (t=0.03s).\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.426\n",
            " Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.547\n",
            " Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.476\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.110\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.556\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.170\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.508\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.678\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.417\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.803\n",
            "04/17 10:29:31 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - bbox_mAP_copypaste: 0.426 0.547 0.476 0.000 0.110 0.556\n",
            "04/17 10:29:31 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [5][3/3]    coco/bbox_mAP: 0.4260  coco/bbox_mAP_50: 0.5470  coco/bbox_mAP_75: 0.4760  coco/bbox_mAP_s: 0.0000  coco/bbox_mAP_m: 0.1100  coco/bbox_mAP_l: 0.5560  data_time: 0.1361  time: 0.1959\n",
            "04/17 10:29:31 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - The previous best checkpoint /content/mmdetection/work_dirs/rtmdet_tiny_1xb4-20e_balloon/best_coco_bbox_mAP_epoch_4.pth is removed\n",
            "04/17 10:29:33 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - The best checkpoint with 0.4260 coco/bbox_mAP at 5 epoch is saved to best_coco_bbox_mAP_epoch_5.pth.\n",
            "04/17 10:29:37 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train)  [6][ 5/16]  lr: 8.0000e-05  eta: 0:01:40  time: 0.4070  data_time: 0.1114  memory: 1422  loss: 2.4067  loss_cls: 1.9395  loss_bbox: 0.4673\n",
            "04/17 10:29:39 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train)  [6][10/16]  lr: 8.0000e-05  eta: 0:01:37  time: 0.4020  data_time: 0.1043  memory: 1422  loss: 2.3103  loss_cls: 1.8537  loss_bbox: 0.4566\n",
            "04/17 10:29:40 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train)  [6][15/16]  lr: 8.0000e-05  eta: 0:01:33  time: 0.4037  data_time: 0.1089  memory: 1422  loss: 2.2055  loss_cls: 1.7604  loss_bbox: 0.4451\n",
            "04/17 10:29:40 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Exp name: rtmdet_tiny_1xb4-20e_balloon_20230417_102835\n",
            "04/17 10:29:41 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Evaluating bbox...\n",
            "Loading and preparing results...\n",
            "DONE (t=0.00s)\n",
            "creating index...\n",
            "index created!\n",
            "Running per image evaluation...\n",
            "Evaluate annotation type *bbox*\n",
            "DONE (t=0.12s).\n",
            "Accumulating evaluation results...\n",
            "DONE (t=0.02s).\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.455\n",
            " Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.579\n",
            " Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.492\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.173\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.584\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.160\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.582\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.702\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.517\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.803\n",
            "04/17 10:29:41 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - bbox_mAP_copypaste: 0.455 0.579 0.492 0.000 0.173 0.584\n",
            "04/17 10:29:41 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [6][3/3]    coco/bbox_mAP: 0.4550  coco/bbox_mAP_50: 0.5790  coco/bbox_mAP_75: 0.4920  coco/bbox_mAP_s: 0.0000  coco/bbox_mAP_m: 0.1730  coco/bbox_mAP_l: 0.5840  data_time: 0.1338  time: 0.1915\n",
            "04/17 10:29:41 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - The previous best checkpoint /content/mmdetection/work_dirs/rtmdet_tiny_1xb4-20e_balloon/best_coco_bbox_mAP_epoch_5.pth is removed\n",
            "04/17 10:29:42 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - The best checkpoint with 0.4550 coco/bbox_mAP at 6 epoch is saved to best_coco_bbox_mAP_epoch_6.pth.\n",
            "04/17 10:29:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train)  [7][ 5/16]  lr: 8.0000e-05  eta: 0:01:30  time: 0.4004  data_time: 0.1114  memory: 1422  loss: 2.0828  loss_cls: 1.6540  loss_bbox: 0.4288\n",
            "04/17 10:29:46 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train)  [7][10/16]  lr: 8.0000e-05  eta: 0:01:27  time: 0.3826  data_time: 0.1077  memory: 1422  loss: 1.9577  loss_cls: 1.5354  loss_bbox: 0.4222\n",
            "04/17 10:29:48 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train)  [7][15/16]  lr: 8.0000e-05  eta: 0:01:24  time: 0.3629  data_time: 0.0973  memory: 1422  loss: 1.8775  loss_cls: 1.4601  loss_bbox: 0.4174\n",
            "04/17 10:29:48 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Exp name: rtmdet_tiny_1xb4-20e_balloon_20230417_102835\n",
            "04/17 10:29:49 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Evaluating bbox...\n",
            "Loading and preparing results...\n",
            "DONE (t=0.01s)\n",
            "creating index...\n",
            "index created!\n",
            "Running per image evaluation...\n",
            "Evaluate annotation type *bbox*\n",
            "DONE (t=0.25s).\n",
            "Accumulating evaluation results...\n",
            "DONE (t=0.03s).\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.494\n",
            " Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.658\n",
            " Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.558\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.186\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.613\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.174\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.578\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.726\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.575\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.817\n",
            "04/17 10:29:49 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - bbox_mAP_copypaste: 0.494 0.658 0.558 0.000 0.186 0.613\n",
            "04/17 10:29:49 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [7][3/3]    coco/bbox_mAP: 0.4940  coco/bbox_mAP_50: 0.6580  coco/bbox_mAP_75: 0.5580  coco/bbox_mAP_s: 0.0000  coco/bbox_mAP_m: 0.1860  coco/bbox_mAP_l: 0.6130  data_time: 0.1454  time: 0.2026\n",
            "04/17 10:29:49 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - The previous best checkpoint /content/mmdetection/work_dirs/rtmdet_tiny_1xb4-20e_balloon/best_coco_bbox_mAP_epoch_6.pth is removed\n",
            "04/17 10:29:51 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - The best checkpoint with 0.4940 coco/bbox_mAP at 7 epoch is saved to best_coco_bbox_mAP_epoch_7.pth.\n",
            "04/17 10:29:54 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train)  [8][ 5/16]  lr: 8.0000e-05  eta: 0:01:22  time: 0.3740  data_time: 0.1034  memory: 1422  loss: 1.7607  loss_cls: 1.3465  loss_bbox: 0.4142\n",
            "04/17 10:29:55 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train)  [8][10/16]  lr: 8.0000e-05  eta: 0:01:19  time: 0.3734  data_time: 0.1042  memory: 1422  loss: 1.6590  loss_cls: 1.2527  loss_bbox: 0.4064\n",
            "04/17 10:29:56 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train)  [8][15/16]  lr: 8.0000e-05  eta: 0:01:16  time: 0.3658  data_time: 0.0988  memory: 1422  loss: 1.5863  loss_cls: 1.1838  loss_bbox: 0.4025\n",
            "04/17 10:29:56 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Exp name: rtmdet_tiny_1xb4-20e_balloon_20230417_102835\n",
            "04/17 10:29:57 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Evaluating bbox...\n",
            "Loading and preparing results...\n",
            "DONE (t=0.00s)\n",
            "creating index...\n",
            "index created!\n",
            "Running per image evaluation...\n",
            "Evaluate annotation type *bbox*\n",
            "DONE (t=0.11s).\n",
            "Accumulating evaluation results...\n",
            "DONE (t=0.02s).\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.542\n",
            " Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.693\n",
            " Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.620\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.231\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.666\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.190\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.618\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.740\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.625\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.819\n",
            "04/17 10:29:57 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - bbox_mAP_copypaste: 0.542 0.693 0.620 0.000 0.231 0.666\n",
            "04/17 10:29:57 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [8][3/3]    coco/bbox_mAP: 0.5420  coco/bbox_mAP_50: 0.6930  coco/bbox_mAP_75: 0.6200  coco/bbox_mAP_s: 0.0000  coco/bbox_mAP_m: 0.2310  coco/bbox_mAP_l: 0.6660  data_time: 0.1422  time: 0.1982\n",
            "04/17 10:29:57 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - The previous best checkpoint /content/mmdetection/work_dirs/rtmdet_tiny_1xb4-20e_balloon/best_coco_bbox_mAP_epoch_7.pth is removed\n",
            "04/17 10:29:59 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - The best checkpoint with 0.5420 coco/bbox_mAP at 8 epoch is saved to best_coco_bbox_mAP_epoch_8.pth.\n",
            "04/17 10:30:01 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train)  [9][ 5/16]  lr: 8.0000e-05  eta: 0:01:14  time: 0.3413  data_time: 0.0825  memory: 1422  loss: 1.4943  loss_cls: 1.1003  loss_bbox: 0.3940\n",
            "04/17 10:30:03 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train)  [9][10/16]  lr: 8.0000e-05  eta: 0:01:12  time: 0.3545  data_time: 0.0888  memory: 1422  loss: 1.4314  loss_cls: 1.0468  loss_bbox: 0.3846\n",
            "04/17 10:30:05 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train)  [9][15/16]  lr: 8.0000e-05  eta: 0:01:10  time: 0.3613  data_time: 0.0938  memory: 1422  loss: 1.3590  loss_cls: 0.9855  loss_bbox: 0.3735\n",
            "04/17 10:30:05 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Exp name: rtmdet_tiny_1xb4-20e_balloon_20230417_102835\n",
            "04/17 10:30:06 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Evaluating bbox...\n",
            "Loading and preparing results...\n",
            "DONE (t=0.01s)\n",
            "creating index...\n",
            "index created!\n",
            "Running per image evaluation...\n",
            "Evaluate annotation type *bbox*\n",
            "DONE (t=0.24s).\n",
            "Accumulating evaluation results...\n",
            "DONE (t=0.03s).\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.611\n",
            " Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.725\n",
            " Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.689\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.227\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.751\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.214\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.696\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.774\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.633\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.864\n",
            "04/17 10:30:07 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - bbox_mAP_copypaste: 0.611 0.725 0.689 0.000 0.227 0.751\n",
            "04/17 10:30:07 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [9][3/3]    coco/bbox_mAP: 0.6110  coco/bbox_mAP_50: 0.7250  coco/bbox_mAP_75: 0.6890  coco/bbox_mAP_s: 0.0000  coco/bbox_mAP_m: 0.2270  coco/bbox_mAP_l: 0.7510  data_time: 0.1471  time: 0.2029\n",
            "04/17 10:30:07 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - The previous best checkpoint /content/mmdetection/work_dirs/rtmdet_tiny_1xb4-20e_balloon/best_coco_bbox_mAP_epoch_8.pth is removed\n",
            "04/17 10:30:08 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - The best checkpoint with 0.6110 coco/bbox_mAP at 9 epoch is saved to best_coco_bbox_mAP_epoch_9.pth.\n",
            "04/17 10:30:10 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [10][ 5/16]  lr: 8.0000e-05  eta: 0:01:08  time: 0.3742  data_time: 0.0985  memory: 1422  loss: 1.2606  loss_cls: 0.8955  loss_bbox: 0.3651\n",
            "04/17 10:30:12 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [10][10/16]  lr: 8.0000e-05  eta: 0:01:05  time: 0.3687  data_time: 0.0901  memory: 1422  loss: 1.2161  loss_cls: 0.8550  loss_bbox: 0.3611\n",
            "04/17 10:30:13 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [10][15/16]  lr: 8.0000e-05  eta: 0:01:03  time: 0.3582  data_time: 0.0862  memory: 1422  loss: 1.1586  loss_cls: 0.8081  loss_bbox: 0.3505\n",
            "04/17 10:30:13 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Exp name: rtmdet_tiny_1xb4-20e_balloon_20230417_102835\n",
            "04/17 10:30:13 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Saving checkpoint at 10 epochs\n",
            "04/17 10:30:15 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Evaluating bbox...\n",
            "Loading and preparing results...\n",
            "DONE (t=0.00s)\n",
            "creating index...\n",
            "index created!\n",
            "Running per image evaluation...\n",
            "Evaluate annotation type *bbox*\n",
            "DONE (t=0.12s).\n",
            "Accumulating evaluation results...\n",
            "DONE (t=0.02s).\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.623\n",
            " Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.741\n",
            " Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.698\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.273\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.761\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.226\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.670\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.768\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.642\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.853\n",
            "04/17 10:30:16 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - bbox_mAP_copypaste: 0.623 0.741 0.698 0.000 0.273 0.761\n",
            "04/17 10:30:16 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [10][3/3]    coco/bbox_mAP: 0.6230  coco/bbox_mAP_50: 0.7410  coco/bbox_mAP_75: 0.6980  coco/bbox_mAP_s: 0.0000  coco/bbox_mAP_m: 0.2730  coco/bbox_mAP_l: 0.7610  data_time: 0.1447  time: 0.2024\n",
            "04/17 10:30:16 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - The previous best checkpoint /content/mmdetection/work_dirs/rtmdet_tiny_1xb4-20e_balloon/best_coco_bbox_mAP_epoch_9.pth is removed\n",
            "04/17 10:30:17 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - The best checkpoint with 0.6230 coco/bbox_mAP at 10 epoch is saved to best_coco_bbox_mAP_epoch_10.pth.\n",
            "04/17 10:30:20 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [11][ 5/16]  lr: 7.9883e-05  eta: 0:01:01  time: 0.3772  data_time: 0.0894  memory: 1422  loss: 1.0756  loss_cls: 0.7460  loss_bbox: 0.3297\n",
            "04/17 10:30:22 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [11][10/16]  lr: 7.9408e-05  eta: 0:01:00  time: 0.3923  data_time: 0.0905  memory: 1422  loss: 1.0549  loss_cls: 0.7295  loss_bbox: 0.3254\n",
            "04/17 10:30:24 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [11][15/16]  lr: 7.8573e-05  eta: 0:00:58  time: 0.4015  data_time: 0.1017  memory: 1422  loss: 1.0355  loss_cls: 0.7114  loss_bbox: 0.3241\n",
            "04/17 10:30:24 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Exp name: rtmdet_tiny_1xb4-20e_balloon_20230417_102835\n",
            "04/17 10:30:25 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Evaluating bbox...\n",
            "Loading and preparing results...\n",
            "DONE (t=0.00s)\n",
            "creating index...\n",
            "index created!\n",
            "Running per image evaluation...\n",
            "Evaluate annotation type *bbox*\n",
            "DONE (t=0.11s).\n",
            "Accumulating evaluation results...\n",
            "DONE (t=0.02s).\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.645\n",
            " Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.772\n",
            " Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.709\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.231\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.778\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.226\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.686\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.782\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.692\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.856\n",
            "04/17 10:30:25 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - bbox_mAP_copypaste: 0.645 0.772 0.709 0.000 0.231 0.778\n",
            "04/17 10:30:25 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [11][3/3]    coco/bbox_mAP: 0.6450  coco/bbox_mAP_50: 0.7720  coco/bbox_mAP_75: 0.7090  coco/bbox_mAP_s: 0.0000  coco/bbox_mAP_m: 0.2310  coco/bbox_mAP_l: 0.7780  data_time: 0.1423  time: 0.1990\n",
            "04/17 10:30:25 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - The previous best checkpoint /content/mmdetection/work_dirs/rtmdet_tiny_1xb4-20e_balloon/best_coco_bbox_mAP_epoch_10.pth is removed\n",
            "04/17 10:30:26 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - The best checkpoint with 0.6450 coco/bbox_mAP at 11 epoch is saved to best_coco_bbox_mAP_epoch_11.pth.\n",
            "04/17 10:30:29 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [12][ 5/16]  lr: 7.7107e-05  eta: 0:00:55  time: 0.4071  data_time: 0.1000  memory: 1422  loss: 0.9773  loss_cls: 0.6681  loss_bbox: 0.3092\n",
            "04/17 10:30:30 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [12][10/16]  lr: 7.5513e-05  eta: 0:00:53  time: 0.4009  data_time: 0.0986  memory: 1422  loss: 0.9503  loss_cls: 0.6470  loss_bbox: 0.3033\n",
            "04/17 10:30:32 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [12][15/16]  lr: 7.3596e-05  eta: 0:00:50  time: 0.3808  data_time: 0.0966  memory: 1422  loss: 0.9250  loss_cls: 0.6268  loss_bbox: 0.2982\n",
            "04/17 10:30:32 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Exp name: rtmdet_tiny_1xb4-20e_balloon_20230417_102835\n",
            "04/17 10:30:32 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Evaluating bbox...\n",
            "Loading and preparing results...\n",
            "DONE (t=0.00s)\n",
            "creating index...\n",
            "index created!\n",
            "Running per image evaluation...\n",
            "Evaluate annotation type *bbox*\n",
            "DONE (t=0.12s).\n",
            "Accumulating evaluation results...\n",
            "DONE (t=0.02s).\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.617\n",
            " Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.751\n",
            " Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.696\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.218\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.750\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.210\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.662\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.760\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.633\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.844\n",
            "04/17 10:30:33 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - bbox_mAP_copypaste: 0.617 0.751 0.696 0.000 0.218 0.750\n",
            "04/17 10:30:33 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [12][3/3]    coco/bbox_mAP: 0.6170  coco/bbox_mAP_50: 0.7510  coco/bbox_mAP_75: 0.6960  coco/bbox_mAP_s: 0.0000  coco/bbox_mAP_m: 0.2180  coco/bbox_mAP_l: 0.7500  data_time: 0.1405  time: 0.1964\n",
            "04/17 10:30:36 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [13][ 5/16]  lr: 7.0895e-05  eta: 0:00:49  time: 0.4001  data_time: 0.1021  memory: 1422  loss: 0.9386  loss_cls: 0.6415  loss_bbox: 0.2971\n",
            "04/17 10:30:39 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [13][10/16]  lr: 6.8337e-05  eta: 0:00:47  time: 0.4275  data_time: 0.1168  memory: 1422  loss: 0.9174  loss_cls: 0.6254  loss_bbox: 0.2920\n",
            "04/17 10:30:41 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [13][15/16]  lr: 6.5526e-05  eta: 0:00:45  time: 0.4284  data_time: 0.1216  memory: 1422  loss: 0.9057  loss_cls: 0.6122  loss_bbox: 0.2935\n",
            "04/17 10:30:41 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Exp name: rtmdet_tiny_1xb4-20e_balloon_20230417_102835\n",
            "04/17 10:30:41 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Evaluating bbox...\n",
            "Loading and preparing results...\n",
            "DONE (t=0.00s)\n",
            "creating index...\n",
            "index created!\n",
            "Running per image evaluation...\n",
            "Evaluate annotation type *bbox*\n",
            "DONE (t=0.11s).\n",
            "Accumulating evaluation results...\n",
            "DONE (t=0.02s).\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.635\n",
            " Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.755\n",
            " Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.718\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.242\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.771\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.210\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.680\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.774\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.642\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.861\n",
            "04/17 10:30:42 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - bbox_mAP_copypaste: 0.635 0.755 0.718 0.000 0.242 0.771\n",
            "04/17 10:30:42 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [13][3/3]    coco/bbox_mAP: 0.6350  coco/bbox_mAP_50: 0.7550  coco/bbox_mAP_75: 0.7180  coco/bbox_mAP_s: 0.0000  coco/bbox_mAP_m: 0.2420  coco/bbox_mAP_l: 0.7710  data_time: 0.1386  time: 0.1939\n",
            "04/17 10:30:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [14][ 5/16]  lr: 6.1855e-05  eta: 0:00:43  time: 0.4110  data_time: 0.1137  memory: 1422  loss: 0.9190  loss_cls: 0.6193  loss_bbox: 0.2997\n",
            "04/17 10:30:45 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [14][10/16]  lr: 5.8584e-05  eta: 0:00:40  time: 0.4015  data_time: 0.1135  memory: 1422  loss: 0.9312  loss_cls: 0.6258  loss_bbox: 0.3054\n",
            "04/17 10:30:47 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [14][15/16]  lr: 5.5152e-05  eta: 0:00:38  time: 0.3801  data_time: 0.1030  memory: 1422  loss: 0.9122  loss_cls: 0.6111  loss_bbox: 0.3011\n",
            "04/17 10:30:47 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Exp name: rtmdet_tiny_1xb4-20e_balloon_20230417_102835\n",
            "04/17 10:30:47 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Evaluating bbox...\n",
            "Loading and preparing results...\n",
            "DONE (t=0.00s)\n",
            "creating index...\n",
            "index created!\n",
            "Running per image evaluation...\n",
            "Evaluate annotation type *bbox*\n",
            "DONE (t=0.11s).\n",
            "Accumulating evaluation results...\n",
            "DONE (t=0.02s).\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.636\n",
            " Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.739\n",
            " Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.708\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.220\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.782\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.222\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.690\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.788\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.683\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.867\n",
            "04/17 10:30:47 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - bbox_mAP_copypaste: 0.636 0.739 0.708 0.000 0.220 0.782\n",
            "04/17 10:30:47 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [14][3/3]    coco/bbox_mAP: 0.6360  coco/bbox_mAP_50: 0.7390  coco/bbox_mAP_75: 0.7080  coco/bbox_mAP_s: 0.0000  coco/bbox_mAP_m: 0.2200  coco/bbox_mAP_l: 0.7820  data_time: 0.1371  time: 0.1918\n",
            "04/17 10:30:50 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [15][ 5/16]  lr: 5.0871e-05  eta: 0:00:36  time: 0.3939  data_time: 0.1054  memory: 1422  loss: 0.8896  loss_cls: 0.5903  loss_bbox: 0.2993\n",
            "04/17 10:30:53 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [15][10/16]  lr: 4.7206e-05  eta: 0:00:34  time: 0.4165  data_time: 0.1144  memory: 1422  loss: 0.8796  loss_cls: 0.5829  loss_bbox: 0.2967\n",
            "04/17 10:30:55 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [15][15/16]  lr: 4.3492e-05  eta: 0:00:32  time: 0.4306  data_time: 0.1161  memory: 1422  loss: 0.8680  loss_cls: 0.5699  loss_bbox: 0.2981\n",
            "04/17 10:30:55 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Exp name: rtmdet_tiny_1xb4-20e_balloon_20230417_102835\n",
            "04/17 10:30:55 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Saving checkpoint at 15 epochs\n",
            "04/17 10:30:57 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Evaluating bbox...\n",
            "Loading and preparing results...\n",
            "DONE (t=0.00s)\n",
            "creating index...\n",
            "index created!\n",
            "Running per image evaluation...\n",
            "Evaluate annotation type *bbox*\n",
            "DONE (t=0.11s).\n",
            "Accumulating evaluation results...\n",
            "DONE (t=0.01s).\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.644\n",
            " Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.750\n",
            " Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.701\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.232\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.788\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.224\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.686\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.790\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.692\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.867\n",
            "04/17 10:30:57 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - bbox_mAP_copypaste: 0.644 0.750 0.701 0.000 0.232 0.788\n",
            "04/17 10:30:57 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [15][3/3]    coco/bbox_mAP: 0.6440  coco/bbox_mAP_50: 0.7500  coco/bbox_mAP_75: 0.7010  coco/bbox_mAP_s: 0.0000  coco/bbox_mAP_m: 0.2320  coco/bbox_mAP_l: 0.7880  data_time: 0.1364  time: 0.1922\n",
            "04/17 10:30:59 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [16][ 5/16]  lr: 3.9019e-05  eta: 0:00:30  time: 0.4257  data_time: 0.1152  memory: 1422  loss: 0.8383  loss_cls: 0.5478  loss_bbox: 0.2904\n",
            "04/17 10:31:01 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [16][10/16]  lr: 3.5320e-05  eta: 0:00:28  time: 0.3921  data_time: 0.0945  memory: 1422  loss: 0.8302  loss_cls: 0.5349  loss_bbox: 0.2953\n",
            "04/17 10:31:03 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [16][15/16]  lr: 3.1685e-05  eta: 0:00:25  time: 0.3721  data_time: 0.0851  memory: 1422  loss: 0.8413  loss_cls: 0.5464  loss_bbox: 0.2949\n",
            "04/17 10:31:03 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Exp name: rtmdet_tiny_1xb4-20e_balloon_20230417_102835\n",
            "04/17 10:31:03 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Evaluating bbox...\n",
            "Loading and preparing results...\n",
            "DONE (t=0.00s)\n",
            "creating index...\n",
            "index created!\n",
            "Running per image evaluation...\n",
            "Evaluate annotation type *bbox*\n",
            "DONE (t=0.12s).\n",
            "Accumulating evaluation results...\n",
            "DONE (t=0.01s).\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.667\n",
            " Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.769\n",
            " Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.741\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.264\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.800\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.218\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.714\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.802\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.708\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.878\n",
            "04/17 10:31:03 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - bbox_mAP_copypaste: 0.667 0.769 0.741 0.000 0.264 0.800\n",
            "04/17 10:31:03 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [16][3/3]    coco/bbox_mAP: 0.6670  coco/bbox_mAP_50: 0.7690  coco/bbox_mAP_75: 0.7410  coco/bbox_mAP_s: 0.0000  coco/bbox_mAP_m: 0.2640  coco/bbox_mAP_l: 0.8000  data_time: 0.1355  time: 0.1909\n",
            "04/17 10:31:03 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - The previous best checkpoint /content/mmdetection/work_dirs/rtmdet_tiny_1xb4-20e_balloon/best_coco_bbox_mAP_epoch_11.pth is removed\n",
            "04/17 10:31:05 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - The best checkpoint with 0.6670 coco/bbox_mAP at 16 epoch is saved to best_coco_bbox_mAP_epoch_16.pth.\n",
            "04/17 10:31:08 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [17][ 5/16]  lr: 2.7458e-05  eta: 0:00:23  time: 0.3927  data_time: 0.0868  memory: 1422  loss: 0.8335  loss_cls: 0.5406  loss_bbox: 0.2929\n",
            "04/17 10:31:10 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [17][10/16]  lr: 2.4087e-05  eta: 0:00:21  time: 0.4168  data_time: 0.0975  memory: 1422  loss: 0.8255  loss_cls: 0.5369  loss_bbox: 0.2886\n",
            "04/17 10:31:12 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [17][15/16]  lr: 2.0888e-05  eta: 0:00:19  time: 0.4215  data_time: 0.0995  memory: 1422  loss: 0.7952  loss_cls: 0.5153  loss_bbox: 0.2799\n",
            "04/17 10:31:12 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Exp name: rtmdet_tiny_1xb4-20e_balloon_20230417_102835\n",
            "04/17 10:31:13 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Evaluating bbox...\n",
            "Loading and preparing results...\n",
            "DONE (t=0.00s)\n",
            "creating index...\n",
            "index created!\n",
            "Running per image evaluation...\n",
            "Evaluate annotation type *bbox*\n",
            "DONE (t=0.11s).\n",
            "Accumulating evaluation results...\n",
            "DONE (t=0.02s).\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.670\n",
            " Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.769\n",
            " Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.736\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.262\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.811\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.220\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.702\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.796\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.667\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.883\n",
            "04/17 10:31:13 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - bbox_mAP_copypaste: 0.670 0.769 0.736 0.000 0.262 0.811\n",
            "04/17 10:31:13 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [17][3/3]    coco/bbox_mAP: 0.6700  coco/bbox_mAP_50: 0.7690  coco/bbox_mAP_75: 0.7360  coco/bbox_mAP_s: 0.0000  coco/bbox_mAP_m: 0.2620  coco/bbox_mAP_l: 0.8110  data_time: 0.1274  time: 0.1807\n",
            "04/17 10:31:13 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - The previous best checkpoint /content/mmdetection/work_dirs/rtmdet_tiny_1xb4-20e_balloon/best_coco_bbox_mAP_epoch_16.pth is removed\n",
            "04/17 10:31:14 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - The best checkpoint with 0.6700 coco/bbox_mAP at 17 epoch is saved to best_coco_bbox_mAP_epoch_17.pth.\n",
            "04/17 10:31:17 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [18][ 5/16]  lr: 1.7321e-05  eta: 0:00:17  time: 0.4258  data_time: 0.0986  memory: 1422  loss: 0.8050  loss_cls: 0.5228  loss_bbox: 0.2821\n",
            "04/17 10:31:18 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [18][10/16]  lr: 1.4608e-05  eta: 0:00:15  time: 0.3996  data_time: 0.0886  memory: 1422  loss: 0.8288  loss_cls: 0.5427  loss_bbox: 0.2861\n",
            "04/17 10:31:19 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [18][15/16]  lr: 1.2158e-05  eta: 0:00:13  time: 0.3710  data_time: 0.0774  memory: 1422  loss: 0.8460  loss_cls: 0.5555  loss_bbox: 0.2906\n",
            "04/17 10:31:19 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Exp name: rtmdet_tiny_1xb4-20e_balloon_20230417_102835\n",
            "04/17 10:31:20 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Evaluating bbox...\n",
            "Loading and preparing results...\n",
            "DONE (t=0.00s)\n",
            "creating index...\n",
            "index created!\n",
            "Running per image evaluation...\n",
            "Evaluate annotation type *bbox*\n",
            "DONE (t=0.11s).\n",
            "Accumulating evaluation results...\n",
            "DONE (t=0.02s).\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.657\n",
            " Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.755\n",
            " Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.720\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.243\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.802\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.222\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.696\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.788\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.658\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.875\n",
            "04/17 10:31:20 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - bbox_mAP_copypaste: 0.657 0.755 0.720 0.000 0.243 0.802\n",
            "04/17 10:31:20 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [18][3/3]    coco/bbox_mAP: 0.6570  coco/bbox_mAP_50: 0.7550  coco/bbox_mAP_75: 0.7200  coco/bbox_mAP_s: 0.0000  coco/bbox_mAP_m: 0.2430  coco/bbox_mAP_l: 0.8020  data_time: 0.1262  time: 0.1788\n",
            "04/17 10:31:23 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [19][ 5/16]  lr: 9.5997e-06  eta: 0:00:10  time: 0.3893  data_time: 0.0942  memory: 1422  loss: 0.8529  loss_cls: 0.5586  loss_bbox: 0.2943\n",
            "04/17 10:31:25 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [19][10/16]  lr: 7.8096e-06  eta: 0:00:08  time: 0.3976  data_time: 0.0917  memory: 1422  loss: 0.8404  loss_cls: 0.5487  loss_bbox: 0.2917\n",
            "04/17 10:31:28 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [19][15/16]  lr: 6.3487e-06  eta: 0:00:06  time: 0.4112  data_time: 0.0973  memory: 1422  loss: 0.8332  loss_cls: 0.5454  loss_bbox: 0.2878\n",
            "04/17 10:31:28 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Exp name: rtmdet_tiny_1xb4-20e_balloon_20230417_102835\n",
            "04/17 10:31:28 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Evaluating bbox...\n",
            "Loading and preparing results...\n",
            "DONE (t=0.00s)\n",
            "creating index...\n",
            "index created!\n",
            "Running per image evaluation...\n",
            "Evaluate annotation type *bbox*\n",
            "DONE (t=0.11s).\n",
            "Accumulating evaluation results...\n",
            "DONE (t=0.02s).\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.648\n",
            " Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.758\n",
            " Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.714\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.278\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.786\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.220\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.682\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.788\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.692\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.864\n",
            "04/17 10:31:28 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - bbox_mAP_copypaste: 0.648 0.758 0.714 0.000 0.278 0.786\n",
            "04/17 10:31:28 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [19][3/3]    coco/bbox_mAP: 0.6480  coco/bbox_mAP_50: 0.7580  coco/bbox_mAP_75: 0.7140  coco/bbox_mAP_s: 0.0000  coco/bbox_mAP_m: 0.2780  coco/bbox_mAP_l: 0.7860  data_time: 0.1265  time: 0.1790\n",
            "04/17 10:31:28 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Switch pipeline now!\n",
            "04/17 10:31:30 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [20][ 5/16]  lr: 5.0499e-06  eta: 0:00:04  time: 0.3946  data_time: 0.0911  memory: 1422  loss: 0.8398  loss_cls: 0.5569  loss_bbox: 0.2829\n",
            "04/17 10:31:31 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [20][10/16]  lr: 4.3584e-06  eta: 0:00:02  time: 0.3541  data_time: 0.0729  memory: 1422  loss: 0.8475  loss_cls: 0.5686  loss_bbox: 0.2789\n",
            "04/17 10:31:32 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [20][15/16]  lr: 4.0293e-06  eta: 0:00:00  time: 0.3273  data_time: 0.0671  memory: 1422  loss: 0.8943  loss_cls: 0.6161  loss_bbox: 0.2783\n",
            "04/17 10:31:32 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Exp name: rtmdet_tiny_1xb4-20e_balloon_20230417_102835\n",
            "04/17 10:31:32 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Saving checkpoint at 20 epochs\n",
            "04/17 10:31:34 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Evaluating bbox...\n",
            "Loading and preparing results...\n",
            "DONE (t=0.00s)\n",
            "creating index...\n",
            "index created!\n",
            "Running per image evaluation...\n",
            "Evaluate annotation type *bbox*\n",
            "DONE (t=0.11s).\n",
            "Accumulating evaluation results...\n",
            "DONE (t=0.01s).\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.652\n",
            " Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.794\n",
            " Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.750\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.241\n",
            " Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.785\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.222\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.706\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.782\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.675\n",
            " Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.861\n",
            "04/17 10:31:34 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - bbox_mAP_copypaste: 0.652 0.794 0.750 0.000 0.241 0.785\n",
            "04/17 10:31:34 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [20][3/3]    coco/bbox_mAP: 0.6520  coco/bbox_mAP_50: 0.7940  coco/bbox_mAP_75: 0.7500  coco/bbox_mAP_s: 0.0000  coco/bbox_mAP_m: 0.2410  coco/bbox_mAP_l: 0.7850  data_time: 0.1265  time: 0.1808\n"
          ]
        }
      ],
      "source": [
        "!python tools/train.py configs/rtmdet/rtmdet_tiny_1xb4-20e_balloon.py"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "_vYQF5K2NqqI"
      },
      "source": [
        "### Understand the log\n",
        "From the log, we can have a basic understanding on the training process and know how well the detector is trained.\n",
        "\n",
        "First, since the dataset we are using is small, we loaded a pre-trained Faster R-CNN model and fine-tune it for detection. \n",
        "The original Faster R-CNN is trained on COCO dataset that contains 80 classes but KITTI Tiny dataset only have 3 classes. Therefore, the last FC layers of the pre-trained Faster R-CNN for classification and regression have different weight shape and are not used.\n",
        "\n",
        "Second, after training, the detector is evaluated by the default VOC-style evaluation. The results show that the detector achieves 58.1 mAP on the val dataset, not bad!\n",
        "\n",
        "We can also check the tensorboard to see the curves."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 12,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 821,
          "resources": {
            "https://localhost:6006/?tensorboardColab=true": {
              "data": "[encoded data, 274524 characters]",
              "headers": [
                [
                  "content-type",
                  "text/html; charset=utf-8"
                ]
              ],
              "ok": true,
              "status": 200,
              "status_text": ""
            },
            "https://localhost:6006/chart_worker.js?_file_hash=c4417681": {
              "data": "[encoded data, 843172 characters]",
              "headers": [
                [
                  "content-type",
                  "text/javascript; charset=utf-8"
                ]
              ],
              "ok": true,
              "status": 200,
              "status_text": ""
            },
            "https://localhost:6006/data/environment": {
              "data": "eyJ2ZXJzaW9uIjogIjIuMTIuMSIsICJkYXRhX2xvY2F0aW9uIjogIi4vd29ya19kaXJzIiwgIndpbmRvd190aXRsZSI6ICIiLCAiZXhwZXJpbWVudF9uYW1lIjogIiIsICJleHBlcmltZW50X2Rlc2NyaXB0aW9uIjogIiIsICJjcmVhdGlvbl90aW1lIjogMCwgImRlYnVnIjogeyJkYXRhX3Byb3ZpZGVyIjogIk11bHRpcGxleGVyRGF0YVByb3ZpZGVyKGxvZ2Rpcj0nLi93b3JrX2RpcnMnKSIsICJmbGFncyI6IHsibG9nZGlyIjogIi4vd29ya19kaXJzIiwgImxvZ2Rpcl9zcGVjIjogIiIsICJob3N0IjogbnVsbCwgImJpbmRfYWxsIjogZmFsc2UsICJwb3J0IjogbnVsbCwgInJldXNlX3BvcnQiOiBmYWxzZSwgImxvYWRfZmFzdCI6ICJhdXRvIiwgImV4dHJhX2RhdGFfc2VydmVyX2ZsYWdzIjogIiIsICJncnBjX2NyZWRzX3R5cGUiOiAibG9jYWwiLCAiZ3JwY19kYXRhX3Byb3ZpZGVyIjogIiIsICJwdXJnZV9vcnBoYW5lZF9kYXRhIjogdHJ1ZSwgImRiIjogIiIsICJkYl9pbXBvcnQiOiBmYWxzZSwgImluc3BlY3QiOiBmYWxzZSwgInZlcnNpb25fdGIiOiBmYWxzZSwgInRhZyI6ICIiLCAiZXZlbnRfZmlsZSI6ICIiLCAicGF0aF9wcmVmaXgiOiAiIiwgIndpbmRvd190aXRsZSI6ICIiLCAibWF4X3JlbG9hZF90aHJlYWRzIjogMSwgInJlbG9hZF9pbnRlcnZhbCI6IDUuMCwgInJlbG9hZF90YXNrIjogImF1dG8iLCAicmVsb2FkX211bHRpZmlsZSI6IG51bGwsICJyZWxvYWRfbXVsdGlmaWxlX2luYWN0aXZlX3NlY3MiOiA4NjQwMCwgImdlbmVyaWNfZGF0YSI6ICJhdXRvIiwgInNhbXBsZXNfcGVyX3BsdWdpbiI6IHt9LCAiZGV0ZWN0X2ZpbGVfcmVwbGFjZW1lbnQiOiBudWxsLCAiY3VzdG9tX3ByZWRpY3RfZm4iOiAiIiwgIndpdF9kYXRhX2RpciI6ICIiLCAiX190ZW5zb3Jib2FyZF9zdWJjb21tYW5kIjogInNlcnZlIn19fQ==",
              "headers": [
                [
                  "content-type",
                  "application/json"
                ]
              ],
              "ok": true,
              "status": 200,
              "status_text": ""
            },
            "https://localhost:6006/data/plugins_listing": {
              "data": "eyJ0aW1lc2VyaWVzIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IHRydWUsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJUaW1lIFNlcmllcyIsICJsb2FkaW5nX21lY2hhbmlzbSI6IHsidHlwZSI6ICJOR19DT01QT05FTlQifX0sICJzY2FsYXJzIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IHRydWUsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJzY2FsYXJzIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJ0Zi1zY2FsYXItZGFzaGJvYXJkIn19LCAiY3VzdG9tX3NjYWxhcnMiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJDdXN0b20gU2NhbGFycyIsICJsb2FkaW5nX21lY2hhbmlzbSI6IHsidHlwZSI6ICJDVVNUT01fRUxFTUVOVCIsICJlbGVtZW50X25hbWUiOiAidGYtY3VzdG9tLXNjYWxhci1kYXNoYm9hcmQifX0sICJpbWFnZXMiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJpbWFnZXMiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiQ1VTVE9NX0VMRU1FTlQiLCAiZWxlbWVudF9uYW1lIjogInRmLWltYWdlLWRhc2hib2FyZCJ9fSwgImF1ZGlvIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAiYXVkaW8iLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiQ1VTVE9NX0VMRU1FTlQiLCAiZWxlbWVudF9uYW1lIjogInRmLWF1ZGlvLWRhc2hib2FyZCJ9fSwgImRlYnVnZ2VyLXYyIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAiRGVidWdnZXIgVjIiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiTkdfQ09NUE9ORU5UIn19LCAiZ3JhcGhzIjogeyJkaXNhYmxlX3JlbG9hZCI6IHRydWUsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJncmFwaHMiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiQ1VTVE9NX0VMRU1FTlQiLCAiZWxlbWVudF9uYW1lIjogInRmLWdyYXBoLWRhc2hib2FyZCJ9fSwgImRpc3RyaWJ1dGlvbnMiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJkaXN0cmlidXRpb25zIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJ0Zi1kaXN0cmlidXRpb24tZGFzaGJvYXJkIn19LCAiaGlzdG9ncmFtcyI6IHsiZGlzYWJsZV9yZWxvYWQiOiBmYWxzZSwgImVuYWJsZWQiOiBmYWxzZSwgInJlbW92ZV9kb20iOiBmYWxzZSwgInRhYl9uYW1lIjogImhpc3RvZ3JhbXMiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiQ1VTVE9NX0VMRU1FTlQiLCAiZWxlbWVudF9uYW1lIjogInRmLWhpc3RvZ3JhbS1kYXNoYm9hcmQifX0sICJ0ZXh0IjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IHRydWUsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJ0ZXh0IiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJ0Zi10ZXh0LWRhc2hib2FyZCJ9fSwgInByX2N1cnZlcyI6IHsiZGlzYWJsZV9yZWxvYWQiOiBmYWxzZSwgImVuYWJsZWQiOiBmYWxzZSwgInJlbW92ZV9kb20iOiBmYWxzZSwgInRhYl9uYW1lIjogIlBSIEN1cnZlcyIsICJsb2FkaW5nX21lY2hhbmlzbSI6IHsidHlwZSI6ICJDVVNUT01fRUxFTUVOVCIsICJlbGVtZW50X25hbWUiOiAidGYtcHItY3VydmUtZGFzaGJvYXJkIn19LCAicHJvZmlsZV9yZWRpcmVjdCI6IHsiZGlzYWJsZV9yZWxvYWQiOiBmYWxzZSwgImVuYWJsZWQiOiBmYWxzZSwgInJlbW92ZV9kb20iOiBmYWxzZSwgInRhYl9uYW1lIjogIlByb2ZpbGUiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiQ1VTVE9NX0VMRU1FTlQiLCAiZWxlbWVudF9uYW1lIjogInRmLXByb2ZpbGUtcmVkaXJlY3QtZGFzaGJvYXJkIn19LCAiaHBhcmFtcyI6IHsiZGlzYWJsZV9yZWxvYWQiOiBmYWxzZSwgImVuYWJsZWQiOiBmYWxzZSwgInJlbW92ZV9kb20iOiBmYWxzZSwgInRhYl9uYW1lIjogImhwYXJhbXMiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiQ1VTVE9NX0VMRU1FTlQiLCAiZWxlbWVudF9uYW1lIjogInRmLWhwYXJhbXMtZGFzaGJvYXJkIn19LCAibWVzaCI6IHsiZGlzYWJsZV9yZWxvYWQiOiBmYWxzZSwgImVuYWJsZWQiOiBmYWxzZSwgInJlbW92ZV9kb20iOiBmYWxzZSwgInRhYl9uYW1lIjogIm1lc2giLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiQ1VTVE9NX0VMRU1FTlQiLCAiZWxlbWVudF9uYW1lIjogIm1lc2gtZGFzaGJvYXJkIn19LCAicHJvamVjdG9yIjogeyJkaXNhYmxlX3JlbG9hZCI6IHRydWUsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJwcm9qZWN0b3IiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiSUZSQU1FIiwgIm1vZHVsZV9wYXRoIjogIi9kYXRhL3BsdWdpbi9wcm9qZWN0b3IvaW5kZXguanMifX0sICJ3aGF0aWYiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJXaGF0LUlmIFRvb2wiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiSUZSQU1FIiwgIm1vZHVsZV9wYXRoIjogIi9kYXRhL3BsdWdpbi93aGF0aWYvaW5kZXguanMifX19",
              "headers": [
                [
                  "content-type",
                  "application/json"
                ]
              ],
              "ok": true,
              "status": 200,
              "status_text": ""
            },
            "https://localhost:6006/data/runs": {
              "data": "WyJydG1kZXRfdGlueV8xeGI0LTIwZV9iYWxsb29uLzIwMjMwNDE3XzEwMjgzNS92aXNfZGF0YSJd",
              "headers": [
                [
                  "content-type",
                  "application/json"
                ]
              ],
              "ok": true,
              "status": 200,
              "status_text": ""
            },
            "https://localhost:6006/experiment/defaultExperimentId/data/plugin/timeseries/tags": {
              "data": "eyJzY2FsYXJzIjogeyJydW5UYWdJbmZvIjogeyJydG1kZXRfdGlueV8xeGI0LTIwZV9iYWxsb29uLzIwMjMwNDE3XzEwMjgzNS92aXNfZGF0YSI6IFsiY29jby9iYm94X21BUCIsICJjb2NvL2Jib3hfbUFQXzUwIiwgImNvY28vYmJveF9tQVBfNzUiLCAiY29jby9iYm94X21BUF9sIiwgImNvY28vYmJveF9tQVBfbSIsICJjb2NvL2Jib3hfbUFQX3MiLCAiZGF0YV90aW1lIiwgImVwb2NoIiwgImxvc3MiLCAibG9zc19iYm94IiwgImxvc3NfY2xzIiwgImxyIiwgIm1lbW9yeSIsICJ0aW1lIl19LCAidGFnRGVzY3JpcHRpb25zIjoge319LCAiaGlzdG9ncmFtcyI6IHsicnVuVGFnSW5mbyI6IHt9LCAidGFnRGVzY3JpcHRpb25zIjoge319LCAiaW1hZ2VzIjogeyJ0YWdEZXNjcmlwdGlvbnMiOiB7fSwgInRhZ1J1blNhbXBsZWRJbmZvIjoge319fQ==",
              "headers": [
                [
                  "content-type",
                  "application/json"
                ]
              ],
              "ok": true,
              "status": 200,
              "status_text": ""
            },
            "https://localhost:6006/experiment/defaultExperimentId/data/plugin/timeseries/timeSeries?requests=%5B%7B%22plugin%22:%22scalars%22,%22tag%22:%22coco/bbox_mAP%22%7D%5D": {
              "data": "W3sicGx1Z2luIjogInNjYWxhcnMiLCAidGFnIjogImNvY28vYmJveF9tQVAiLCAicnVuVG9TZXJpZXMiOiB7InJ0bWRldF90aW55XzF4YjQtMjBlX2JhbGxvb24vMjAyMzA0MTdfMTAyODM1L3Zpc19kYXRhIjogW3sid2FsbFRpbWUiOiAxNjgxNzI3MzM1LjQ0MjIzNzksICJzdGVwIjogMSwgInZhbHVlIjogMC4wNDM5OTk5OTk3NjE1ODE0Mn0sIHsid2FsbFRpbWUiOiAxNjgxNzI3MzQ1LjYzOTAwNTcsICJzdGVwIjogMiwgInZhbHVlIjogMC4xMjgwMDAwMDYwNzk2NzM3N30sIHsid2FsbFRpbWUiOiAxNjgxNzI3MzUyLjk2ODcxOTIsICJzdGVwIjogMywgInZhbHVlIjogMC4zMDc5OTk5OTgzMzEwNjk5NX0sIHsid2FsbFRpbWUiOiAxNjgxNzI3MzYyLjQ5MTM0OSwgInN0ZXAiOiA0LCAidmFsdWUiOiAwLjQwNTk5OTk4ODMxNzQ4OTZ9LCB7IndhbGxUaW1lIjogMTY4MTcyNzM3MS42NTA0NDAyLCAic3RlcCI6IDUsICJ2YWx1ZSI6IDAuNDI1OTk5OTk5MDQ2MzI1N30sIHsid2FsbFRpbWUiOiAxNjgxNzI3MzgxLjQyNjk5MSwgInN0ZXAiOiA2LCAidmFsdWUiOiAwLjQ1NTAwMDAxMzExMzAyMTg1fSwgeyJ3YWxsVGltZSI6IDE2ODE3MjczODkuNTM3NDE4OCwgInN0ZXAiOiA3LCAidmFsdWUiOiAwLjQ5Mzk5OTk4Nzg0MDY1MjQ3fSwgeyJ3YWxsVGltZSI6IDE2ODE3MjczOTcuNjg0OTgxLCAic3RlcCI6IDgsICJ2YWx1ZSI6IDAuNTQxOTk5OTk1NzA4NDY1Nn0sIHsid2FsbFRpbWUiOiAxNjgxNzI3NDA3LjAzMzE4MSwgInN0ZXAiOiA5LCAidmFsdWUiOiAwLjYxMTAwMDAwMTQzMDUxMTV9LCB7IndhbGxUaW1lIjogMTY4MTcyNzQxNi4wMzkzMTk1LCAic3RlcCI6IDEwLCAidmFsdWUiOiAwLjYyMzAwMDAyNTc0OTIwNjV9LCB7IndhbGxUaW1lIjogMTY4MTcyNzQyNS42NTUyMzgyLCAic3RlcCI6IDExLCAidmFsdWUiOiAwLjY0NDk5OTk4MDkyNjUxMzd9LCB7IndhbGxUaW1lIjogMTY4MTcyNzQzMy4wMDQyMzY1LCAic3RlcCI6IDEyLCAidmFsdWUiOiAwLjYxNjk5OTk4Mzc4NzUzNjZ9LCB7IndhbGxUaW1lIjogMTY4MTcyNzQ0Mi4wNDk3MzIyLCAic3RlcCI6IDEzLCAidmFsdWUiOiAwLjYzNDk5OTk5MDQ2MzI1Njh9LCB7IndhbGxUaW1lIjogMTY4MTcyNzQ0Ny45MzQ3MzksICJzdGVwIjogMTQsICJ2YWx1ZSI6IDAuNjM1OTk5OTc3NTg4NjUzNn0sIHsid2FsbFRpbWUiOiAxNjgxNzI3NDU3Ljk3NTI4NTMsICJzdGVwIjogMTUsICJ2YWx1ZSI6IDAuNjQzOTk5OTkzODAxMTE2OX0sIHsid2FsbFRpbWUiOiAxNjgxNzI3NDYzLjgyNTkzMTgsICJzdGVwIjogMTYsICJ2YWx1ZSI6IDAuNjY2OTk5OTk1NzA4NDY1Nn0sIHsid2FsbFRpbWUiOiAxNjgxNzI3NDczLjQ2ODcxMDIsICJzdGVwIjogMTcsICJ2YWx1ZSI6IDAuNjcwMDAwMDE2Njg5MzAwNX0sIHsid2FsbFRpbWUiOiAxNjgxNzI3NDgwLjc4OTkzNzUsICJzdGVwIjogMTgsICJ2YWx1ZSI6IDAuNjU3MDAwMDA1MjQ1MjA4N30sIHsid2FsbFRpbWUiOiAxNjgxNzI3NDg4LjkyMzkyOCwgInN0ZXAiOiAxOSwgInZhbHVlIjogMC42NDgwMDAwMDE5MDczNDg2fSwgeyJ3YWxsVGltZSI6IDE2ODE3Mjc0OTQuNTY5MzkzLCAic3RlcCI6IDIwLCAidmFsdWUiOiAwLjY1MjAwMDAxMDAxMzU4MDN9XX19XQ==",
              "headers": [
                [
                  "content-type",
                  "application/json"
                ]
              ],
              "ok": true,
              "status": 200,
              "status_text": ""
            },
            "https://localhost:6006/experiment/defaultExperimentId/data/plugin/timeseries/timeSeries?requests=%5B%7B%22plugin%22:%22scalars%22,%22tag%22:%22coco/bbox_mAP_50%22%7D%5D": {
              "data": "W3sicGx1Z2luIjogInNjYWxhcnMiLCAidGFnIjogImNvY28vYmJveF9tQVBfNTAiLCAicnVuVG9TZXJpZXMiOiB7InJ0bWRldF90aW55XzF4YjQtMjBlX2JhbGxvb24vMjAyMzA0MTdfMTAyODM1L3Zpc19kYXRhIjogW3sid2FsbFRpbWUiOiAxNjgxNzI3MzM1LjQ0MjQ1MDMsICJzdGVwIjogMSwgInZhbHVlIjogMC4wNTkwMDAwMDAzNTc2Mjc4N30sIHsid2FsbFRpbWUiOiAxNjgxNzI3MzQ1LjYzOTEwOTYsICJzdGVwIjogMiwgInZhbHVlIjogMC4xNjUwMDAwMDY1NTY1MTA5M30sIHsid2FsbFRpbWUiOiAxNjgxNzI3MzUyLjk2ODgxNDgsICJzdGVwIjogMywgInZhbHVlIjogMC4zODEwMDAwMTIxNTkzNDc1M30sIHsid2FsbFRpbWUiOiAxNjgxNzI3MzYyLjQ5MTQ1MDgsICJzdGVwIjogNCwgInZhbHVlIjogMC41MzEwMDAwMTgxMTk4MTJ9LCB7IndhbGxUaW1lIjogMTY4MTcyNzM3MS42NTA2MTc2LCAic3RlcCI6IDUsICJ2YWx1ZSI6IDAuNTQ2OTk5OTkwOTQwMDk0fSwgeyJ3YWxsVGltZSI6IDE2ODE3MjczODEuNDI3MDg5NywgInN0ZXAiOiA2LCAidmFsdWUiOiAwLjU3ODk5OTk5NjE4NTMwMjd9LCB7IndhbGxUaW1lIjogMTY4MTcyNzM4OS41Mzc1NDI4LCAic3RlcCI6IDcsICJ2YWx1ZSI6IDAuNjU3OTk5OTkyMzcwNjA1NX0sIHsid2FsbFRpbWUiOiAxNjgxNzI3Mzk3LjY4NTA4NTMsICJzdGVwIjogOCwgInZhbHVlIjogMC42OTMwMDAwMTg1OTY2NDkyfSwgeyJ3YWxsVGltZSI6IDE2ODE3Mjc0MDcuMDMzMzAyNSwgInN0ZXAiOiA5LCAidmFsdWUiOiAwLjcyNTAwMDAyMzg0MTg1Nzl9LCB7IndhbGxUaW1lIjogMTY4MTcyNzQxNi4wMzk0NTQyLCAic3RlcCI6IDEwLCAidmFsdWUiOiAwLjc0MDk5OTk5NjY2MjEzOTl9LCB7IndhbGxUaW1lIjogMTY4MTcyNzQyNS42NTUzNTAyLCAic3RlcCI6IDExLCAidmFsdWUiOiAwLjc3MjAwMDAxNDc4MTk1MTl9LCB7IndhbGxUaW1lIjogMTY4MTcyNzQzMy4wMDQzMzczLCAic3RlcCI6IDEyLCAidmFsdWUiOiAwLjc1MDk5OTk4NzEyNTM5Njd9LCB7IndhbGxUaW1lIjogMTY4MTcyNzQ0Mi4wNDk4MjUsICJzdGVwIjogMTMsICJ2YWx1ZSI6IDAuNzU0OTk5OTk1MjMxNjI4NH0sIHsid2FsbFRpbWUiOiAxNjgxNzI3NDQ3LjkzNDgzMTEsICJzdGVwIjogMTQsICJ2YWx1ZSI6IDAuNzM5MDAwMDIyNDExMzQ2NH0sIHsid2FsbFRpbWUiOiAxNjgxNzI3NDU3Ljk3NTQwNTIsICJzdGVwIjogMTUsICJ2YWx1ZSI6IDAuNzV9LCB7IndhbGxUaW1lIjogMTY4MTcyNzQ2My44MjYwMjU3LCAic3RlcCI6IDE2LCAidmFsdWUiOiAwLjc2ODk5OTk5MzgwMTExNjl9LCB7IndhbGxUaW1lIjogMTY4MTcyNzQ3My40Njg4MDgsICJzdGVwIjogMTcsICJ2YWx1ZSI6IDAuNzY4OTk5OTkzODAxMTE2OX0sIHsid2FsbFRpbWUiOiAxNjgxNzI3NDgwLjc5MDAzMzgsICJzdGVwIjogMTgsICJ2YWx1ZSI6IDAuNzU0OTk5OTk1MjMxNjI4NH0sIHsid2FsbFRpbWUiOiAxNjgxNzI3NDg4LjkyNDAyNTUsICJzdGVwIjogMTksICJ2YWx1ZSI6IDAuNzU4MDAwMDE2MjEyNDYzNH0sIHsid2FsbFRpbWUiOiAxNjgxNzI3NDk0LjU2OTUyMywgInN0ZXAiOiAyMCwgInZhbHVlIjogMC43OTQwMDAwMjk1NjM5MDM4fV19fV0=",
              "headers": [
                [
                  "content-type",
                  "application/json"
                ]
              ],
              "ok": true,
              "status": 200,
              "status_text": ""
            },
            "https://localhost:6006/font-roboto/RxZJdnzeo3R5zSexge8UUZBw1xU1rKptJj_0jans920.woff2": {
              "data": "[encoded data, 14384 characters]",
              "headers": [
                [
                  "content-type",
                  "font/woff2"
                ]
              ],
              "ok": true,
              "status": 200,
              "status_text": ""
            },
            "https://localhost:6006/font-roboto/d-6IYplOFocCacKzxwXSOJBw1xU1rKptJj_0jans920.woff2": {
              "data": "[encoded data, 14352 characters]",
              "headers": [
                [
                  "content-type",
                  "font/woff2"
                ]
              ],
              "ok": true,
              "status": 200,
              "status_text": ""
            },
            "https://localhost:6006/font-roboto/vPcynSL0qHq_6dX7lKVByXYhjbSpvc47ee6xR_80Hnw.woff2": {
              "data": "[encoded data, 16472 characters]",
              "headers": [
                [
                  "content-type",
                  "font/woff2"
                ]
              ],
              "ok": true,
              "status": 200,
              "status_text": ""
            },
            "https://localhost:6006/icon_bundle.svg": {
              "data": "[encoded data, 18788 characters]",
              "headers": [
                [
                  "content-type",
                  "image/svg+xml; charset=utf-8"
                ]
              ],
              "ok": true,
              "status": 200,
              "status_text": ""
            },
            "https://localhost:6006/index.js?_file_hash=486f34d2": {
              "data": "[encoded data, 8171668 characters]",
              "headers": [
                [
                  "content-type",
                  "text/javascript; charset=utf-8"
                ]
              ],
              "ok": true,
              "status": 200,
              "status_text": ""
            },
            "https://localhost:6006/experiment/defaultExperimentId/data/plugin/timeseries/timeSeries?requests=%5B%7B%22plugin%22:%22scalars%22,%22tag%22:%22coco/bbox_mAP_75%22%7D%5D": {
              "data": "W3sicGx1Z2luIjogInNjYWxhcnMiLCAidGFnIjogImNvY28vYmJveF9tQVBfNzUiLCAicnVuVG9TZXJpZXMiOiB7InJ0bWRldF90aW55XzF4YjQtMjBlX2JhbGxvb24vMjAyMzA0MTdfMTAyODM1L3Zpc19kYXRhIjogW3sid2FsbFRpbWUiOiAxNjgxNzI3MzM1LjQ0MjQ4NjMsICJzdGVwIjogMSwgInZhbHVlIjogMC4wNTA5OTk5OTkwNDYzMjU2ODR9LCB7IndhbGxUaW1lIjogMTY4MTcyNzM0NS42MzkxMzkyLCAic3RlcCI6IDIsICJ2YWx1ZSI6IDAuMTQ2OTk5OTk5ODgwNzkwN30sIHsid2FsbFRpbWUiOiAxNjgxNzI3MzUyLjk2ODg0NywgInN0ZXAiOiAzLCAidmFsdWUiOiAwLjM1NjAwMDAwNjE5ODg4MzA2fSwgeyJ3YWxsVGltZSI6IDE2ODE3MjczNjIuNDkxNDgxOCwgInN0ZXAiOiA0LCAidmFsdWUiOiAwLjQ0OTAwMDAwMDk1MzY3NDN9LCB7IndhbGxUaW1lIjogMTY4MTcyNzM3MS42NTA2NjE3LCAic3RlcCI6IDUsICJ2YWx1ZSI6IDAuNDc2MDAwMDEwOTY3MjU0NjR9LCB7IndhbGxUaW1lIjogMTY4MTcyNzM4MS40MjcxMjQ1LCAic3RlcCI6IDYsICJ2YWx1ZSI6IDAuNDkyMDAwMDEzNTg5ODU5fSwgeyJ3YWxsVGltZSI6IDE2ODE3MjczODkuNTM3NTgyNCwgInN0ZXAiOiA3LCAidmFsdWUiOiAwLjU1ODAwMDAyODEzMzM5MjN9LCB7IndhbGxUaW1lIjogMTY4MTcyNzM5Ny42ODUxMiwgInN0ZXAiOiA4LCAidmFsdWUiOiAwLjYyMDAwMDAwNDc2ODM3MTZ9LCB7IndhbGxUaW1lIjogMTY4MTcyNzQwNy4wMzMzNDkzLCAic3RlcCI6IDksICJ2YWx1ZSI6IDAuNjg5MDAwMDEwNDkwNDE3NX0sIHsid2FsbFRpbWUiOiAxNjgxNzI3NDE2LjAzOTQ5MzYsICJzdGVwIjogMTAsICJ2YWx1ZSI6IDAuNjk4MDAwMDEzODI4Mjc3Nn0sIHsid2FsbFRpbWUiOiAxNjgxNzI3NDI1LjY1NTM4MzMsICJzdGVwIjogMTEsICJ2YWx1ZSI6IDAuNzA4OTk5OTkxNDE2OTMxMn0sIHsid2FsbFRpbWUiOiAxNjgxNzI3NDMzLjAwNDM3MjEsICJzdGVwIjogMTIsICJ2YWx1ZSI6IDAuNjk1OTk5OTc5OTcyODM5NH0sIHsid2FsbFRpbWUiOiAxNjgxNzI3NDQyLjA0OTg1ODYsICJzdGVwIjogMTMsICJ2YWx1ZSI6IDAuNzE3OTk5OTk0NzU0NzkxM30sIHsid2FsbFRpbWUiOiAxNjgxNzI3NDQ3LjkzNDg2MjksICJzdGVwIjogMTQsICJ2YWx1ZSI6IDAuNzA4MDAwMDA0MjkxNTM0NH0sIHsid2FsbFRpbWUiOiAxNjgxNzI3NDU3Ljk3NTQzNDMsICJzdGVwIjogMTUsICJ2YWx1ZSI6IDAuNzAwOTk5OTc1MjA0NDY3OH0sIHsid2FsbFRpbWUiOiAxNjgxNzI3NDYzLjgyNjA1NDgsICJzdGVwIjogMTYsICJ2YWx1ZSI6IDAuNzQwOTk5OTk2NjYyMTM5OX0sIHsid2FsbFRpbWUiOiAxNjgxNzI3NDczLjQ2ODgzNjgsICJzdGVwIjogMTcsICJ2YWx1ZSI6IDAuNzM2MDAwMDAxNDMwNTExNX0sIHsid2FsbFRpbWUiOiAxNjgxNzI3NDgwLjc5MDA2NjcsICJzdGVwIjogMTgsICJ2YWx1ZSI6IDAuNzIwMDAwMDI4NjEwMjI5NX0sIHsid2FsbFRpbWUiOiAxNjgxNzI3NDg4LjkyNDA1OTQsICJzdGVwIjogMTksICJ2YWx1ZSI6IDAuNzEzOTk5OTg2NjQ4NTU5Nn0sIHsid2FsbFRpbWUiOiAxNjgxNzI3NDk0LjU2OTU2ODQsICJzdGVwIjogMjAsICJ2YWx1ZSI6IDAuNzV9XX19XQ==",
              "ok": true,
              "headers": [
                [
                  "content-type",
                  "application/json"
                ]
              ],
              "status": 200,
              "status_text": ""
            },
            "https://localhost:6006/experiment/defaultExperimentId/data/plugin/timeseries/timeSeries?requests=%5B%7B%22plugin%22:%22scalars%22,%22tag%22:%22coco/bbox_mAP_l%22%7D%5D": {
              "data": "W3sicGx1Z2luIjogInNjYWxhcnMiLCAidGFnIjogImNvY28vYmJveF9tQVBfbCIsICJydW5Ub1NlcmllcyI6IHsicnRtZGV0X3RpbnlfMXhiNC0yMGVfYmFsbG9vbi8yMDIzMDQxN18xMDI4MzUvdmlzX2RhdGEiOiBbeyJ3YWxsVGltZSI6IDE2ODE3MjczMzUuNDQyNTc2NiwgInN0ZXAiOiAxLCAidmFsdWUiOiAwLjA1NDAwMDAwMTQwMDcwOTE1fSwgeyJ3YWxsVGltZSI6IDE2ODE3MjczNDUuNjM5MTk1MiwgInN0ZXAiOiAyLCAidmFsdWUiOiAwLjE2NDAwMDAwNDUyOTk1M30sIHsid2FsbFRpbWUiOiAxNjgxNzI3MzUyLjk2ODkwMzgsICJzdGVwIjogMywgInZhbHVlIjogMC40MDkwMDAwMDkyOTgzMjQ2fSwgeyJ3YWxsVGltZSI6IDE2ODE3MjczNjIuNDkxNTcxLCAic3RlcCI6IDQsICJ2YWx1ZSI6IDAuNTI0OTk5OTc2MTU4MTQyMX0sIHsid2FsbFRpbWUiOiAxNjgxNzI3MzcxLjY1MDc2MzMsICJzdGVwIjogNSwgInZhbHVlIjogMC41NTU5OTk5OTQyNzc5NTQxfSwgeyJ3YWxsVGltZSI6IDE2ODE3MjczODEuNDI3MTg0NiwgInN0ZXAiOiA2LCAidmFsdWUiOiAwLjU4Mzk5OTk5MTQxNjkzMTJ9LCB7IndhbGxUaW1lIjogMTY4MTcyNzM4OS41Mzc2ODA0LCAic3RlcCI6IDcsICJ2YWx1ZSI6IDAuNjEyOTk5OTc1NjgxMzA0OX0sIHsid2FsbFRpbWUiOiAxNjgxNzI3Mzk3LjY4NTIxMzgsICJzdGVwIjogOCwgInZhbHVlIjogMC42NjYwMDAwMDg1ODMwNjg4fSwgeyJ3YWxsVGltZSI6IDE2ODE3Mjc0MDcuMDMzNDQ5LCAic3RlcCI6IDksICJ2YWx1ZSI6IDAuNzUwOTk5OTg3MTI1Mzk2N30sIHsid2FsbFRpbWUiOiAxNjgxNzI3NDE2LjAzOTU3NjMsICJzdGVwIjogMTAsICJ2YWx1ZSI6IDAuNzYwOTk5OTc3NTg4NjUzNn0sIHsid2FsbFRpbWUiOiAxNjgxNzI3NDI1LjY1NTQzOTYsICJzdGVwIjogMTEsICJ2YWx1ZSI6IDAuNzc3OTk5OTk3MTM4OTc3fSwgeyJ3YWxsVGltZSI6IDE2ODE3Mjc0MzMuMDA0NDI5LCAic3RlcCI6IDEyLCAidmFsdWUiOiAwLjc1fSwgeyJ3YWxsVGltZSI6IDE2ODE3Mjc0NDIuMDQ5OTE4MiwgInN0ZXAiOiAxMywgInZhbHVlIjogMC43NzEwMDAwMjc2NTY1NTUyfSwgeyJ3YWxsVGltZSI6IDE2ODE3Mjc0NDcuOTM0OTE4OSwgInN0ZXAiOiAxNCwgInZhbHVlIjogMC43ODIwMDAwMDUyNDUyMDg3fSwgeyJ3YWxsVGltZSI6IDE2ODE3Mjc0NTcuOTc1NDg5NiwgInN0ZXAiOiAxNSwgInZhbHVlIjogMC43ODc5OTk5ODc2MDIyMzM5fSwgeyJ3YWxsVGltZSI6IDE2ODE3Mjc0NjMuODI2MTEwNCwgInN0ZXAiOiAxNiwgInZhbHVlIjogMC44MDAwMDAwMTE5MjA5Mjl9LCB7IndhbGxUaW1lIjogMTY4MTcyNzQ3My40Njg4OTIzLCAic3RlcCI6IDE3LCAidmFsdWUiOiAwLjgxMDk5OTk4OTUwOTU4MjV9LCB7IndhbGxUaW1lIjogMTY4MTcyNzQ4MC43OTAxMjMsICJzdGVwIjogMTgsICJ2YWx1ZSI6IDAuODAxOTk5OTg2MTcxNzIyNH0sIHsid2FsbFRpbWUiOiAxNjgxNzI3NDg4LjkyNDEyLCAic3RlcCI6IDE5LCAidmFsdWUiOiAwLjc4NjAwMDAxMzM1MTQ0MDR9LCB7IndhbGxUaW1lIjogMTY4MTcyNzQ5NC41Njk2Mjc4LCAic3RlcCI6IDIwLCAidmFsdWUiOiAwLjc4NTAwMDAyNjIyNjA0Mzd9XX19XQ==",
              "ok": true,
              "headers": [
                [
                  "content-type",
                  "application/json"
                ]
              ],
              "status": 200,
              "status_text": ""
            },
            "https://localhost:6006/experiment/defaultExperimentId/data/plugin/timeseries/timeSeries?requests=%5B%7B%22plugin%22:%22scalars%22,%22tag%22:%22coco/bbox_mAP_m%22%7D%5D": {
              "data": "W3sicGx1Z2luIjogInNjYWxhcnMiLCAidGFnIjogImNvY28vYmJveF9tQVBfbSIsICJydW5Ub1NlcmllcyI6IHsicnRtZGV0X3RpbnlfMXhiNC0yMGVfYmFsbG9vbi8yMDIzMDQxN18xMDI4MzUvdmlzX2RhdGEiOiBbeyJ3YWxsVGltZSI6IDE2ODE3MjczMzUuNDQyNTQ5MiwgInN0ZXAiOiAxLCAidmFsdWUiOiAwLjA3NTk5OTk5NzU1NjIwOTU2fSwgeyJ3YWxsVGltZSI6IDE2ODE3MjczNDUuNjM5MTc3NiwgInN0ZXAiOiAyLCAidmFsdWUiOiAwLjA4MTAwMDAwMDIzODQxODU4fSwgeyJ3YWxsVGltZSI6IDE2ODE3MjczNTIuOTY4ODg2LCAic3RlcCI6IDMsICJ2YWx1ZSI6IDAuMDk3OTk5OTk3NDM3MDAwMjd9LCB7IndhbGxUaW1lIjogMTY4MTcyNzM2Mi40OTE1NDA3LCAic3RlcCI6IDQsICJ2YWx1ZSI6IDAuMTE1OTk5OTk2NjYyMTM5ODl9LCB7IndhbGxUaW1lIjogMTY4MTcyNzM3MS42NTA3MzA4LCAic3RlcCI6IDUsICJ2YWx1ZSI6IDAuMTA5OTk5OTk5NDAzOTUzNTV9LCB7IndhbGxUaW1lIjogMTY4MTcyNzM4MS40MjcxNjYsICJzdGVwIjogNiwgInZhbHVlIjogMC4xNzI5OTk5OTI5NjY2NTE5Mn0sIHsid2FsbFRpbWUiOiAxNjgxNzI3Mzg5LjUzNzY0MjcsICJzdGVwIjogNywgInZhbHVlIjogMC4xODYwMDAwMDQ0MTA3NDM3fSwgeyJ3YWxsVGltZSI6IDE2ODE3MjczOTcuNjg1MTg3LCAic3RlcCI6IDgsICJ2YWx1ZSI6IDAuMjMxMDAwMDA2MTk4ODgzMDZ9LCB7IndhbGxUaW1lIjogMTY4MTcyNzQwNy4wMzM0MTY1LCAic3RlcCI6IDksICJ2YWx1ZSI6IDAuMjI2OTk5OTk4MDkyNjUxMzd9LCB7IndhbGxUaW1lIjogMTY4MTcyNzQxNi4wMzk1NTUsICJzdGVwIjogMTAsICJ2YWx1ZSI6IDAuMjczMDAwMDAxOTA3MzQ4NjN9LCB7IndhbGxUaW1lIjogMTY4MTcyNzQyNS42NTU0MjE3LCAic3RlcCI6IDExLCAidmFsdWUiOiAwLjIzMTAwMDAwNjE5ODg4MzA2fSwgeyJ3YWxsVGltZSI6IDE2ODE3Mjc0MzMuMDA0NDExNSwgInN0ZXAiOiAxMiwgInZhbHVlIjogMC4yMTc5OTk5OTQ3NTQ3OTEyNn0sIHsid2FsbFRpbWUiOiAxNjgxNzI3NDQyLjA0OTg5OTgsICJzdGVwIjogMTMsICJ2YWx1ZSI6IDAuMjQxOTk5OTk4Njg4Njk3ODF9LCB7IndhbGxUaW1lIjogMTY4MTcyNzQ0Ny45MzQ5MDE1LCAic3RlcCI6IDE0LCAidmFsdWUiOiAwLjIxOTk5OTk5ODgwNzkwNzF9LCB7IndhbGxUaW1lIjogMTY4MTcyNzQ1Ny45NzU0NzI1LCAic3RlcCI6IDE1LCAidmFsdWUiOiAwLjIzMTk5OTk5MzMyNDI3OTc5fSwgeyJ3YWxsVGltZSI6IDE2ODE3Mjc0NjMuODI2MDkyNSwgInN0ZXAiOiAxNiwgInZhbHVlIjogMC4yNjM5OTk5OTg1Njk0ODg1fSwgeyJ3YWxsVGltZSI6IDE2ODE3Mjc0NzMuNDY4ODc1LCAic3RlcCI6IDE3LCAidmFsdWUiOiAwLjI2MTk5OTk5NDUxNjM3Mjd9LCB7IndhbGxUaW1lIjogMTY4MTcyNzQ4MC43OTAxMDUzLCAic3RlcCI6IDE4LCAidmFsdWUiOiAwLjI0MzAwMDAwMDcxNTI1NTc0fSwgeyJ3YWxsVGltZSI6IDE2ODE3Mjc0ODguOTI0MTAxNCwgInN0ZXAiOiAxOSwgInZhbHVlIjogMC4yNzc5OTk5OTcxMzg5NzcwNX0sIHsid2FsbFRpbWUiOiAxNjgxNzI3NDk0LjU2OTYwOTksICJzdGVwIjogMjAsICJ2YWx1ZSI6IDAuMjQwOTk5OTk2NjYyMTM5OX1dfX1d",
              "ok": true,
              "headers": [
                [
                  "content-type",
                  "application/json"
                ]
              ],
              "status": 200,
              "status_text": ""
            }
          }
        },
        "id": "_wpQGXu9aONh",
        "outputId": "1093cdcd-5b8a-44b4-f3b0-cbc73083ba78"
      },
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<IPython.core.display.Javascript object>"
            ],
            "application/javascript": [
              "\n",
              "        (async () => {\n",
              "            const url = new URL(await google.colab.kernel.proxyPort(6006, {'cache': true}));\n",
              "            url.searchParams.set('tensorboardColab', 'true');\n",
              "            const iframe = document.createElement('iframe');\n",
              "            iframe.src = url;\n",
              "            iframe.setAttribute('width', '100%');\n",
              "            iframe.setAttribute('height', '800');\n",
              "            iframe.setAttribute('frameborder', 0);\n",
              "            document.body.appendChild(iframe);\n",
              "        })();\n",
              "    "
            ]
          },
          "metadata": {}
        }
      ],
      "source": [
        "# load tensorboard in colab\n",
        "%load_ext tensorboard\n",
        "\n",
        "# see curves in tensorboard\n",
        "%tensorboard --logdir ./work_dirs"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "MfQ-yspZLuuI"
      },
      "source": [
        "From the tensorboard, we can observe that changes of loss and learning rate. We can see the losses of each branch gradually decrease as the training goes by.\n",
        "\n",
        "## Test the Trained Detector\n",
        "\n",
        "After finetuning the detector, let's visualize the prediction results!"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 13,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 71,
          "referenced_widgets": [
            "01b8530a4c8c48ee9ce8f7ff552a293f",
            "4bb4e998336e4889afec5712698e98a8"
          ]
        },
        "id": "CHDYQSRNNDxt",
        "outputId": "10dfc047-8adf-4e30-a737-230c23602a1b"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Loads checkpoint by local backend from path: ./work_dirs/rtmdet_tiny_1xb4-20e_balloon/best_coco_bbox_mAP_epoch_17.pth\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "Output()"
            ],
            "application/vnd.jupyter.widget-view+json": {
              "version_major": 2,
              "version_minor": 0,
              "model_id": "01b8530a4c8c48ee9ce8f7ff552a293f"
            }
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [],
            "text/html": [
              "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
            ]
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "\n"
            ],
            "text/html": [
              "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">\n",
              "</pre>\n"
            ]
          },
          "metadata": {}
        }
      ],
      "source": [
        "from mmdet.apis import DetInferencer\n",
        "import glob\n",
        "\n",
        "# Choose to use a config\n",
        "config = 'configs/rtmdet/rtmdet_tiny_1xb4-20e_balloon.py'\n",
        "# Setup a checkpoint file to load\n",
        "checkpoint = glob.glob('./work_dirs/rtmdet_tiny_1xb4-20e_balloon/best_coco*.pth')[0]\n",
        "\n",
        "# Set the device to be used for evaluation\n",
        "device = 'cuda:0'\n",
        "\n",
        "# Initialize the DetInferencer\n",
        "inferencer = DetInferencer(config, checkpoint, device)\n",
        "\n",
        "# Use the detector to do inference\n",
        "img = './data/balloon/val/4838031651_3e7b5ea5c7_b.jpg'\n",
        "result = inferencer(img, out_dir='./output')"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 14,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 618
        },
        "id": "zDzwbUsfN4lR",
        "outputId": "26cbef68-3f0e-4958-af2c-48b837f61ae7"
      },
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=1024x675 at 0x7FA9DD4CB7C0>"
            ],
            "image/png": "[encoded data, 1242076 characters]\n"
          },
          "metadata": {},
          "execution_count": 14
        }
      ],
      "source": [
        "# Show the output image\n",
        "Image.open('./output/vis/4838031651_3e7b5ea5c7_b.jpg')"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "F1L8o3rtc37M"
      },
      "source": [
        "## What to Do Next?\n",
        "\n",
        "So far, we have learnt how to test and train a one-stage detector using MMDetection. To further explore MMDetection, you could do several other things as shown below:\n",
        "\n",
        "- Try YOLO series object detection using [MMYOLO](https://github.com/open-mmlab/mmyolo), also one of the OpenMMLab projects. In MMYOLO, not only can you try all the methods supported in MMDetection but also some YOLO series detectors.\n",
        "- Try rotated object detection using [MMRotate](https://github.com/open-mmlab/mmrotate), also one of the OpenMMLab projects. In MMRotate, not only can you try all the methods supported in MMDetection but also some rotated object detectors.\n",
        "- Try 3D object detection using [MMDetection3D](https://github.com/open-mmlab/mmdetection3d), also one of the OpenMMLab projects. In MMDetection3D, not only can you try all the methods supported in MMDetection but also some 3D object detectors.\n"
      ]
    }
  ],
  "metadata": {
    "accelerator": "GPU",
    "colab": {
      "provenance": []
    },
    "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.8.13"
    },
    "widgets": {
      "application/vnd.jupyter.widget-state+json": {
        "b1188048a1f04c2fa77c0d3829da39bd": {
          "model_module": "@jupyter-widgets/output",
          "model_name": "OutputModel",
          "model_module_version": "1.0.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/output",
            "_model_module_version": "1.0.0",
            "_model_name": "OutputModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/output",
            "_view_module_version": "1.0.0",
            "_view_name": "OutputView",
            "layout": "IPY_MODEL_534561e3c4804bae96a30d44493d701d",
            "msg_id": "",
            "outputs": [
              {
                "output_type": "display_data",
                "data": {
                  "text/plain": "Inference \u001b[38;2;209;42;102m━\u001b[0m\u001b[38;2;183;44;94m━\u001b[0m\u001b[38;2;153;48;86m━\u001b[0m\u001b[38;2;123;51;77m━\u001b[0m\u001b[38;2;97;53;69m━\u001b[0m\u001b[38;2;76;56;63m━\u001b[0m\u001b[38;2;62;57;59m━\u001b[0m\u001b[38;2;58;58;58m━\u001b[0m\u001b[38;2;62;57;59m━\u001b[0m\u001b[38;2;76;56;63m━\u001b[0m\u001b[38;2;97;53;69m━\u001b[0m\u001b[38;2;123;51;77m━\u001b[0m\u001b[38;2;153;48;86m━\u001b[0m\u001b[38;2;183;44;94m━\u001b[0m\u001b[38;2;209;42;102m━\u001b[0m\u001b[38;2;230;39;108m━\u001b[0m\u001b[38;2;244;38;112m━\u001b[0m\u001b[38;2;249;38;114m━\u001b[0m\u001b[38;2;244;38;112m━\u001b[0m\u001b[38;2;230;39;108m━\u001b[0m\u001b[38;2;209;42;102m━\u001b[0m\u001b[38;2;183;44;94m━\u001b[0m\u001b[38;2;153;48;86m━\u001b[0m\u001b[38;2;123;51;77m━\u001b[0m\u001b[38;2;97;53;69m━\u001b[0m\u001b[38;2;76;56;63m━\u001b[0m\u001b[38;2;62;57;59m━\u001b[0m\u001b[38;2;58;58;58m━\u001b[0m\u001b[38;2;62;57;59m━\u001b[0m\u001b[38;2;76;56;63m━\u001b[0m\u001b[38;2;97;53;69m━\u001b[0m\u001b[38;2;123;51;77m━\u001b[0m\u001b[38;2;153;48;86m━\u001b[0m\u001b[38;2;183;44;94m━\u001b[0m\u001b[38;2;209;42;102m━\u001b[0m\u001b[38;2;230;39;108m━\u001b[0m\u001b[38;2;244;38;112m━\u001b[0m\u001b[38;2;249;38;114m━\u001b[0m\u001b[38;2;244;38;112m━\u001b[0m\u001b[38;2;230;39;108m━\u001b[0m  \u001b[36m \u001b[0m\n",
                  "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">Inference <span style=\"color: #d12a66; text-decoration-color: #d12a66\">━</span><span style=\"color: #b72c5e; text-decoration-color: #b72c5e\">━</span><span style=\"color: #993056; text-decoration-color: #993056\">━</span><span style=\"color: #7b334d; text-decoration-color: #7b334d\">━</span><span style=\"color: #613545; text-decoration-color: #613545\">━</span><span style=\"color: #4c383f; text-decoration-color: #4c383f\">━</span><span style=\"color: #3e393b; text-decoration-color: #3e393b\">━</span><span style=\"color: #3a3a3a; text-decoration-color: #3a3a3a\">━</span><span style=\"color: #3e393b; text-decoration-color: #3e393b\">━</span><span style=\"color: #4c383f; text-decoration-color: #4c383f\">━</span><span style=\"color: #613545; text-decoration-color: #613545\">━</span><span style=\"color: #7b334d; text-decoration-color: #7b334d\">━</span><span style=\"color: #993056; text-decoration-color: #993056\">━</span><span style=\"color: #b72c5e; text-decoration-color: #b72c5e\">━</span><span style=\"color: #d12a66; text-decoration-color: #d12a66\">━</span><span style=\"color: #e6276c; text-decoration-color: #e6276c\">━</span><span style=\"color: #f42670; text-decoration-color: #f42670\">━</span><span style=\"color: #f92672; text-decoration-color: #f92672\">━</span><span style=\"color: #f42670; text-decoration-color: #f42670\">━</span><span style=\"color: #e6276c; text-decoration-color: #e6276c\">━</span><span style=\"color: #d12a66; text-decoration-color: #d12a66\">━</span><span style=\"color: #b72c5e; text-decoration-color: #b72c5e\">━</span><span style=\"color: #993056; text-decoration-color: #993056\">━</span><span style=\"color: #7b334d; text-decoration-color: #7b334d\">━</span><span style=\"color: #613545; text-decoration-color: #613545\">━</span><span style=\"color: #4c383f; text-decoration-color: #4c383f\">━</span><span style=\"color: #3e393b; text-decoration-color: #3e393b\">━</span><span style=\"color: #3a3a3a; text-decoration-color: #3a3a3a\">━</span><span style=\"color: #3e393b; text-decoration-color: #3e393b\">━</span><span style=\"color: #4c383f; text-decoration-color: #4c383f\">━</span><span style=\"color: #613545; text-decoration-color: #613545\">━</span><span style=\"color: #7b334d; text-decoration-color: #7b334d\">━</span><span style=\"color: #993056; text-decoration-color: #993056\">━</span><span style=\"color: #b72c5e; text-decoration-color: #b72c5e\">━</span><span style=\"color: #d12a66; text-decoration-color: #d12a66\">━</span><span style=\"color: #e6276c; text-decoration-color: #e6276c\">━</span><span style=\"color: #f42670; text-decoration-color: #f42670\">━</span><span style=\"color: #f92672; text-decoration-color: #f92672\">━</span><span style=\"color: #f42670; text-decoration-color: #f42670\">━</span><span style=\"color: #e6276c; text-decoration-color: #e6276c\">━</span>  <span style=\"color: #008080; text-decoration-color: #008080\"> </span>\n</pre>\n"
                },
                "metadata": {}
              }
            ]
          }
        },
        "534561e3c4804bae96a30d44493d701d": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "01b8530a4c8c48ee9ce8f7ff552a293f": {
          "model_module": "@jupyter-widgets/output",
          "model_name": "OutputModel",
          "model_module_version": "1.0.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/output",
            "_model_module_version": "1.0.0",
            "_model_name": "OutputModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/output",
            "_view_module_version": "1.0.0",
            "_view_name": "OutputView",
            "layout": "IPY_MODEL_4bb4e998336e4889afec5712698e98a8",
            "msg_id": "",
            "outputs": [
              {
                "output_type": "display_data",
                "data": {
                  "text/plain": "Inference \u001b[38;2;183;44;94m━\u001b[0m\u001b[38;2;153;48;86m━\u001b[0m\u001b[38;2;123;51;77m━\u001b[0m\u001b[38;2;97;53;69m━\u001b[0m\u001b[38;2;76;56;63m━\u001b[0m\u001b[38;2;62;57;59m━\u001b[0m\u001b[38;2;58;58;58m━\u001b[0m\u001b[38;2;62;57;59m━\u001b[0m\u001b[38;2;76;56;63m━\u001b[0m\u001b[38;2;97;53;69m━\u001b[0m\u001b[38;2;123;51;77m━\u001b[0m\u001b[38;2;153;48;86m━\u001b[0m\u001b[38;2;183;44;94m━\u001b[0m\u001b[38;2;209;42;102m━\u001b[0m\u001b[38;2;230;39;108m━\u001b[0m\u001b[38;2;244;38;112m━\u001b[0m\u001b[38;2;249;38;114m━\u001b[0m\u001b[38;2;244;38;112m━\u001b[0m\u001b[38;2;230;39;108m━\u001b[0m\u001b[38;2;209;42;102m━\u001b[0m\u001b[38;2;183;44;94m━\u001b[0m\u001b[38;2;153;48;86m━\u001b[0m\u001b[38;2;123;51;77m━\u001b[0m\u001b[38;2;97;53;69m━\u001b[0m\u001b[38;2;76;56;63m━\u001b[0m\u001b[38;2;62;57;59m━\u001b[0m\u001b[38;2;58;58;58m━\u001b[0m\u001b[38;2;62;57;59m━\u001b[0m\u001b[38;2;76;56;63m━\u001b[0m\u001b[38;2;97;53;69m━\u001b[0m\u001b[38;2;123;51;77m━\u001b[0m\u001b[38;2;153;48;86m━\u001b[0m\u001b[38;2;183;44;94m━\u001b[0m\u001b[38;2;209;42;102m━\u001b[0m\u001b[38;2;230;39;108m━\u001b[0m\u001b[38;2;244;38;112m━\u001b[0m\u001b[38;2;249;38;114m━\u001b[0m\u001b[38;2;244;38;112m━\u001b[0m\u001b[38;2;230;39;108m━\u001b[0m\u001b[38;2;209;42;102m━\u001b[0m  \u001b[36m \u001b[0m\n",
                  "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">Inference <span style=\"color: #b72c5e; text-decoration-color: #b72c5e\">━</span><span style=\"color: #993056; text-decoration-color: #993056\">━</span><span style=\"color: #7b334d; text-decoration-color: #7b334d\">━</span><span style=\"color: #613545; text-decoration-color: #613545\">━</span><span style=\"color: #4c383f; text-decoration-color: #4c383f\">━</span><span style=\"color: #3e393b; text-decoration-color: #3e393b\">━</span><span style=\"color: #3a3a3a; text-decoration-color: #3a3a3a\">━</span><span style=\"color: #3e393b; text-decoration-color: #3e393b\">━</span><span style=\"color: #4c383f; text-decoration-color: #4c383f\">━</span><span style=\"color: #613545; text-decoration-color: #613545\">━</span><span style=\"color: #7b334d; text-decoration-color: #7b334d\">━</span><span style=\"color: #993056; text-decoration-color: #993056\">━</span><span style=\"color: #b72c5e; text-decoration-color: #b72c5e\">━</span><span style=\"color: #d12a66; text-decoration-color: #d12a66\">━</span><span style=\"color: #e6276c; text-decoration-color: #e6276c\">━</span><span style=\"color: #f42670; text-decoration-color: #f42670\">━</span><span style=\"color: #f92672; text-decoration-color: #f92672\">━</span><span style=\"color: #f42670; text-decoration-color: #f42670\">━</span><span style=\"color: #e6276c; text-decoration-color: #e6276c\">━</span><span style=\"color: #d12a66; text-decoration-color: #d12a66\">━</span><span style=\"color: #b72c5e; text-decoration-color: #b72c5e\">━</span><span style=\"color: #993056; text-decoration-color: #993056\">━</span><span style=\"color: #7b334d; text-decoration-color: #7b334d\">━</span><span style=\"color: #613545; text-decoration-color: #613545\">━</span><span style=\"color: #4c383f; text-decoration-color: #4c383f\">━</span><span style=\"color: #3e393b; text-decoration-color: #3e393b\">━</span><span style=\"color: #3a3a3a; text-decoration-color: #3a3a3a\">━</span><span style=\"color: #3e393b; text-decoration-color: #3e393b\">━</span><span style=\"color: #4c383f; text-decoration-color: #4c383f\">━</span><span style=\"color: #613545; text-decoration-color: #613545\">━</span><span style=\"color: #7b334d; text-decoration-color: #7b334d\">━</span><span style=\"color: #993056; text-decoration-color: #993056\">━</span><span style=\"color: #b72c5e; text-decoration-color: #b72c5e\">━</span><span style=\"color: #d12a66; text-decoration-color: #d12a66\">━</span><span style=\"color: #e6276c; text-decoration-color: #e6276c\">━</span><span style=\"color: #f42670; text-decoration-color: #f42670\">━</span><span style=\"color: #f92672; text-decoration-color: #f92672\">━</span><span style=\"color: #f42670; text-decoration-color: #f42670\">━</span><span style=\"color: #e6276c; text-decoration-color: #e6276c\">━</span><span style=\"color: #d12a66; text-decoration-color: #d12a66\">━</span>  <span style=\"color: #008080; text-decoration-color: #008080\"> </span>\n</pre>\n"
                },
                "metadata": {}
              }
            ]
          }
        },
        "4bb4e998336e4889afec5712698e98a8": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        }
      }
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}
