{
  "cells": [
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {
        "id": "B74HkZjCxQ_6"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/open-mmlab/mmaction2/projects/stad_tutorial/demo_stad_zh_CN.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {
        "id": "MwmrGv9exRAH"
      },
      "source": [
        "# 基于 MMAction2 进行时空行为检测任务\n",
        "欢迎使用 MMAction2! 这是一篇关于如何使用 MMAction2 进行时空行为检测的教程。在此教程中，我们会以 MultiSports 数据集为例，提供时空行为检测的完整步骤教程，包括\n",
        "- 准备时空行为检测数据集\n",
        "- 训练检测模型\n",
        "- 准备 AVA 格式的数据集\n",
        "- 训练时空行为检测模型\n"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {
        "id": "em5lgDTUxRAI"
      },
      "source": [
        "## 0. 安装 MMAction2 和 MMDetection"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 1,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "bBM9DCrsxRAJ",
        "outputId": "b310311f-f05e-4a5c-b6e5-8e6ee7e0dfae"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "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[31m3.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[?25hRequirement already satisfied: Click in /usr/local/lib/python3.10/dist-packages (from openmim) (8.1.3)\n",
            "Collecting colorama (from openmim)\n",
            "  Downloading colorama-0.4.6-py2.py3-none-any.whl (25 kB)\n",
            "Collecting model-index (from openmim)\n",
            "  Downloading model_index-0.1.11-py3-none-any.whl (34 kB)\n",
            "Requirement already satisfied: pandas in /usr/local/lib/python3.10/dist-packages (from openmim) (1.5.3)\n",
            "Requirement already satisfied: pip>=19.3 in /usr/local/lib/python3.10/dist-packages (from openmim) (23.1.2)\n",
            "Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from openmim) (2.27.1)\n",
            "Requirement already satisfied: rich in /usr/local/lib/python3.10/dist-packages (from openmim) (13.3.4)\n",
            "Requirement already satisfied: tabulate in /usr/local/lib/python3.10/dist-packages (from openmim) (0.8.10)\n",
            "Requirement already satisfied: pyyaml in /usr/local/lib/python3.10/dist-packages (from model-index->openmim) (6.0)\n",
            "Requirement already satisfied: markdown in /usr/local/lib/python3.10/dist-packages (from model-index->openmim) (3.4.3)\n",
            "Collecting ordered-set (from model-index->openmim)\n",
            "  Downloading ordered_set-4.1.0-py3-none-any.whl (7.6 kB)\n",
            "Requirement already satisfied: python-dateutil>=2.8.1 in /usr/local/lib/python3.10/dist-packages (from pandas->openmim) (2.8.2)\n",
            "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas->openmim) (2022.7.1)\n",
            "Requirement already satisfied: numpy>=1.21.0 in /usr/local/lib/python3.10/dist-packages (from pandas->openmim) (1.22.4)\n",
            "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->openmim) (1.26.15)\n",
            "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->openmim) (2022.12.7)\n",
            "Requirement already satisfied: charset-normalizer~=2.0.0 in /usr/local/lib/python3.10/dist-packages (from requests->openmim) (2.0.12)\n",
            "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->openmim) (3.4)\n",
            "Requirement already satisfied: markdown-it-py<3.0.0,>=2.2.0 in /usr/local/lib/python3.10/dist-packages (from rich->openmim) (2.2.0)\n",
            "Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /usr/local/lib/python3.10/dist-packages (from rich->openmim) (2.14.0)\n",
            "Requirement already satisfied: mdurl~=0.1 in /usr/local/lib/python3.10/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.10/dist-packages (from python-dateutil>=2.8.1->pandas->openmim) (1.16.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",
            "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\n",
            "  Downloading mmengine-0.7.4-py3-none-any.whl (374 kB)\n",
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m374.3/374.3 kB\u001b[0m \u001b[31m8.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[?25hCollecting addict (from mmengine)\n",
            "  Downloading addict-2.4.0-py3-none-any.whl (3.8 kB)\n",
            "Requirement already satisfied: matplotlib in /usr/local/lib/python3.10/dist-packages (from mmengine) (3.7.1)\n",
            "Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from mmengine) (1.22.4)\n",
            "Requirement already satisfied: pyyaml in /usr/local/lib/python3.10/dist-packages (from mmengine) (6.0)\n",
            "Requirement already satisfied: rich in /usr/local/lib/python3.10/dist-packages (from mmengine) (13.3.4)\n",
            "Requirement already satisfied: termcolor in /usr/local/lib/python3.10/dist-packages (from mmengine) (2.3.0)\n",
            "Collecting yapf (from mmengine)\n",
            "  Downloading yapf-0.40.0-py3-none-any.whl (250 kB)\n",
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m250.3/250.3 kB\u001b[0m \u001b[31m29.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[?25hRequirement already satisfied: opencv-python>=3 in /usr/local/lib/python3.10/dist-packages (from mmengine) (4.7.0.72)\n",
            "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->mmengine) (1.0.7)\n",
            "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib->mmengine) (0.11.0)\n",
            "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib->mmengine) (4.39.3)\n",
            "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->mmengine) (1.4.4)\n",
            "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib->mmengine) (23.1)\n",
            "Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib->mmengine) (8.4.0)\n",
            "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->mmengine) (3.0.9)\n",
            "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib->mmengine) (2.8.2)\n",
            "Requirement already satisfied: markdown-it-py<3.0.0,>=2.2.0 in /usr/local/lib/python3.10/dist-packages (from rich->mmengine) (2.2.0)\n",
            "Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /usr/local/lib/python3.10/dist-packages (from rich->mmengine) (2.14.0)\n",
            "Collecting importlib-metadata>=6.6.0 (from yapf->mmengine)\n",
            "  Downloading importlib_metadata-6.6.0-py3-none-any.whl (22 kB)\n",
            "Collecting platformdirs>=3.5.1 (from yapf->mmengine)\n",
            "  Downloading platformdirs-3.5.3-py3-none-any.whl (15 kB)\n",
            "Requirement already satisfied: tomli>=2.0.1 in /usr/local/lib/python3.10/dist-packages (from yapf->mmengine) (2.0.1)\n",
            "Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.10/dist-packages (from importlib-metadata>=6.6.0->yapf->mmengine) (3.15.0)\n",
            "Requirement already satisfied: mdurl~=0.1 in /usr/local/lib/python3.10/dist-packages (from markdown-it-py<3.0.0,>=2.2.0->rich->mmengine) (0.1.2)\n",
            "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib->mmengine) (1.16.0)\n",
            "Installing collected packages: addict, platformdirs, importlib-metadata, yapf, mmengine\n",
            "  Attempting uninstall: platformdirs\n",
            "    Found existing installation: platformdirs 3.3.0\n",
            "    Uninstalling platformdirs-3.3.0:\n",
            "      Successfully uninstalled platformdirs-3.3.0\n",
            "Successfully installed addict-2.4.0 importlib-metadata-6.6.0 mmengine-0.7.4 platformdirs-3.5.3 yapf-0.40.0\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\n",
            "  Downloading https://download.openmmlab.com/mmcv/dist/cu118/torch2.0.0/mmcv-2.0.0-cp310-cp310-manylinux1_x86_64.whl (74.4 MB)\n",
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m74.4/74.4 MB\u001b[0m \u001b[31m9.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[?25hRequirement already satisfied: addict in /usr/local/lib/python3.10/dist-packages (from mmcv) (2.4.0)\n",
            "Requirement already satisfied: mmengine>=0.2.0 in /usr/local/lib/python3.10/dist-packages (from mmcv) (0.7.4)\n",
            "Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from mmcv) (1.22.4)\n",
            "Requirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from mmcv) (23.1)\n",
            "Requirement already satisfied: Pillow in /usr/local/lib/python3.10/dist-packages (from mmcv) (8.4.0)\n",
            "Requirement already satisfied: pyyaml in /usr/local/lib/python3.10/dist-packages (from mmcv) (6.0)\n",
            "Requirement already satisfied: yapf in /usr/local/lib/python3.10/dist-packages (from mmcv) (0.40.0)\n",
            "Requirement already satisfied: opencv-python>=3 in /usr/local/lib/python3.10/dist-packages (from mmcv) (4.7.0.72)\n",
            "Requirement already satisfied: matplotlib in /usr/local/lib/python3.10/dist-packages (from mmengine>=0.2.0->mmcv) (3.7.1)\n",
            "Requirement already satisfied: rich in /usr/local/lib/python3.10/dist-packages (from mmengine>=0.2.0->mmcv) (13.3.4)\n",
            "Requirement already satisfied: termcolor in /usr/local/lib/python3.10/dist-packages (from mmengine>=0.2.0->mmcv) (2.3.0)\n",
            "Requirement already satisfied: importlib-metadata>=6.6.0 in /usr/local/lib/python3.10/dist-packages (from yapf->mmcv) (6.6.0)\n",
            "Requirement already satisfied: platformdirs>=3.5.1 in /usr/local/lib/python3.10/dist-packages (from yapf->mmcv) (3.5.3)\n",
            "Requirement already satisfied: tomli>=2.0.1 in /usr/local/lib/python3.10/dist-packages (from yapf->mmcv) (2.0.1)\n",
            "Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.10/dist-packages (from importlib-metadata>=6.6.0->yapf->mmcv) (3.15.0)\n",
            "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->mmengine>=0.2.0->mmcv) (1.0.7)\n",
            "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib->mmengine>=0.2.0->mmcv) (0.11.0)\n",
            "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib->mmengine>=0.2.0->mmcv) (4.39.3)\n",
            "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->mmengine>=0.2.0->mmcv) (1.4.4)\n",
            "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->mmengine>=0.2.0->mmcv) (3.0.9)\n",
            "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib->mmengine>=0.2.0->mmcv) (2.8.2)\n",
            "Requirement already satisfied: markdown-it-py<3.0.0,>=2.2.0 in /usr/local/lib/python3.10/dist-packages (from rich->mmengine>=0.2.0->mmcv) (2.2.0)\n",
            "Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /usr/local/lib/python3.10/dist-packages (from rich->mmengine>=0.2.0->mmcv) (2.14.0)\n",
            "Requirement already satisfied: mdurl~=0.1 in /usr/local/lib/python3.10/dist-packages (from markdown-it-py<3.0.0,>=2.2.0->rich->mmengine>=0.2.0->mmcv) (0.1.2)\n",
            "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib->mmengine>=0.2.0->mmcv) (1.16.0)\n",
            "Installing collected packages: mmcv\n",
            "Successfully installed mmcv-2.0.0\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 mmdet\n",
            "  Downloading mmdet-3.0.0-py3-none-any.whl (1.7 MB)\n",
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.7/1.7 MB\u001b[0m \u001b[31m23.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[?25hRequirement already satisfied: matplotlib in /usr/local/lib/python3.10/dist-packages (from mmdet) (3.7.1)\n",
            "Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from mmdet) (1.22.4)\n",
            "Requirement already satisfied: pycocotools in /usr/local/lib/python3.10/dist-packages (from mmdet) (2.0.6)\n",
            "Requirement already satisfied: scipy in /usr/local/lib/python3.10/dist-packages (from mmdet) (1.10.1)\n",
            "Requirement already satisfied: shapely in /usr/local/lib/python3.10/dist-packages (from mmdet) (2.0.1)\n",
            "Requirement already satisfied: six in /usr/local/lib/python3.10/dist-packages (from mmdet) (1.16.0)\n",
            "Collecting terminaltables (from mmdet)\n",
            "  Downloading terminaltables-3.1.10-py2.py3-none-any.whl (15 kB)\n",
            "Requirement already satisfied: mmcv<2.1.0,>=2.0.0rc4 in /usr/local/lib/python3.10/dist-packages (from mmdet) (2.0.0)\n",
            "Requirement already satisfied: mmengine<1.0.0,>=0.7.1 in /usr/local/lib/python3.10/dist-packages (from mmdet) (0.7.4)\n",
            "Requirement already satisfied: addict in /usr/local/lib/python3.10/dist-packages (from mmcv<2.1.0,>=2.0.0rc4->mmdet) (2.4.0)\n",
            "Requirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from mmcv<2.1.0,>=2.0.0rc4->mmdet) (23.1)\n",
            "Requirement already satisfied: Pillow in /usr/local/lib/python3.10/dist-packages (from mmcv<2.1.0,>=2.0.0rc4->mmdet) (8.4.0)\n",
            "Requirement already satisfied: pyyaml in /usr/local/lib/python3.10/dist-packages (from mmcv<2.1.0,>=2.0.0rc4->mmdet) (6.0)\n",
            "Requirement already satisfied: yapf in /usr/local/lib/python3.10/dist-packages (from mmcv<2.1.0,>=2.0.0rc4->mmdet) (0.40.0)\n",
            "Requirement already satisfied: opencv-python>=3 in /usr/local/lib/python3.10/dist-packages (from mmcv<2.1.0,>=2.0.0rc4->mmdet) (4.7.0.72)\n",
            "Requirement already satisfied: rich in /usr/local/lib/python3.10/dist-packages (from mmengine<1.0.0,>=0.7.1->mmdet) (13.3.4)\n",
            "Requirement already satisfied: termcolor in /usr/local/lib/python3.10/dist-packages (from mmengine<1.0.0,>=0.7.1->mmdet) (2.3.0)\n",
            "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->mmdet) (1.0.7)\n",
            "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib->mmdet) (0.11.0)\n",
            "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib->mmdet) (4.39.3)\n",
            "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->mmdet) (1.4.4)\n",
            "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->mmdet) (3.0.9)\n",
            "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib->mmdet) (2.8.2)\n",
            "Requirement already satisfied: markdown-it-py<3.0.0,>=2.2.0 in /usr/local/lib/python3.10/dist-packages (from rich->mmengine<1.0.0,>=0.7.1->mmdet) (2.2.0)\n",
            "Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /usr/local/lib/python3.10/dist-packages (from rich->mmengine<1.0.0,>=0.7.1->mmdet) (2.14.0)\n",
            "Requirement already satisfied: importlib-metadata>=6.6.0 in /usr/local/lib/python3.10/dist-packages (from yapf->mmcv<2.1.0,>=2.0.0rc4->mmdet) (6.6.0)\n",
            "Requirement already satisfied: platformdirs>=3.5.1 in /usr/local/lib/python3.10/dist-packages (from yapf->mmcv<2.1.0,>=2.0.0rc4->mmdet) (3.5.3)\n",
            "Requirement already satisfied: tomli>=2.0.1 in /usr/local/lib/python3.10/dist-packages (from yapf->mmcv<2.1.0,>=2.0.0rc4->mmdet) (2.0.1)\n",
            "Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.10/dist-packages (from importlib-metadata>=6.6.0->yapf->mmcv<2.1.0,>=2.0.0rc4->mmdet) (3.15.0)\n",
            "Requirement already satisfied: mdurl~=0.1 in /usr/local/lib/python3.10/dist-packages (from markdown-it-py<3.0.0,>=2.2.0->rich->mmengine<1.0.0,>=0.7.1->mmdet) (0.1.2)\n",
            "Installing collected packages: terminaltables, mmdet\n",
            "Successfully installed mmdet-3.0.0 terminaltables-3.1.10\n",
            "Cloning into 'mmaction2'...\n",
            "remote: Enumerating objects: 22869, done.\u001b[K\n",
            "remote: Counting objects: 100% (1491/1491), done.\u001b[K\n",
            "remote: Compressing objects: 100% (801/801), done.\u001b[K\n",
            "remote: Total 22869 (delta 854), reused 1171 (delta 685), pack-reused 21378\u001b[K\n",
            "Receiving objects: 100% (22869/22869), 82.81 MiB | 27.92 MiB/s, done.\n",
            "Resolving deltas: 100% (15952/15952), done.\n",
            "/content/mmaction2\n",
            "Using pip 23.1.2 from /usr/local/lib/python3.10/dist-packages/pip (python 3.10)\n",
            "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n",
            "Obtaining file:///content/mmaction2\n",
            "  Running command python setup.py egg_info\n",
            "  running egg_info\n",
            "  creating /tmp/pip-pip-egg-info-x4x7terp/mmaction2.egg-info\n",
            "  writing /tmp/pip-pip-egg-info-x4x7terp/mmaction2.egg-info/PKG-INFO\n",
            "  writing dependency_links to /tmp/pip-pip-egg-info-x4x7terp/mmaction2.egg-info/dependency_links.txt\n",
            "  writing requirements to /tmp/pip-pip-egg-info-x4x7terp/mmaction2.egg-info/requires.txt\n",
            "  writing top-level names to /tmp/pip-pip-egg-info-x4x7terp/mmaction2.egg-info/top_level.txt\n",
            "  writing manifest file '/tmp/pip-pip-egg-info-x4x7terp/mmaction2.egg-info/SOURCES.txt'\n",
            "  reading manifest file '/tmp/pip-pip-egg-info-x4x7terp/mmaction2.egg-info/SOURCES.txt'\n",
            "  reading manifest template 'MANIFEST.in'\n",
            "  warning: no files found matching 'mmaction/.mim/model-index.yml'\n",
            "  warning: no files found matching '*.py' under directory 'mmaction/.mim/configs'\n",
            "  warning: no files found matching '*.yml' under directory 'mmaction/.mim/configs'\n",
            "  warning: no files found matching '*.sh' under directory 'mmaction/.mim/tools'\n",
            "  warning: no files found matching '*.py' under directory 'mmaction/.mim/tools'\n",
            "  adding license file 'LICENSE'\n",
            "  writing manifest file '/tmp/pip-pip-egg-info-x4x7terp/mmaction2.egg-info/SOURCES.txt'\n",
            "  Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
            "Collecting decord>=0.4.1 (from mmaction2==1.0.0)\n",
            "  Downloading decord-0.6.0-py3-none-manylinux2010_x86_64.whl (13.6 MB)\n",
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m13.6/13.6 MB\u001b[0m \u001b[31m98.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[?25hCollecting einops (from mmaction2==1.0.0)\n",
            "  Downloading einops-0.6.1-py3-none-any.whl (42 kB)\n",
            "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m42.2/42.2 kB\u001b[0m \u001b[31m5.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
            "\u001b[?25hRequirement already satisfied: matplotlib in /usr/local/lib/python3.10/dist-packages (from mmaction2==1.0.0) (3.7.1)\n",
            "Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from mmaction2==1.0.0) (1.22.4)\n",
            "Requirement already satisfied: opencv-contrib-python in /usr/local/lib/python3.10/dist-packages (from mmaction2==1.0.0) (4.7.0.72)\n",
            "Requirement already satisfied: Pillow in /usr/local/lib/python3.10/dist-packages (from mmaction2==1.0.0) (8.4.0)\n",
            "Requirement already satisfied: scipy in /usr/local/lib/python3.10/dist-packages (from mmaction2==1.0.0) (1.10.1)\n",
            "Requirement already satisfied: torch>=1.3 in /usr/local/lib/python3.10/dist-packages (from mmaction2==1.0.0) (2.0.1+cu118)\n",
            "Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from torch>=1.3->mmaction2==1.0.0) (3.12.0)\n",
            "Requirement already satisfied: typing-extensions in /usr/local/lib/python3.10/dist-packages (from torch>=1.3->mmaction2==1.0.0) (4.5.0)\n",
            "Requirement already satisfied: sympy in /usr/local/lib/python3.10/dist-packages (from torch>=1.3->mmaction2==1.0.0) (1.11.1)\n",
            "Requirement already satisfied: networkx in /usr/local/lib/python3.10/dist-packages (from torch>=1.3->mmaction2==1.0.0) (3.1)\n",
            "Requirement already satisfied: jinja2 in /usr/local/lib/python3.10/dist-packages (from torch>=1.3->mmaction2==1.0.0) (3.1.2)\n",
            "Requirement already satisfied: triton==2.0.0 in /usr/local/lib/python3.10/dist-packages (from torch>=1.3->mmaction2==1.0.0) (2.0.0)\n",
            "Requirement already satisfied: cmake in /usr/local/lib/python3.10/dist-packages (from triton==2.0.0->torch>=1.3->mmaction2==1.0.0) (3.25.2)\n",
            "Requirement already satisfied: lit in /usr/local/lib/python3.10/dist-packages (from triton==2.0.0->torch>=1.3->mmaction2==1.0.0) (16.0.5)\n",
            "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->mmaction2==1.0.0) (1.0.7)\n",
            "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib->mmaction2==1.0.0) (0.11.0)\n",
            "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib->mmaction2==1.0.0) (4.39.3)\n",
            "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->mmaction2==1.0.0) (1.4.4)\n",
            "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib->mmaction2==1.0.0) (23.1)\n",
            "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->mmaction2==1.0.0) (3.0.9)\n",
            "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib->mmaction2==1.0.0) (2.8.2)\n",
            "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib->mmaction2==1.0.0) (1.16.0)\n",
            "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from jinja2->torch>=1.3->mmaction2==1.0.0) (2.1.2)\n",
            "Requirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy->torch>=1.3->mmaction2==1.0.0) (1.3.0)\n",
            "Installing collected packages: einops, decord, mmaction2\n",
            "  Running setup.py develop for mmaction2\n",
            "    Running command python setup.py develop\n",
            "    running develop\n",
            "    /usr/local/lib/python3.10/dist-packages/setuptools/command/develop.py:40: EasyInstallDeprecationWarning: easy_install command is deprecated.\n",
            "    !!\n",
            "\n",
            "            ********************************************************************************\n",
            "            Please avoid running ``setup.py`` and ``easy_install``.\n",
            "            Instead, use pypa/build, pypa/installer, pypa/build or\n",
            "            other standards-based tools.\n",
            "\n",
            "            See https://github.com/pypa/setuptools/issues/917 for details.\n",
            "            ********************************************************************************\n",
            "\n",
            "    !!\n",
            "      easy_install.initialize_options(self)\n",
            "    /usr/local/lib/python3.10/dist-packages/setuptools/_distutils/cmd.py:66: SetuptoolsDeprecationWarning: setup.py install is deprecated.\n",
            "    !!\n",
            "\n",
            "            ********************************************************************************\n",
            "            Please avoid running ``setup.py`` directly.\n",
            "            Instead, use pypa/build, pypa/installer, pypa/build or\n",
            "            other standards-based tools.\n",
            "\n",
            "            See https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html for details.\n",
            "            ********************************************************************************\n",
            "\n",
            "    !!\n",
            "      self.initialize_options()\n",
            "    running egg_info\n",
            "    creating mmaction2.egg-info\n",
            "    writing mmaction2.egg-info/PKG-INFO\n",
            "    writing dependency_links to mmaction2.egg-info/dependency_links.txt\n",
            "    writing requirements to mmaction2.egg-info/requires.txt\n",
            "    writing top-level names to mmaction2.egg-info/top_level.txt\n",
            "    writing manifest file 'mmaction2.egg-info/SOURCES.txt'\n",
            "    reading manifest file 'mmaction2.egg-info/SOURCES.txt'\n",
            "    reading manifest template 'MANIFEST.in'\n",
            "    adding license file 'LICENSE'\n",
            "    writing manifest file 'mmaction2.egg-info/SOURCES.txt'\n",
            "    running build_ext\n",
            "    Creating /usr/local/lib/python3.10/dist-packages/mmaction2.egg-link (link to .)\n",
            "    Adding mmaction2 1.0.0 to easy-install.pth file\n",
            "\n",
            "    Installed /content/mmaction2\n",
            "Successfully installed decord-0.6.0 einops-0.6.1 mmaction2-1.0.0\n",
            "/content/mmaction2/projects/stad_tutorial\n"
          ]
        }
      ],
      "source": [
        "%pip install -U openmim\n",
        "!mim install mmengine\n",
        "!mim install mmcv\n",
        "!mim install mmdet\n",
        "\n",
        "!git clone https://github.com/open-mmlab/mmaction2.git\n",
        "\n",
        "%cd mmaction2\n",
        "%pip install -v -e .\n",
        "%cd projects/stad_tutorial"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {
        "id": "4M1PQASJxRAM"
      },
      "source": [
        "## 1. 准备时空行为检测数据集\n",
        "\n",
        "类似于检测任务需要提供检测框标注，时空行为检测任务需要对时间和空间同时定位，所以需要提供更复杂的 tube 标注。以 MultiSports 数据集的标注为例，`gttubes` 字段提供了视频中所有的目标动作标注，以下为一个标注片段：\n",
        "\n",
        "```\n",
        "    'gttubes': {\n",
        "        'aerobic_gymnastics/v_aqMgwPExjD0_c001': # video_key\n",
        "            {\n",
        "                10: # 类别标号\n",
        "                    [\n",
        "                        array([[ 377.,  904.,  316., 1016.,  584.], # 类别 10 的第 1 个 tube,\n",
        "                               [ 378.,  882.,  315., 1016.,  579.], # shape (n, 5): 表示 n 帧，每帧标注中包括 (帧号，x1，y1, x2, y2)\n",
        "                               ...\n",
        "                               [ 398.,  861.,  304.,  954.,  549.]], dtype=float32)，\n",
        "\n",
        "                        array([[ 399.,  881.,  308.,  955.,  542.], # 类别 10 的第 2 个 tube\n",
        "                               [ 400.,  862.,  303.,  988.,  539.],\n",
        "                               [ 401.,  853.,  292., 1000.,  535.],\n",
        "                               ...])\n",
        "                        ...\n",
        "\n",
        "                    ] ,\n",
        "                9: # 类别标号\n",
        "                    [\n",
        "                        array(...), # 类别 9 的第 1 个 tube\n",
        "                        array(...), # 类别 9 的第 2 个 tube\n",
        "                        ...\n",
        "                    ]\n",
        "                ...\n",
        "            }\n",
        "    }\n",
        "```\n",
        "\n",
        "标注文件中还需要提供其他字段的信息，完整的真值文件包括以下信息：\n",
        "```\n",
        "{\n",
        "    'labels':  # 标签列表\n",
        "        ['aerobic push up', 'aerobic explosive push up', ...],\n",
        "    'train_videos':  # 训练视频列表\n",
        "        [\n",
        "            [\n",
        "                'aerobic_gymnastics/v_aqMgwPExjD0_c001',\n",
        "                'aerobic_gymnastics/v_yaKOumdXwbU_c019',\n",
        "                ...\n",
        "            ]\n",
        "        ]\n",
        "    'test_videos':  # 测试视频列表\n",
        "        [\n",
        "            [\n",
        "                'aerobic_gymnastics/v_crsi07chcV8_c004',\n",
        "                'aerobic_gymnastics/v_dFYr67eNMwA_c005',\n",
        "                ...\n",
        "            ]\n",
        "        ]\n",
        "    'n_frames':  # dict 文件，提供各个视频的帧数信息\n",
        "        {\n",
        "            'aerobic_gymnastics/v_crsi07chcV8_c004': 725,\n",
        "            'aerobic_gymnastics/v_dFYr67eNMwA_c005': 750,\n",
        "            ...\n",
        "        }\n",
        "    'resolution':  # dict 文件，提供各个视频的分辨率信息\n",
        "        {\n",
        "            'aerobic_gymnastics/v_crsi07chcV8_c004': (720, 1280),\n",
        "            'aerobic_gymnastics/v_dFYr67eNMwA_c005': (720, 1280),\n",
        "            ...\n",
        "        }\n",
        "    'gt_tubes':  # dict 文件，提供 tube 的检测框信息\n",
        "        {\n",
        "            ... # 格式参考上述说明\n",
        "        }\n",
        "}\n",
        "```\n",
        "后续的实验基于 MultiSports-tiny 进行，我们从 MultiSports 中抽取了少量视频，用于演示整个流程。"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 2,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "fiJPDuR9xRAQ",
        "outputId": "8b3d8719-a9c0-4a59-d220-a3626fa34d3b"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "--2023-06-15 06:41:29--  https://download.openmmlab.com/mmaction/v1.0/projects/stad_tutorial/multisports-tiny.tar\n",
            "Resolving download.openmmlab.com (download.openmmlab.com)... 8.48.85.214, 8.48.85.207, 8.48.85.208, ...\n",
            "Connecting to download.openmmlab.com (download.openmmlab.com)|8.48.85.214|:443... connected.\n",
            "HTTP request sent, awaiting response... 200 OK\n",
            "Length: 82780160 (79M) [application/x-tar]\n",
            "Saving to: ‘data/multisports-tiny.tar’\n",
            "\n",
            "multisports-tiny.ta 100%[===================>]  78.95M  27.9MB/s    in 2.8s    \n",
            "\n",
            "2023-06-15 06:41:32 (27.9 MB/s) - ‘data/multisports-tiny.tar’ saved [82780160/82780160]\n",
            "\n",
            "multisports-tiny/multisports/\n",
            "multisports-tiny/multisports/test/\n",
            "multisports-tiny/multisports/test/aerobic_gymnastics/\n",
            "multisports-tiny/multisports/test/aerobic_gymnastics/v_7G_IpU0FxLU_c001.mp4\n",
            "multisports-tiny/multisports/annotations/\n",
            "multisports-tiny/multisports/annotations/multisports_GT.pkl\n",
            "multisports-tiny/multisports/trainval/\n",
            "multisports-tiny/multisports/trainval/aerobic_gymnastics/\n",
            "multisports-tiny/multisports/trainval/aerobic_gymnastics/v__wAgwttPYaQ_c001.mp4\n",
            "multisports-tiny/multisports/trainval/aerobic_gymnastics/v__wAgwttPYaQ_c003.mp4\n",
            "multisports-tiny/multisports/trainval/aerobic_gymnastics/v__wAgwttPYaQ_c002.mp4\n",
            "Reading package lists...\n",
            "Building dependency tree...\n",
            "Reading state information...\n",
            "The following NEW packages will be installed:\n",
            "  tree\n",
            "0 upgraded, 1 newly installed, 0 to remove and 46 not upgraded.\n",
            "Need to get 43.0 kB of archives.\n",
            "After this operation, 115 kB of additional disk space will be used.\n",
            "Get:1 http://archive.ubuntu.com/ubuntu focal/universe amd64 tree amd64 1.8.0-1 [43.0 kB]\n",
            "Fetched 43.0 kB in 0s (253 kB/s)\n",
            "Selecting previously unselected package tree.\n",
            "(Reading database ... 122541 files and directories currently installed.)\n",
            "Preparing to unpack .../tree_1.8.0-1_amd64.deb ...\n",
            "Unpacking tree (1.8.0-1) ...\n",
            "Setting up tree (1.8.0-1) ...\n",
            "Processing triggers for man-db (2.9.1-1) ...\n",
            "\u001b[01;34mdata\u001b[00m\n",
            "├── \u001b[01;34mmultisports\u001b[00m\n",
            "│   ├── \u001b[01;34mannotations\u001b[00m\n",
            "│   │   └── \u001b[01;32mmultisports_GT.pkl\u001b[00m\n",
            "│   ├── \u001b[01;34mtest\u001b[00m\n",
            "│   │   └── \u001b[01;34maerobic_gymnastics\u001b[00m\n",
            "│   │       └── \u001b[01;32mv_7G_IpU0FxLU_c001.mp4\u001b[00m\n",
            "│   └── \u001b[01;34mtrainval\u001b[00m\n",
            "│       └── \u001b[01;34maerobic_gymnastics\u001b[00m\n",
            "│           ├── \u001b[01;32mv__wAgwttPYaQ_c001.mp4\u001b[00m\n",
            "│           ├── \u001b[01;32mv__wAgwttPYaQ_c002.mp4\u001b[00m\n",
            "│           └── \u001b[01;32mv__wAgwttPYaQ_c003.mp4\u001b[00m\n",
            "└── \u001b[01;31mmultisports-tiny.tar\u001b[00m\n",
            "\n",
            "6 directories, 6 files\n"
          ]
        }
      ],
      "source": [
        "# 下载数据集\n",
        "!wget -P data -c https://download.openmmlab.com/mmaction/v1.0/projects/stad_tutorial/multisports-tiny.tar\n",
        "!tar -xvf data/multisports-tiny.tar --strip 1 -C data\n",
        "!apt-get -q install tree\n",
        "!tree data"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {
        "id": "XjG0dEE8xRAS"
      },
      "source": [
        "## 2. 训练检测模型\n",
        "\n",
        "在 SlowOnly + Det 的范式中，需要先训练人体检测器，再基于检测结果来预测行为。这一节中，我们基于上一节中的标注格式和 MMDetection 算法库训练检测模型。\n",
        "\n",
        "### 2.1 构建检测数据集标注（COCO 格式）\n",
        "\n",
        "基于时空行为检测数据集的标注信息，我们可以构建一个 COCO 格式的检测数据集，用于训练检测模型。我们提供了一个工具脚本对 MultiSports 格式的标注进行转换，如果需要基于其他格式转换，可以参考 MMDetection 提供的[自定义数据集](https://mmdetection.readthedocs.io/zh_CN/latest/advanced_guides/customize_dataset.html)文档。"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 3,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "inBtClMIxRAV",
        "outputId": "3ac5199b-562f-48c4-da27-819d34069213"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "\u001b[01;34mdata/multisports/annotations\u001b[00m\n",
            "├── multisports_det_anno_train.json\n",
            "├── multisports_det_anno_val.json\n",
            "└── \u001b[01;32mmultisports_GT.pkl\u001b[00m\n",
            "\n",
            "0 directories, 3 files\n"
          ]
        }
      ],
      "source": [
        "!python tools/generate_mmdet_anno.py data/multisports/annotations/multisports_GT.pkl data/multisports/annotations/multisports_det_anno.json\n",
        "!tree data/multisports/annotations"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 4,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "TkPONRezxRAZ",
        "outputId": "0f8075a1-47fb-490d-9c88-4904f45363fb"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Will generate 3 rgb dir for aerobic_gymnastics.\n",
            "Generate v__wAgwttPYaQ_c003 rgb dir successfully.\n",
            "Generate v__wAgwttPYaQ_c002 rgb dir successfully.\n",
            "Generate v__wAgwttPYaQ_c001 rgb dir successfully.\n"
          ]
        }
      ],
      "source": [
        "!python tools/generate_rgb.py"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {
        "id": "MP-umqqnxRAa"
      },
      "source": [
        "### 2.2 修改 config 文件\n",
        "\n",
        "我们以 faster-rcnn_x101-64x4d_fpn_1x_coco 为基础配置，做如下修改，在 MultiSports 数据集上进行训练。需要修改以下几个部分：\n",
        "- 模型的类别数量\n",
        "- 学习率调整策略\n",
        "- 优化器配置\n",
        "- 数据集/标注文件路径\n",
        "- 评测器配置\n",
        "- 预训练模型\n",
        "\n",
        "更详细的教程可以参考 MMDetection 提供的[准备配置文件](https://mmdetection.readthedocs.io/zh_CN/latest/user_guides/train.html#id9)文档。"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 5,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "yMw9MrI0xRAc",
        "outputId": "1f5ee99a-d4cb-45b0-df71-f0209a9b6275"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "# Copyright (c) OpenMMLab. All rights reserved.\n",
            "_base_ = './faster-rcnn_r50-caffe_fpn_ms-1x_coco.py'\n",
            "model = dict(roi_head=dict(bbox_head=dict(num_classes=1)))\n",
            "\n",
            "# take 2 epochs as an example\n",
            "train_cfg = dict(type='EpochBasedTrainLoop', max_epochs=2, val_interval=1)\n",
            "\n",
            "# learning rate\n",
            "param_scheduler = [\n",
            "    dict(type='ConstantLR', factor=1.0, by_epoch=False, begin=0, end=500)\n",
            "]\n",
            "\n",
            "# optimizer\n",
            "optim_wrapper = dict(\n",
            "    type='OptimWrapper',\n",
            "    optimizer=dict(type='SGD', lr=0.0050, momentum=0.9, weight_decay=0.0001))\n",
            "\n",
            "dataset_type = 'CocoDataset'\n",
            "# modify metainfo\n",
            "metainfo = {\n",
            "    'classes': ('person', ),\n",
            "    'palette': [\n",
            "        (220, 20, 60),\n",
            "    ]\n",
            "}\n",
            "\n",
            "# specify metainfo, dataset path\n",
            "data_root = 'data/multisports/'\n",
            "\n",
            "train_dataloader = dict(\n",
            "    dataset=dict(\n",
            "        data_root=data_root,\n",
            "        ann_file='annotations/multisports_det_anno_train.json',\n",
            "        data_prefix=dict(img='rawframes/'),\n",
            "        metainfo=metainfo))\n",
            "\n",
            "val_dataloader = dict(\n",
            "    dataset=dict(\n",
            "        data_root=data_root,\n",
            "        ann_file='annotations/multisports_det_anno_val.json',\n",
            "        data_prefix=dict(img='rawframes/'),\n",
            "        metainfo=metainfo))\n",
            "\n",
            "test_dataloader = dict(\n",
            "    dataset=dict(\n",
            "        data_root=data_root,\n",
            "        ann_file='annotations/ms_infer_anno.json',\n",
            "        data_prefix=dict(img='rawframes/'),\n",
            "        metainfo=metainfo))\n",
            "\n",
            "# specify annotaition file path, modify metric items\n",
            "val_evaluator = dict(\n",
            "    ann_file='data/multisports/annotations/multisports_det_anno_val.json',\n",
            "    metric_items=['mAP_50', 'AR@100'],\n",
            "    iou_thrs=[0.5],\n",
            ")\n",
            "\n",
            "test_evaluator = dict(\n",
            "    ann_file='data/multisports/annotations/ms_infer_anno.json',\n",
            "    metric_items=['mAP_50', 'AR@100'],\n",
            "    iou_thrs=[0.5],\n",
            ")\n",
            "\n",
            "# specify pretrain checkpoint\n",
            "load_from = 'https://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco-person/faster_rcnn_r50_fpn_1x_coco-person_20201216_175929-d022e227.pth'  # noqa: E501\n"
          ]
        }
      ],
      "source": [
        "!cat configs/faster-rcnn_r50-caffe_fpn_ms-1x_coco_ms_person.py"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {
        "id": "S3Ux8echxRAe"
      },
      "source": [
        "### 2.3 训练检测模型"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {
        "id": "MYtjYFU5xRAf"
      },
      "source": [
        "利用 MIM 可以在当前路径直接训练 MMDetection 模型，这里提供最简单的单卡训练示例，更多训练命令可以参考 MIM [教程](https://github.com/open-mmlab/mim#command)。"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 6,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "56m--2T8xRAg",
        "outputId": "d47ceca0-e930-4063-e25d-739a44410b86"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Training command is /usr/bin/python3 /usr/local/lib/python3.10/dist-packages/mmdet/.mim/tools/train.py configs/faster-rcnn_r50-caffe_fpn_ms-1x_coco_ms_person.py --launcher none --work-dir work_dirs/det_model. \n",
            "06/15 06:42:40 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - \n",
            "------------------------------------------------------------\n",
            "System environment:\n",
            "    sys.platform: linux\n",
            "    Python: 3.10.12 (main, Jun  7 2023, 12:45:35) [GCC 9.4.0]\n",
            "    CUDA available: True\n",
            "    numpy_random_seed: 1318688827\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.1+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.1, 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.2+cu118\n",
            "    OpenCV: 4.7.0\n",
            "    MMEngine: 0.7.4\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: 1318688827\n",
            "    Distributed launcher: none\n",
            "    Distributed training: False\n",
            "    GPU number: 1\n",
            "------------------------------------------------------------\n",
            "\n",
            "06/15 06:42:40 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Config:\n",
            "model = dict(\n",
            "    type='FasterRCNN',\n",
            "    data_preprocessor=dict(\n",
            "        type='DetDataPreprocessor',\n",
            "        mean=[103.53, 116.28, 123.675],\n",
            "        std=[1.0, 1.0, 1.0],\n",
            "        bgr_to_rgb=False,\n",
            "        pad_size_divisor=32),\n",
            "    backbone=dict(\n",
            "        type='ResNet',\n",
            "        depth=50,\n",
            "        num_stages=4,\n",
            "        out_indices=(0, 1, 2, 3),\n",
            "        frozen_stages=1,\n",
            "        norm_cfg=dict(type='BN', requires_grad=False),\n",
            "        norm_eval=True,\n",
            "        style='caffe',\n",
            "        init_cfg=dict(\n",
            "            type='Pretrained',\n",
            "            checkpoint='open-mmlab://detectron2/resnet50_caffe')),\n",
            "    neck=dict(\n",
            "        type='FPN',\n",
            "        in_channels=[256, 512, 1024, 2048],\n",
            "        out_channels=256,\n",
            "        num_outs=5),\n",
            "    rpn_head=dict(\n",
            "        type='RPNHead',\n",
            "        in_channels=256,\n",
            "        feat_channels=256,\n",
            "        anchor_generator=dict(\n",
            "            type='AnchorGenerator',\n",
            "            scales=[8],\n",
            "            ratios=[0.5, 1.0, 2.0],\n",
            "            strides=[4, 8, 16, 32, 64]),\n",
            "        bbox_coder=dict(\n",
            "            type='DeltaXYWHBBoxCoder',\n",
            "            target_means=[0.0, 0.0, 0.0, 0.0],\n",
            "            target_stds=[1.0, 1.0, 1.0, 1.0]),\n",
            "        loss_cls=dict(\n",
            "            type='CrossEntropyLoss', use_sigmoid=True, loss_weight=1.0),\n",
            "        loss_bbox=dict(type='L1Loss', loss_weight=1.0)),\n",
            "    roi_head=dict(\n",
            "        type='StandardRoIHead',\n",
            "        bbox_roi_extractor=dict(\n",
            "            type='SingleRoIExtractor',\n",
            "            roi_layer=dict(type='RoIAlign', output_size=7, sampling_ratio=0),\n",
            "            out_channels=256,\n",
            "            featmap_strides=[4, 8, 16, 32]),\n",
            "        bbox_head=dict(\n",
            "            type='Shared2FCBBoxHead',\n",
            "            in_channels=256,\n",
            "            fc_out_channels=1024,\n",
            "            roi_feat_size=7,\n",
            "            num_classes=1,\n",
            "            bbox_coder=dict(\n",
            "                type='DeltaXYWHBBoxCoder',\n",
            "                target_means=[0.0, 0.0, 0.0, 0.0],\n",
            "                target_stds=[0.1, 0.1, 0.2, 0.2]),\n",
            "            reg_class_agnostic=False,\n",
            "            loss_cls=dict(\n",
            "                type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0),\n",
            "            loss_bbox=dict(type='L1Loss', loss_weight=1.0))),\n",
            "    train_cfg=dict(\n",
            "        rpn=dict(\n",
            "            assigner=dict(\n",
            "                type='MaxIoUAssigner',\n",
            "                pos_iou_thr=0.7,\n",
            "                neg_iou_thr=0.3,\n",
            "                min_pos_iou=0.3,\n",
            "                match_low_quality=True,\n",
            "                ignore_iof_thr=-1),\n",
            "            sampler=dict(\n",
            "                type='RandomSampler',\n",
            "                num=256,\n",
            "                pos_fraction=0.5,\n",
            "                neg_pos_ub=-1,\n",
            "                add_gt_as_proposals=False),\n",
            "            allowed_border=-1,\n",
            "            pos_weight=-1,\n",
            "            debug=False),\n",
            "        rpn_proposal=dict(\n",
            "            nms_pre=2000,\n",
            "            max_per_img=1000,\n",
            "            nms=dict(type='nms', iou_threshold=0.7),\n",
            "            min_bbox_size=0),\n",
            "        rcnn=dict(\n",
            "            assigner=dict(\n",
            "                type='MaxIoUAssigner',\n",
            "                pos_iou_thr=0.5,\n",
            "                neg_iou_thr=0.5,\n",
            "                min_pos_iou=0.5,\n",
            "                match_low_quality=False,\n",
            "                ignore_iof_thr=-1),\n",
            "            sampler=dict(\n",
            "                type='RandomSampler',\n",
            "                num=512,\n",
            "                pos_fraction=0.25,\n",
            "                neg_pos_ub=-1,\n",
            "                add_gt_as_proposals=True),\n",
            "            pos_weight=-1,\n",
            "            debug=False)),\n",
            "    test_cfg=dict(\n",
            "        rpn=dict(\n",
            "            nms_pre=1000,\n",
            "            max_per_img=1000,\n",
            "            nms=dict(type='nms', iou_threshold=0.7),\n",
            "            min_bbox_size=0),\n",
            "        rcnn=dict(\n",
            "            score_thr=0.05,\n",
            "            nms=dict(type='nms', iou_threshold=0.5),\n",
            "            max_per_img=100)))\n",
            "dataset_type = 'CocoDataset'\n",
            "data_root = 'data/multisports/'\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='RandomChoiceResize',\n",
            "        scales=[(1333, 640), (1333, 672), (1333, 704), (1333, 736),\n",
            "                (1333, 768), (1333, 800)],\n",
            "        keep_ratio=True),\n",
            "    dict(type='RandomFlip', prob=0.5),\n",
            "    dict(type='PackDetInputs')\n",
            "]\n",
            "test_pipeline = [\n",
            "    dict(type='LoadImageFromFile', backend_args=None),\n",
            "    dict(type='Resize', scale=(1333, 800), keep_ratio=True),\n",
            "    dict(type='LoadAnnotations', with_bbox=True),\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=2,\n",
            "    num_workers=2,\n",
            "    persistent_workers=True,\n",
            "    sampler=dict(type='DefaultSampler', shuffle=True),\n",
            "    batch_sampler=dict(type='AspectRatioBatchSampler'),\n",
            "    dataset=dict(\n",
            "        type='CocoDataset',\n",
            "        data_root='data/multisports/',\n",
            "        ann_file='annotations/multisports_det_anno_train.json',\n",
            "        data_prefix=dict(img='rawframes/'),\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='RandomChoiceResize',\n",
            "                scales=[(1333, 640), (1333, 672), (1333, 704), (1333, 736),\n",
            "                        (1333, 768), (1333, 800)],\n",
            "                keep_ratio=True),\n",
            "            dict(type='RandomFlip', prob=0.5),\n",
            "            dict(type='PackDetInputs')\n",
            "        ],\n",
            "        backend_args=None,\n",
            "        metainfo=dict(classes=('person', ), palette=[(220, 20, 60)])))\n",
            "val_dataloader = dict(\n",
            "    batch_size=1,\n",
            "    num_workers=2,\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/multisports/',\n",
            "        ann_file='annotations/multisports_det_anno_val.json',\n",
            "        data_prefix=dict(img='rawframes/'),\n",
            "        test_mode=True,\n",
            "        pipeline=[\n",
            "            dict(type='LoadImageFromFile', backend_args=None),\n",
            "            dict(type='Resize', scale=(1333, 800), keep_ratio=True),\n",
            "            dict(type='LoadAnnotations', with_bbox=True),\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=('person', ), palette=[(220, 20, 60)])))\n",
            "test_dataloader = dict(\n",
            "    batch_size=1,\n",
            "    num_workers=2,\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/multisports/',\n",
            "        ann_file='annotations/ms_infer_anno.json',\n",
            "        data_prefix=dict(img='rawframes/'),\n",
            "        test_mode=True,\n",
            "        pipeline=[\n",
            "            dict(type='LoadImageFromFile', backend_args=None),\n",
            "            dict(type='Resize', scale=(1333, 800), keep_ratio=True),\n",
            "            dict(type='LoadAnnotations', with_bbox=True),\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=('person', ), palette=[(220, 20, 60)])))\n",
            "val_evaluator = dict(\n",
            "    type='CocoMetric',\n",
            "    ann_file='data/multisports/annotations/multisports_det_anno_val.json',\n",
            "    metric='bbox',\n",
            "    format_only=False,\n",
            "    backend_args=None,\n",
            "    metric_items=['mAP_50', 'AR@100'],\n",
            "    iou_thrs=[0.5])\n",
            "test_evaluator = dict(\n",
            "    type='CocoMetric',\n",
            "    ann_file='data/multisports/annotations/ms_infer_anno.json',\n",
            "    metric='bbox',\n",
            "    format_only=False,\n",
            "    backend_args=None,\n",
            "    metric_items=['mAP_50', 'AR@100'],\n",
            "    iou_thrs=[0.5])\n",
            "train_cfg = dict(type='EpochBasedTrainLoop', max_epochs=2, val_interval=1)\n",
            "val_cfg = dict(type='ValLoop')\n",
            "test_cfg = dict(type='TestLoop')\n",
            "param_scheduler = [\n",
            "    dict(type='ConstantLR', factor=1.0, by_epoch=False, begin=0, end=500)\n",
            "]\n",
            "optim_wrapper = dict(\n",
            "    type='OptimWrapper',\n",
            "    optimizer=dict(type='SGD', lr=0.005, momentum=0.9, weight_decay=0.0001))\n",
            "auto_scale_lr = dict(enable=False, base_batch_size=16)\n",
            "default_scope = 'mmdet'\n",
            "default_hooks = dict(\n",
            "    timer=dict(type='IterTimerHook'),\n",
            "    logger=dict(type='LoggerHook', interval=50),\n",
            "    param_scheduler=dict(type='ParamSchedulerHook'),\n",
            "    checkpoint=dict(type='CheckpointHook', interval=1),\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=[dict(type='LocalVisBackend')],\n",
            "    name='visualizer')\n",
            "log_processor = dict(type='LogProcessor', window_size=50, by_epoch=True)\n",
            "log_level = 'INFO'\n",
            "load_from = 'https://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco-person/faster_rcnn_r50_fpn_1x_coco-person_20201216_175929-d022e227.pth'\n",
            "resume = False\n",
            "metainfo = dict(classes=('person', ), palette=[(220, 20, 60)])\n",
            "launcher = 'none'\n",
            "work_dir = 'work_dirs/det_model'\n",
            "\n",
            "06/15 06:42:49 - 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",
            "06/15 06:42:49 - 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",
            " -------------------- \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",
            "loading annotations into memory...\n",
            "Done (t=0.00s)\n",
            "creating index...\n",
            "index created!\n",
            "loading annotations into memory...\n",
            "Done (t=0.00s)\n",
            "creating index...\n",
            "index created!\n",
            "06/15 06:42:50 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - load model from: open-mmlab://detectron2/resnet50_caffe\n",
            "06/15 06:42:50 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Loads checkpoint by openmmlab backend from path: open-mmlab://detectron2/resnet50_caffe\n",
            "Downloading: \"https://download.openmmlab.com/pretrain/third_party/resnet50_msra-5891d200.pth\" to /root/.cache/torch/hub/checkpoints/resnet50_msra-5891d200.pth\n",
            "100% 89.9M/89.9M [00:03<00:00, 31.4MB/s]\n",
            "06/15 06:42:53 - mmengine - \u001b[5m\u001b[4m\u001b[33mWARNING\u001b[0m - The model and loaded state dict do not match exactly\n",
            "\n",
            "unexpected key in source state_dict: conv1.bias\n",
            "\n",
            "Loads checkpoint by http backend from path: https://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco-person/faster_rcnn_r50_fpn_1x_coco-person_20201216_175929-d022e227.pth\n",
            "Downloading: \"https://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco-person/faster_rcnn_r50_fpn_1x_coco-person_20201216_175929-d022e227.pth\" to /root/.cache/torch/hub/checkpoints/faster_rcnn_r50_fpn_1x_coco-person_20201216_175929-d022e227.pth\n",
            "100% 158M/158M [00:06<00:00, 24.4MB/s]\n",
            "06/15 06:43:00 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Load checkpoint from https://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco-person/faster_rcnn_r50_fpn_1x_coco-person_20201216_175929-d022e227.pth\n",
            "06/15 06:43:00 - 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",
            "06/15 06:43:00 - mmengine - \u001b[5m\u001b[4m\u001b[33mWARNING\u001b[0m - \"HardDiskBackend\" is the alias of \"LocalBackend\" and the former will be deprecated in future.\n",
            "06/15 06:43:00 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Checkpoints will be saved to /content/mmaction2/projects/stad_tutorial/work_dirs/det_model.\n",
            "06/15 06:43:33 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [1][ 50/118]  lr: 5.0000e-03  eta: 0:02:00  time: 0.6468  data_time: 0.0127  memory: 3419  loss: 0.4823  loss_rpn_cls: 0.0063  loss_rpn_bbox: 0.0151  loss_cls: 0.1676  acc: 95.0195  loss_bbox: 0.2933\n",
            "06/15 06:43:57 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [1][100/118]  lr: 5.0000e-03  eta: 0:01:17  time: 0.4922  data_time: 0.0077  memory: 3419  loss: 0.4234  loss_rpn_cls: 0.0031  loss_rpn_bbox: 0.0134  loss_cls: 0.1394  acc: 91.9922  loss_bbox: 0.2676\n",
            "06/15 06:44:07 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Exp name: faster-rcnn_r50-caffe_fpn_ms-1x_coco_ms_person_20230615_064239\n",
            "06/15 06:44:07 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Saving checkpoint at 1 epochs\n",
            "06/15 06:44:15 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [1][ 50/120]    eta: 0:00:08  time: 0.1269  data_time: 0.0112  memory: 3419  \n",
            "06/15 06:44:21 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [1][100/120]    eta: 0:00:02  time: 0.1159  data_time: 0.0032  memory: 682  \n",
            "06/15 06:44:23 - 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.04s).\n",
            "Accumulating evaluation results...\n",
            "DONE (t=0.01s).\n",
            " Average Precision  (AP) @[ IoU=0.50:0.50 | area=   all | maxDets=100 ] = 0.913\n",
            " Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=1000 ] = -1.000\n",
            " Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=1000 ] = -1.000\n",
            " Average Precision  (AP) @[ IoU=0.50:0.50 | area= small | maxDets=1000 ] = -1.000\n",
            " Average Precision  (AP) @[ IoU=0.50:0.50 | area=medium | maxDets=1000 ] = 0.817\n",
            " Average Precision  (AP) @[ IoU=0.50:0.50 | area= large | maxDets=1000 ] = 0.908\n",
            " Average Recall     (AR) @[ IoU=0.50:0.50 | area=   all | maxDets=100 ] = 0.960\n",
            " Average Recall     (AR) @[ IoU=0.50:0.50 | area=   all | maxDets=300 ] = 0.960\n",
            " Average Recall     (AR) @[ IoU=0.50:0.50 | area=   all | maxDets=1000 ] = 0.960\n",
            " Average Recall     (AR) @[ IoU=0.50:0.50 | area= small | maxDets=1000 ] = -1.000\n",
            " Average Recall     (AR) @[ IoU=0.50:0.50 | area=medium | maxDets=1000 ] = 1.000\n",
            " Average Recall     (AR) @[ IoU=0.50:0.50 | area= large | maxDets=1000 ] = 0.960\n",
            "06/15 06:44:23 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - bbox_mAP_copypaste: 0.913 -1.000 -1.000 -1.000 0.817 0.908\n",
            "06/15 06:44:23 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [1][120/120]    coco/bbox_mAP_50: -1.0000  coco/bbox_AR@100: 0.9600  data_time: 0.0065  time: 0.1205\n",
            "06/15 06:44:49 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [2][ 50/118]  lr: 5.0000e-03  eta: 0:00:37  time: 0.5233  data_time: 0.0099  memory: 3419  loss: 0.3250  loss_rpn_cls: 0.0025  loss_rpn_bbox: 0.0107  loss_cls: 0.1116  acc: 95.2148  loss_bbox: 0.2002\n",
            "06/15 06:45:16 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [2][100/118]  lr: 5.0000e-03  eta: 0:00:09  time: 0.5354  data_time: 0.0083  memory: 3419  loss: 0.3042  loss_rpn_cls: 0.0013  loss_rpn_bbox: 0.0105  loss_cls: 0.0946  acc: 94.9219  loss_bbox: 0.1978\n",
            "06/15 06:45:26 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Exp name: faster-rcnn_r50-caffe_fpn_ms-1x_coco_ms_person_20230615_064239\n",
            "06/15 06:45:26 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Saving checkpoint at 2 epochs\n",
            "06/15 06:45:34 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [2][ 50/120]    eta: 0:00:08  time: 0.1237  data_time: 0.0050  memory: 3419  \n",
            "06/15 06:45:40 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [2][100/120]    eta: 0:00:02  time: 0.1225  data_time: 0.0058  memory: 682  \n",
            "06/15 06:45:43 - 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.07s).\n",
            "Accumulating evaluation results...\n",
            "DONE (t=0.01s).\n",
            " Average Precision  (AP) @[ IoU=0.50:0.50 | area=   all | maxDets=100 ] = 0.912\n",
            " Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=1000 ] = -1.000\n",
            " Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=1000 ] = -1.000\n",
            " Average Precision  (AP) @[ IoU=0.50:0.50 | area= small | maxDets=1000 ] = -1.000\n",
            " Average Precision  (AP) @[ IoU=0.50:0.50 | area=medium | maxDets=1000 ] = 0.747\n",
            " Average Precision  (AP) @[ IoU=0.50:0.50 | area= large | maxDets=1000 ] = 0.916\n",
            " Average Recall     (AR) @[ IoU=0.50:0.50 | area=   all | maxDets=100 ] = 0.955\n",
            " Average Recall     (AR) @[ IoU=0.50:0.50 | area=   all | maxDets=300 ] = 0.955\n",
            " Average Recall     (AR) @[ IoU=0.50:0.50 | area=   all | maxDets=1000 ] = 0.955\n",
            " Average Recall     (AR) @[ IoU=0.50:0.50 | area= small | maxDets=1000 ] = -1.000\n",
            " Average Recall     (AR) @[ IoU=0.50:0.50 | area=medium | maxDets=1000 ] = 1.000\n",
            " Average Recall     (AR) @[ IoU=0.50:0.50 | area= large | maxDets=1000 ] = 0.954\n",
            "06/15 06:45:43 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - bbox_mAP_copypaste: 0.912 -1.000 -1.000 -1.000 0.747 0.916\n",
            "06/15 06:45:43 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [2][120/120]    coco/bbox_mAP_50: -1.0000  coco/bbox_AR@100: 0.9550  data_time: 0.0052  time: 0.1228\n",
            "\u001b[32mTraining finished successfully. \u001b[0m\n"
          ]
        }
      ],
      "source": [
        "!mim train mmdet configs/faster-rcnn_r50-caffe_fpn_ms-1x_coco_ms_person.py \\\n",
        "    --work-dir work_dirs/det_model"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {
        "id": "-pf9MnuUxRAh"
      },
      "source": [
        "### 2.4 生成 proposal bboxes\n",
        "\n",
        "在时空行为检测模型训练时，需要基于检测模型推理得到的 proposal，而不能基于标注的检测框。因此我们需要利用训练好的检测模型对整个数据集进行推理，得到 proposal 后转换为需要的格式，用于后续训练。\n",
        "\n",
        "#### 2.4.1 将数据集转换为 Coco 格式\n",
        "\n",
        "我们提供了脚本将 MultiSports 数据集转换成没有真值的标注格式，用于推理。"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 7,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "nL2n0AKJxRAi",
        "outputId": "51907af1-7da3-4713-8e90-a61b052000aa"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "[>>] 2350/2350, 1606.7 task/s, elapsed: 1s, ETA:     0s\n",
            "save json file: data/multisports/rawframes/../annotations/ms_infer_anno.json\n"
          ]
        }
      ],
      "source": [
        "!echo 'person' > data/multisports/annotations/label_map.txt\n",
        "!python tools/images2coco.py \\\n",
        "        data/multisports/rawframes \\\n",
        "        data/multisports/annotations/label_map.txt \\\n",
        "        ms_infer_anno.json"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {
        "id": "_REQniysxRAj"
      },
      "source": [
        "#### 2.4.2 推理生成 proposal file"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {
        "id": "ShnTsjs1xRAk"
      },
      "source": [
        "MMDetection 模型的推理同样基于 MIM，更多测试命令请参考 MIM [教程](https://github.com/open-mmlab/mim#command)。\n",
        "\n",
        "推理完成后，会将推理结果保存在 'data/multisports/ms_proposals.pkl'。"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 8,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "DXnT4aArxRAm",
        "outputId": "565faf02-4b7f-49ab-f30f-b20e7eb09085"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Testing command is /usr/bin/python3 /usr/local/lib/python3.10/dist-packages/mmdet/.mim/tools/test.py configs/faster-rcnn_r50-caffe_fpn_ms-1x_coco_ms_person.py work_dirs/det_model/epoch_2.pth --launcher none --out data/multisports/annotations/ms_det_proposals.pkl. \n",
            "06/15 06:45:52 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - \n",
            "------------------------------------------------------------\n",
            "System environment:\n",
            "    sys.platform: linux\n",
            "    Python: 3.10.12 (main, Jun  7 2023, 12:45:35) [GCC 9.4.0]\n",
            "    CUDA available: True\n",
            "    numpy_random_seed: 1403639615\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.1+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.1, 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.2+cu118\n",
            "    OpenCV: 4.7.0\n",
            "    MMEngine: 0.7.4\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: 1403639615\n",
            "    Distributed launcher: none\n",
            "    Distributed training: False\n",
            "    GPU number: 1\n",
            "------------------------------------------------------------\n",
            "\n",
            "06/15 06:45:52 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Config:\n",
            "model = dict(\n",
            "    type='FasterRCNN',\n",
            "    data_preprocessor=dict(\n",
            "        type='DetDataPreprocessor',\n",
            "        mean=[103.53, 116.28, 123.675],\n",
            "        std=[1.0, 1.0, 1.0],\n",
            "        bgr_to_rgb=False,\n",
            "        pad_size_divisor=32),\n",
            "    backbone=dict(\n",
            "        type='ResNet',\n",
            "        depth=50,\n",
            "        num_stages=4,\n",
            "        out_indices=(0, 1, 2, 3),\n",
            "        frozen_stages=1,\n",
            "        norm_cfg=dict(type='BN', requires_grad=False),\n",
            "        norm_eval=True,\n",
            "        style='caffe',\n",
            "        init_cfg=dict(\n",
            "            type='Pretrained',\n",
            "            checkpoint='open-mmlab://detectron2/resnet50_caffe')),\n",
            "    neck=dict(\n",
            "        type='FPN',\n",
            "        in_channels=[256, 512, 1024, 2048],\n",
            "        out_channels=256,\n",
            "        num_outs=5),\n",
            "    rpn_head=dict(\n",
            "        type='RPNHead',\n",
            "        in_channels=256,\n",
            "        feat_channels=256,\n",
            "        anchor_generator=dict(\n",
            "            type='AnchorGenerator',\n",
            "            scales=[8],\n",
            "            ratios=[0.5, 1.0, 2.0],\n",
            "            strides=[4, 8, 16, 32, 64]),\n",
            "        bbox_coder=dict(\n",
            "            type='DeltaXYWHBBoxCoder',\n",
            "            target_means=[0.0, 0.0, 0.0, 0.0],\n",
            "            target_stds=[1.0, 1.0, 1.0, 1.0]),\n",
            "        loss_cls=dict(\n",
            "            type='CrossEntropyLoss', use_sigmoid=True, loss_weight=1.0),\n",
            "        loss_bbox=dict(type='L1Loss', loss_weight=1.0)),\n",
            "    roi_head=dict(\n",
            "        type='StandardRoIHead',\n",
            "        bbox_roi_extractor=dict(\n",
            "            type='SingleRoIExtractor',\n",
            "            roi_layer=dict(type='RoIAlign', output_size=7, sampling_ratio=0),\n",
            "            out_channels=256,\n",
            "            featmap_strides=[4, 8, 16, 32]),\n",
            "        bbox_head=dict(\n",
            "            type='Shared2FCBBoxHead',\n",
            "            in_channels=256,\n",
            "            fc_out_channels=1024,\n",
            "            roi_feat_size=7,\n",
            "            num_classes=1,\n",
            "            bbox_coder=dict(\n",
            "                type='DeltaXYWHBBoxCoder',\n",
            "                target_means=[0.0, 0.0, 0.0, 0.0],\n",
            "                target_stds=[0.1, 0.1, 0.2, 0.2]),\n",
            "            reg_class_agnostic=False,\n",
            "            loss_cls=dict(\n",
            "                type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0),\n",
            "            loss_bbox=dict(type='L1Loss', loss_weight=1.0))),\n",
            "    train_cfg=dict(\n",
            "        rpn=dict(\n",
            "            assigner=dict(\n",
            "                type='MaxIoUAssigner',\n",
            "                pos_iou_thr=0.7,\n",
            "                neg_iou_thr=0.3,\n",
            "                min_pos_iou=0.3,\n",
            "                match_low_quality=True,\n",
            "                ignore_iof_thr=-1),\n",
            "            sampler=dict(\n",
            "                type='RandomSampler',\n",
            "                num=256,\n",
            "                pos_fraction=0.5,\n",
            "                neg_pos_ub=-1,\n",
            "                add_gt_as_proposals=False),\n",
            "            allowed_border=-1,\n",
            "            pos_weight=-1,\n",
            "            debug=False),\n",
            "        rpn_proposal=dict(\n",
            "            nms_pre=2000,\n",
            "            max_per_img=1000,\n",
            "            nms=dict(type='nms', iou_threshold=0.7),\n",
            "            min_bbox_size=0),\n",
            "        rcnn=dict(\n",
            "            assigner=dict(\n",
            "                type='MaxIoUAssigner',\n",
            "                pos_iou_thr=0.5,\n",
            "                neg_iou_thr=0.5,\n",
            "                min_pos_iou=0.5,\n",
            "                match_low_quality=False,\n",
            "                ignore_iof_thr=-1),\n",
            "            sampler=dict(\n",
            "                type='RandomSampler',\n",
            "                num=512,\n",
            "                pos_fraction=0.25,\n",
            "                neg_pos_ub=-1,\n",
            "                add_gt_as_proposals=True),\n",
            "            pos_weight=-1,\n",
            "            debug=False)),\n",
            "    test_cfg=dict(\n",
            "        rpn=dict(\n",
            "            nms_pre=1000,\n",
            "            max_per_img=1000,\n",
            "            nms=dict(type='nms', iou_threshold=0.7),\n",
            "            min_bbox_size=0),\n",
            "        rcnn=dict(\n",
            "            score_thr=0.05,\n",
            "            nms=dict(type='nms', iou_threshold=0.5),\n",
            "            max_per_img=100)))\n",
            "dataset_type = 'CocoDataset'\n",
            "data_root = 'data/multisports/'\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='RandomChoiceResize',\n",
            "        scales=[(1333, 640), (1333, 672), (1333, 704), (1333, 736),\n",
            "                (1333, 768), (1333, 800)],\n",
            "        keep_ratio=True),\n",
            "    dict(type='RandomFlip', prob=0.5),\n",
            "    dict(type='PackDetInputs')\n",
            "]\n",
            "test_pipeline = [\n",
            "    dict(type='LoadImageFromFile', backend_args=None),\n",
            "    dict(type='Resize', scale=(1333, 800), keep_ratio=True),\n",
            "    dict(type='LoadAnnotations', with_bbox=True),\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=2,\n",
            "    num_workers=2,\n",
            "    persistent_workers=True,\n",
            "    sampler=dict(type='DefaultSampler', shuffle=True),\n",
            "    batch_sampler=dict(type='AspectRatioBatchSampler'),\n",
            "    dataset=dict(\n",
            "        type='CocoDataset',\n",
            "        data_root='data/multisports/',\n",
            "        ann_file='annotations/multisports_det_anno_train.json',\n",
            "        data_prefix=dict(img='rawframes/'),\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='RandomChoiceResize',\n",
            "                scales=[(1333, 640), (1333, 672), (1333, 704), (1333, 736),\n",
            "                        (1333, 768), (1333, 800)],\n",
            "                keep_ratio=True),\n",
            "            dict(type='RandomFlip', prob=0.5),\n",
            "            dict(type='PackDetInputs')\n",
            "        ],\n",
            "        backend_args=None,\n",
            "        metainfo=dict(classes=('person', ), palette=[(220, 20, 60)])))\n",
            "val_dataloader = dict(\n",
            "    batch_size=1,\n",
            "    num_workers=2,\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/multisports/',\n",
            "        ann_file='annotations/multisports_det_anno_val.json',\n",
            "        data_prefix=dict(img='rawframes/'),\n",
            "        test_mode=True,\n",
            "        pipeline=[\n",
            "            dict(type='LoadImageFromFile', backend_args=None),\n",
            "            dict(type='Resize', scale=(1333, 800), keep_ratio=True),\n",
            "            dict(type='LoadAnnotations', with_bbox=True),\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=('person', ), palette=[(220, 20, 60)])))\n",
            "test_dataloader = dict(\n",
            "    batch_size=1,\n",
            "    num_workers=2,\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/multisports/',\n",
            "        ann_file='annotations/ms_infer_anno.json',\n",
            "        data_prefix=dict(img='rawframes/'),\n",
            "        test_mode=True,\n",
            "        pipeline=[\n",
            "            dict(type='LoadImageFromFile', backend_args=None),\n",
            "            dict(type='Resize', scale=(1333, 800), keep_ratio=True),\n",
            "            dict(type='LoadAnnotations', with_bbox=True),\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=('person', ), palette=[(220, 20, 60)])))\n",
            "val_evaluator = dict(\n",
            "    type='CocoMetric',\n",
            "    ann_file='data/multisports/annotations/multisports_det_anno_val.json',\n",
            "    metric='bbox',\n",
            "    format_only=False,\n",
            "    backend_args=None,\n",
            "    metric_items=['mAP_50', 'AR@100'],\n",
            "    iou_thrs=[0.5])\n",
            "test_evaluator = dict(\n",
            "    type='CocoMetric',\n",
            "    ann_file='data/multisports/annotations/ms_infer_anno.json',\n",
            "    metric='bbox',\n",
            "    format_only=False,\n",
            "    backend_args=None,\n",
            "    metric_items=['mAP_50', 'AR@100'],\n",
            "    iou_thrs=[0.5])\n",
            "train_cfg = dict(type='EpochBasedTrainLoop', max_epochs=2, val_interval=1)\n",
            "val_cfg = dict(type='ValLoop')\n",
            "test_cfg = dict(type='TestLoop')\n",
            "param_scheduler = [\n",
            "    dict(type='ConstantLR', factor=1.0, by_epoch=False, begin=0, end=500)\n",
            "]\n",
            "optim_wrapper = dict(\n",
            "    type='OptimWrapper',\n",
            "    optimizer=dict(type='SGD', lr=0.005, momentum=0.9, weight_decay=0.0001))\n",
            "auto_scale_lr = dict(enable=False, base_batch_size=16)\n",
            "default_scope = 'mmdet'\n",
            "default_hooks = dict(\n",
            "    timer=dict(type='IterTimerHook'),\n",
            "    logger=dict(type='LoggerHook', interval=50),\n",
            "    param_scheduler=dict(type='ParamSchedulerHook'),\n",
            "    checkpoint=dict(type='CheckpointHook', interval=1),\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=[dict(type='LocalVisBackend')],\n",
            "    name='visualizer')\n",
            "log_processor = dict(type='LogProcessor', window_size=50, by_epoch=True)\n",
            "log_level = 'INFO'\n",
            "load_from = 'work_dirs/det_model/epoch_2.pth'\n",
            "resume = False\n",
            "metainfo = dict(classes=('person', ), palette=[(220, 20, 60)])\n",
            "launcher = 'none'\n",
            "work_dir = './work_dirs/faster-rcnn_r50-caffe_fpn_ms-1x_coco_ms_person'\n",
            "\n",
            "06/15 06:45:55 - 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",
            "06/15 06:45:55 - 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",
            " -------------------- \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",
            "loading annotations into memory...\n",
            "Done (t=0.00s)\n",
            "creating index...\n",
            "index created!\n",
            "06/15 06:45:56 - mmengine - \u001b[5m\u001b[4m\u001b[33mWARNING\u001b[0m - The prefix is not set in metric class DumpDetResults.\n",
            "Loads checkpoint by local backend from path: work_dirs/det_model/epoch_2.pth\n",
            "06/15 06:45:57 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Load checkpoint from work_dirs/det_model/epoch_2.pth\n",
            "06/15 06:46:04 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [  50/2350]    eta: 0:05:46  time: 0.1507  data_time: 0.0046  memory: 512  \n",
            "06/15 06:46:10 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [ 100/2350]    eta: 0:05:06  time: 0.1217  data_time: 0.0059  memory: 512  \n",
            "06/15 06:46:16 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [ 150/2350]    eta: 0:04:47  time: 0.1193  data_time: 0.0022  memory: 512  \n",
            "06/15 06:46:22 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [ 200/2350]    eta: 0:04:34  time: 0.1197  data_time: 0.0023  memory: 512  \n",
            "06/15 06:46:29 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [ 250/2350]    eta: 0:04:27  time: 0.1258  data_time: 0.0073  memory: 512  \n",
            "06/15 06:46:35 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [ 300/2350]    eta: 0:04:19  time: 0.1215  data_time: 0.0026  memory: 512  \n",
            "06/15 06:46:41 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [ 350/2350]    eta: 0:04:12  time: 0.1242  data_time: 0.0046  memory: 512  \n",
            "06/15 06:46:47 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [ 400/2350]    eta: 0:04:04  time: 0.1218  data_time: 0.0029  memory: 512  \n",
            "06/15 06:46:53 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [ 450/2350]    eta: 0:03:58  time: 0.1229  data_time: 0.0042  memory: 512  \n",
            "06/15 06:46:59 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [ 500/2350]    eta: 0:03:51  time: 0.1229  data_time: 0.0048  memory: 512  \n",
            "06/15 06:47:05 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [ 550/2350]    eta: 0:03:44  time: 0.1193  data_time: 0.0020  memory: 512  \n",
            "06/15 06:47:12 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [ 600/2350]    eta: 0:03:37  time: 0.1234  data_time: 0.0060  memory: 512  \n",
            "06/15 06:47:17 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [ 650/2350]    eta: 0:03:30  time: 0.1184  data_time: 0.0025  memory: 512  \n",
            "06/15 06:47:23 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [ 700/2350]    eta: 0:03:24  time: 0.1200  data_time: 0.0041  memory: 512  \n",
            "06/15 06:47:30 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [ 750/2350]    eta: 0:03:17  time: 0.1216  data_time: 0.0046  memory: 512  \n",
            "06/15 06:47:35 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [ 800/2350]    eta: 0:03:11  time: 0.1184  data_time: 0.0024  memory: 512  \n",
            "06/15 06:47:42 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [ 850/2350]    eta: 0:03:04  time: 0.1234  data_time: 0.0064  memory: 512  \n",
            "06/15 06:47:48 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [ 900/2350]    eta: 0:02:58  time: 0.1196  data_time: 0.0028  memory: 512  \n",
            "06/15 06:47:54 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [ 950/2350]    eta: 0:02:52  time: 0.1217  data_time: 0.0046  memory: 512  \n",
            "06/15 06:48:00 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [1000/2350]    eta: 0:02:45  time: 0.1220  data_time: 0.0046  memory: 512  \n",
            "06/15 06:48:06 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [1050/2350]    eta: 0:02:39  time: 0.1203  data_time: 0.0028  memory: 512  \n",
            "06/15 06:48:12 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [1100/2350]    eta: 0:02:33  time: 0.1231  data_time: 0.0055  memory: 512  \n",
            "06/15 06:48:18 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [1150/2350]    eta: 0:02:27  time: 0.1207  data_time: 0.0033  memory: 512  \n",
            "06/15 06:48:24 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [1200/2350]    eta: 0:02:21  time: 0.1217  data_time: 0.0049  memory: 512  \n",
            "06/15 06:48:30 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [1250/2350]    eta: 0:02:14  time: 0.1211  data_time: 0.0038  memory: 512  \n",
            "06/15 06:48:36 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [1300/2350]    eta: 0:02:08  time: 0.1242  data_time: 0.0070  memory: 512  \n",
            "06/15 06:48:43 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [1350/2350]    eta: 0:02:02  time: 0.1249  data_time: 0.0077  memory: 512  \n",
            "06/15 06:48:49 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [1400/2350]    eta: 0:01:56  time: 0.1181  data_time: 0.0022  memory: 512  \n",
            "06/15 06:48:55 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [1450/2350]    eta: 0:01:50  time: 0.1219  data_time: 0.0055  memory: 512  \n",
            "06/15 06:49:01 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [1500/2350]    eta: 0:01:44  time: 0.1198  data_time: 0.0034  memory: 512  \n",
            "06/15 06:49:07 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [1550/2350]    eta: 0:01:37  time: 0.1194  data_time: 0.0028  memory: 512  \n",
            "06/15 06:49:13 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [1600/2350]    eta: 0:01:31  time: 0.1228  data_time: 0.0059  memory: 512  \n",
            "06/15 06:49:19 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [1650/2350]    eta: 0:01:25  time: 0.1193  data_time: 0.0026  memory: 512  \n",
            "06/15 06:49:25 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [1700/2350]    eta: 0:01:19  time: 0.1232  data_time: 0.0060  memory: 512  \n",
            "06/15 06:49:31 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [1750/2350]    eta: 0:01:13  time: 0.1199  data_time: 0.0028  memory: 512  \n",
            "06/15 06:49:37 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [1800/2350]    eta: 0:01:07  time: 0.1205  data_time: 0.0035  memory: 512  \n",
            "06/15 06:49:43 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [1850/2350]    eta: 0:01:01  time: 0.1237  data_time: 0.0067  memory: 512  \n",
            "06/15 06:49:49 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [1900/2350]    eta: 0:00:54  time: 0.1190  data_time: 0.0024  memory: 512  \n",
            "06/15 06:49:55 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [1950/2350]    eta: 0:00:48  time: 0.1238  data_time: 0.0069  memory: 512  \n",
            "06/15 06:50:01 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [2000/2350]    eta: 0:00:42  time: 0.1183  data_time: 0.0020  memory: 512  \n",
            "06/15 06:50:07 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [2050/2350]    eta: 0:00:36  time: 0.1212  data_time: 0.0049  memory: 512  \n",
            "06/15 06:50:13 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [2100/2350]    eta: 0:00:30  time: 0.1212  data_time: 0.0044  memory: 512  \n",
            "06/15 06:50:19 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [2150/2350]    eta: 0:00:24  time: 0.1180  data_time: 0.0019  memory: 512  \n",
            "06/15 06:50:25 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [2200/2350]    eta: 0:00:18  time: 0.1233  data_time: 0.0062  memory: 512  \n",
            "06/15 06:50:31 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [2250/2350]    eta: 0:00:12  time: 0.1186  data_time: 0.0021  memory: 512  \n",
            "06/15 06:50:37 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [2300/2350]    eta: 0:00:06  time: 0.1227  data_time: 0.0064  memory: 512  \n",
            "06/15 06:50:43 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [2350/2350]    eta: 0:00:00  time: 0.1196  data_time: 0.0033  memory: 512  \n",
            "06/15 06:50:44 - 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.37s).\n",
            "Accumulating evaluation results...\n",
            "DONE (t=0.28s).\n",
            " Average Precision  (AP) @[ IoU=0.50:0.50 | area=   all | maxDets=100 ] = -1.000\n",
            " Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=1000 ] = -1.000\n",
            " Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=1000 ] = -1.000\n",
            " Average Precision  (AP) @[ IoU=0.50:0.50 | area= small | maxDets=1000 ] = -1.000\n",
            " Average Precision  (AP) @[ IoU=0.50:0.50 | area=medium | maxDets=1000 ] = -1.000\n",
            " Average Precision  (AP) @[ IoU=0.50:0.50 | area= large | maxDets=1000 ] = -1.000\n",
            " Average Recall     (AR) @[ IoU=0.50:0.50 | area=   all | maxDets=100 ] = -1.000\n",
            " Average Recall     (AR) @[ IoU=0.50:0.50 | area=   all | maxDets=300 ] = -1.000\n",
            " Average Recall     (AR) @[ IoU=0.50:0.50 | area=   all | maxDets=1000 ] = -1.000\n",
            " Average Recall     (AR) @[ IoU=0.50:0.50 | area= small | maxDets=1000 ] = -1.000\n",
            " Average Recall     (AR) @[ IoU=0.50:0.50 | area=medium | maxDets=1000 ] = -1.000\n",
            " Average Recall     (AR) @[ IoU=0.50:0.50 | area= large | maxDets=1000 ] = -1.000\n",
            "06/15 06:50:45 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - bbox_mAP_copypaste: -1.000 -1.000 -1.000 -1.000 -1.000 -1.000\n",
            "06/15 06:50:45 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Results has been saved to data/multisports/annotations/ms_det_proposals.pkl.\n",
            "06/15 06:50:45 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(test) [2350/2350]    coco/bbox_mAP_50: -1.0000  coco/bbox_AR@100: -1.0000  data_time: 0.0042  time: 0.1219\n",
            "\u001b[32mTesting finished successfully.\u001b[0m\n"
          ]
        }
      ],
      "source": [
        "!mim test mmdet configs/faster-rcnn_r50-caffe_fpn_ms-1x_coco_ms_person.py \\\n",
        "    --checkpoint work_dirs/det_model/epoch_2.pth \\\n",
        "    --out data/multisports/annotations/ms_det_proposals.pkl"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {
        "id": "1zErF-nsxRAo"
      },
      "source": [
        "## 3. 训练时空行为检测模型\n",
        "\n",
        "### 3.1 转换标注文件以及 proposal 文件\n",
        "\n",
        "MultiSports 数据集提供的标注文件，以及 MMDetection 推理生成的 proposal 都需要进行格式转换，才能用于时空行为检测模型的训练。我们已经提供了相关的脚本工具，执行后即可生成指定格式"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 9,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "naAfcO4QxRAo",
        "outputId": "2a309bef-241f-44fc-8276-b2ea4735e37d"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "loading test result...\n",
            "[>>] 2350/2350, 3582.6 task/s, elapsed: 1s, ETA:     0s\n",
            "\u001b[01;34mdata/multisports/annotations\u001b[00m\n",
            "├── label_map.txt\n",
            "├── ms_det_proposals.pkl\n",
            "├── ms_infer_anno.json\n",
            "├── multisports_det_anno_train.json\n",
            "├── multisports_det_anno_val.json\n",
            "├── \u001b[01;32mmultisports_GT.pkl\u001b[00m\n",
            "├── multisports_proposals_train.pkl\n",
            "├── multisports_proposals_val.pkl\n",
            "├── multisports_train.csv\n",
            "└── multisports_val.csv\n",
            "\n",
            "0 directories, 10 files\n"
          ]
        }
      ],
      "source": [
        "# 转换 anno 文件\n",
        "!python ../../tools/data/multisports/parse_anno.py\n",
        "\n",
        "# 转换 proposal 文件\n",
        "!python tools/convert_proposals.py\n",
        "\n",
        "!tree data/multisports/annotations"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {
        "id": "balpcJEbxRAp"
      },
      "source": [
        "### 3.2 训练时空行为检测模型\n",
        "\n",
        "MMAction2 中已经支持训练 MultiSports 数据集，这里只需要修改 proposal 文件的路径即可, 详细配置可以参考 [config](configs/slowonly_k400_multisports.py) 文件。由于训练数据较少，配置中将在完整 MultiSports 数据集上训练得到的模型作为预训练模型，使用自定义数据集训练时不需要指定 `load_from` 配置。"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 10,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "cIuQTmnuxRAq",
        "outputId": "253d7f08-3c89-4e31-c5f4-3880aed5d817"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Training command is /usr/bin/python3 /content/mmaction2/mmaction/.mim/tools/train.py configs/slowonly_k400_multisports.py --launcher none --work-dir work_dirs/stad_model/. \n",
            "06/15 06:50:58 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - \n",
            "------------------------------------------------------------\n",
            "System environment:\n",
            "    sys.platform: linux\n",
            "    Python: 3.10.12 (main, Jun  7 2023, 12:45:35) [GCC 9.4.0]\n",
            "    CUDA available: True\n",
            "    numpy_random_seed: 546414243\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.1+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.1, 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.2+cu118\n",
            "    OpenCV: 4.7.0\n",
            "    MMEngine: 0.7.4\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: 546414243\n",
            "    diff_rank_seed: False\n",
            "    deterministic: False\n",
            "    Distributed launcher: none\n",
            "    Distributed training: False\n",
            "    GPU number: 1\n",
            "------------------------------------------------------------\n",
            "\n",
            "06/15 06:50:59 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Config:\n",
            "default_scope = 'mmaction'\n",
            "default_hooks = dict(\n",
            "    runtime_info=dict(type='RuntimeInfoHook', _scope_='mmaction'),\n",
            "    timer=dict(type='IterTimerHook', _scope_='mmaction'),\n",
            "    logger=dict(\n",
            "        type='LoggerHook', interval=20, ignore_last=False, _scope_='mmaction'),\n",
            "    param_scheduler=dict(type='ParamSchedulerHook', _scope_='mmaction'),\n",
            "    checkpoint=dict(\n",
            "        type='CheckpointHook',\n",
            "        interval=1,\n",
            "        save_best='auto',\n",
            "        _scope_='mmaction'),\n",
            "    sampler_seed=dict(type='DistSamplerSeedHook', _scope_='mmaction'),\n",
            "    sync_buffers=dict(type='SyncBuffersHook', _scope_='mmaction'))\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",
            "log_processor = dict(\n",
            "    type='LogProcessor', window_size=20, by_epoch=True, _scope_='mmaction')\n",
            "vis_backends = [dict(type='LocalVisBackend', _scope_='mmaction')]\n",
            "visualizer = dict(\n",
            "    type='ActionVisualizer',\n",
            "    vis_backends=[dict(type='LocalVisBackend')],\n",
            "    _scope_='mmaction')\n",
            "log_level = 'INFO'\n",
            "load_from = 'https://download.openmmlab.com/mmaction/v1.0/detection/slowonly/slowonly_kinetics400-pretrained-r50_8xb16-4x16x1-8e_multisports-rgb/slowonly_kinetics400-pretrained-r50_8xb16-4x16x1-8e_multisports-rgb_20230320-a1ca5e76.pth'\n",
            "resume = False\n",
            "url = 'https://download.openmmlab.com/mmaction/v1.0/recognition/slowonly/slowonly_imagenet-pretrained-r50_8xb16-4x16x1-steplr-150e_kinetics400-rgb/slowonly_imagenet-pretrained-r50_8xb16-4x16x1-steplr-150e_kinetics400-rgb_20220901-e7b65fad.pth'\n",
            "num_classes = 66\n",
            "model = dict(\n",
            "    type='FastRCNN',\n",
            "    _scope_='mmdet',\n",
            "    init_cfg=dict(\n",
            "        type='Pretrained',\n",
            "        checkpoint=\n",
            "        'https://download.openmmlab.com/mmaction/v1.0/recognition/slowonly/slowonly_imagenet-pretrained-r50_8xb16-4x16x1-steplr-150e_kinetics400-rgb/slowonly_imagenet-pretrained-r50_8xb16-4x16x1-steplr-150e_kinetics400-rgb_20220901-e7b65fad.pth'\n",
            "    ),\n",
            "    backbone=dict(\n",
            "        type='mmaction.ResNet3dSlowOnly',\n",
            "        depth=50,\n",
            "        pretrained=None,\n",
            "        pretrained2d=False,\n",
            "        lateral=False,\n",
            "        num_stages=4,\n",
            "        conv1_kernel=(1, 7, 7),\n",
            "        conv1_stride_t=1,\n",
            "        pool1_stride_t=1,\n",
            "        spatial_strides=(1, 2, 2, 1)),\n",
            "    roi_head=dict(\n",
            "        type='AVARoIHead',\n",
            "        bbox_roi_extractor=dict(\n",
            "            type='SingleRoIExtractor3D',\n",
            "            roi_layer_type='RoIAlign',\n",
            "            output_size=8,\n",
            "            with_temporal_pool=True),\n",
            "        bbox_head=dict(\n",
            "            type='BBoxHeadAVA',\n",
            "            in_channels=2048,\n",
            "            num_classes=66,\n",
            "            multilabel=False,\n",
            "            dropout_ratio=0.5)),\n",
            "    data_preprocessor=dict(\n",
            "        type='mmaction.ActionDataPreprocessor',\n",
            "        mean=[123.675, 116.28, 103.53],\n",
            "        std=[58.395, 57.12, 57.375],\n",
            "        format_shape='NCTHW'),\n",
            "    train_cfg=dict(\n",
            "        rcnn=dict(\n",
            "            assigner=dict(\n",
            "                type='MaxIoUAssignerAVA',\n",
            "                pos_iou_thr=0.9,\n",
            "                neg_iou_thr=0.9,\n",
            "                min_pos_iou=0.9),\n",
            "            sampler=dict(\n",
            "                type='RandomSampler',\n",
            "                num=32,\n",
            "                pos_fraction=1,\n",
            "                neg_pos_ub=-1,\n",
            "                add_gt_as_proposals=True),\n",
            "            pos_weight=1.0)),\n",
            "    test_cfg=dict(rcnn=None))\n",
            "dataset_type = 'AVADataset'\n",
            "data_root = 'data/multisports/trainval'\n",
            "anno_root = 'data/multisports/annotations'\n",
            "ann_file_train = 'data/multisports/annotations/multisports_train.csv'\n",
            "ann_file_val = 'data/multisports/annotations/multisports_val.csv'\n",
            "gt_file = 'data/multisports/annotations/multisports_GT.pkl'\n",
            "proposal_file_train = 'data/multisports/annotations/multisports_proposals_train.pkl'\n",
            "proposal_file_val = 'data/multisports/annotations/multisports_proposals_val.pkl'\n",
            "file_client_args = dict(io_backend='disk')\n",
            "train_pipeline = [\n",
            "    dict(type='DecordInit', io_backend='disk', _scope_='mmaction'),\n",
            "    dict(\n",
            "        type='SampleAVAFrames',\n",
            "        clip_len=4,\n",
            "        frame_interval=16,\n",
            "        _scope_='mmaction'),\n",
            "    dict(type='DecordDecode', _scope_='mmaction'),\n",
            "    dict(type='RandomRescale', scale_range=(256, 320), _scope_='mmaction'),\n",
            "    dict(type='RandomCrop', size=256, _scope_='mmaction'),\n",
            "    dict(type='Flip', flip_ratio=0.5, _scope_='mmaction'),\n",
            "    dict(\n",
            "        type='FormatShape',\n",
            "        input_format='NCTHW',\n",
            "        collapse=True,\n",
            "        _scope_='mmaction'),\n",
            "    dict(type='PackActionInputs', _scope_='mmaction')\n",
            "]\n",
            "val_pipeline = [\n",
            "    dict(type='DecordInit', io_backend='disk', _scope_='mmaction'),\n",
            "    dict(\n",
            "        type='SampleAVAFrames',\n",
            "        clip_len=4,\n",
            "        frame_interval=16,\n",
            "        test_mode=True,\n",
            "        _scope_='mmaction'),\n",
            "    dict(type='DecordDecode', _scope_='mmaction'),\n",
            "    dict(type='Resize', scale=(-1, 256), _scope_='mmaction'),\n",
            "    dict(\n",
            "        type='FormatShape',\n",
            "        input_format='NCTHW',\n",
            "        collapse=True,\n",
            "        _scope_='mmaction'),\n",
            "    dict(type='PackActionInputs', _scope_='mmaction')\n",
            "]\n",
            "train_dataloader = dict(\n",
            "    batch_size=2,\n",
            "    num_workers=2,\n",
            "    persistent_workers=True,\n",
            "    sampler=dict(type='DefaultSampler', shuffle=True, _scope_='mmaction'),\n",
            "    dataset=dict(\n",
            "        type='AVADataset',\n",
            "        ann_file='data/multisports/annotations/multisports_train.csv',\n",
            "        pipeline=[\n",
            "            dict(type='DecordInit', io_backend='disk'),\n",
            "            dict(type='SampleAVAFrames', clip_len=4, frame_interval=16),\n",
            "            dict(type='DecordDecode'),\n",
            "            dict(type='RandomRescale', scale_range=(256, 320)),\n",
            "            dict(type='RandomCrop', size=256),\n",
            "            dict(type='Flip', flip_ratio=0.5),\n",
            "            dict(type='FormatShape', input_format='NCTHW', collapse=True),\n",
            "            dict(type='PackActionInputs')\n",
            "        ],\n",
            "        num_classes=66,\n",
            "        proposal_file=\n",
            "        'data/multisports/annotations/multisports_proposals_train.pkl',\n",
            "        data_prefix=dict(img='data/multisports/trainval'),\n",
            "        timestamp_start=1,\n",
            "        start_index=0,\n",
            "        use_frames=False,\n",
            "        fps=1,\n",
            "        _scope_='mmaction'))\n",
            "val_dataloader = dict(\n",
            "    batch_size=1,\n",
            "    num_workers=2,\n",
            "    persistent_workers=True,\n",
            "    sampler=dict(type='DefaultSampler', shuffle=False, _scope_='mmaction'),\n",
            "    dataset=dict(\n",
            "        type='AVADataset',\n",
            "        ann_file='data/multisports/annotations/multisports_val.csv',\n",
            "        pipeline=[\n",
            "            dict(type='DecordInit', io_backend='disk'),\n",
            "            dict(\n",
            "                type='SampleAVAFrames',\n",
            "                clip_len=4,\n",
            "                frame_interval=16,\n",
            "                test_mode=True),\n",
            "            dict(type='DecordDecode'),\n",
            "            dict(type='Resize', scale=(-1, 256)),\n",
            "            dict(type='FormatShape', input_format='NCTHW', collapse=True),\n",
            "            dict(type='PackActionInputs')\n",
            "        ],\n",
            "        num_classes=66,\n",
            "        proposal_file=\n",
            "        'data/multisports/annotations/multisports_proposals_val.pkl',\n",
            "        data_prefix=dict(img='data/multisports/trainval'),\n",
            "        test_mode=True,\n",
            "        timestamp_start=1,\n",
            "        start_index=0,\n",
            "        use_frames=False,\n",
            "        fps=1,\n",
            "        _scope_='mmaction'))\n",
            "test_dataloader = dict(\n",
            "    batch_size=1,\n",
            "    num_workers=8,\n",
            "    persistent_workers=True,\n",
            "    sampler=dict(type='DefaultSampler', shuffle=False, _scope_='mmaction'),\n",
            "    dataset=dict(\n",
            "        type='AVADataset',\n",
            "        ann_file='data/multisports/annotations/multisports_val.csv',\n",
            "        pipeline=[\n",
            "            dict(type='DecordInit', io_backend='disk'),\n",
            "            dict(\n",
            "                type='SampleAVAFrames',\n",
            "                clip_len=4,\n",
            "                frame_interval=16,\n",
            "                test_mode=True),\n",
            "            dict(type='DecordDecode'),\n",
            "            dict(type='Resize', scale=(-1, 256)),\n",
            "            dict(type='FormatShape', input_format='NCTHW', collapse=True),\n",
            "            dict(type='PackActionInputs')\n",
            "        ],\n",
            "        num_classes=66,\n",
            "        proposal_file=\n",
            "        'data/multisports/annotations/multisports_dense_proposals_val.recall_96.13.pkl',\n",
            "        data_prefix=dict(img='data/multisports/trainval'),\n",
            "        test_mode=True,\n",
            "        timestamp_start=1,\n",
            "        start_index=0,\n",
            "        use_frames=False,\n",
            "        fps=1,\n",
            "        _scope_='mmaction'))\n",
            "val_evaluator = dict(\n",
            "    type='MultiSportsMetric',\n",
            "    ann_file='data/multisports/annotations/multisports_GT.pkl',\n",
            "    _scope_='mmaction')\n",
            "test_evaluator = dict(\n",
            "    type='MultiSportsMetric',\n",
            "    ann_file='data/multisports/annotations/multisports_GT.pkl',\n",
            "    _scope_='mmaction')\n",
            "train_cfg = dict(\n",
            "    type='EpochBasedTrainLoop',\n",
            "    max_epochs=8,\n",
            "    val_begin=1,\n",
            "    val_interval=1,\n",
            "    _scope_='mmaction')\n",
            "val_cfg = dict(type='ValLoop', _scope_='mmaction')\n",
            "test_cfg = dict(type='TestLoop', _scope_='mmaction')\n",
            "param_scheduler = [\n",
            "    dict(\n",
            "        type='LinearLR',\n",
            "        start_factor=0.1,\n",
            "        by_epoch=True,\n",
            "        begin=0,\n",
            "        end=5,\n",
            "        _scope_='mmaction'),\n",
            "    dict(\n",
            "        type='MultiStepLR',\n",
            "        begin=0,\n",
            "        end=8,\n",
            "        by_epoch=True,\n",
            "        milestones=[6, 7],\n",
            "        gamma=0.1,\n",
            "        _scope_='mmaction')\n",
            "]\n",
            "optim_wrapper = dict(\n",
            "    optimizer=dict(\n",
            "        type='SGD',\n",
            "        lr=0.01,\n",
            "        momentum=0.9,\n",
            "        weight_decay=1e-05,\n",
            "        _scope_='mmaction'),\n",
            "    clip_grad=dict(max_norm=5, norm_type=2))\n",
            "launcher = 'none'\n",
            "work_dir = 'work_dirs/stad_model/'\n",
            "randomness = dict(seed=None, diff_rank_seed=False, deterministic=False)\n",
            "\n",
            "06/15 06:51:03 - 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",
            "06/15 06:51:03 - 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",
            " -------------------- \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",
            "(NORMAL      ) SyncBuffersHook                    \n",
            "(LOW         ) ParamSchedulerHook                 \n",
            "(VERY_LOW    ) CheckpointHook                     \n",
            " -------------------- \n",
            "before_val_epoch:\n",
            "(NORMAL      ) IterTimerHook                      \n",
            "(NORMAL      ) SyncBuffersHook                    \n",
            " -------------------- \n",
            "before_val_iter:\n",
            "(NORMAL      ) IterTimerHook                      \n",
            " -------------------- \n",
            "after_val_iter:\n",
            "(NORMAL      ) IterTimerHook                      \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",
            "(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",
            "06/15 06:51:05 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - 236 out of 236 frames are valid.\n",
            "06/15 06:51:05 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - 120 out of 120 frames are valid.\n",
            "06/15 06:51:07 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - load model from: https://download.openmmlab.com/mmaction/v1.0/recognition/slowonly/slowonly_imagenet-pretrained-r50_8xb16-4x16x1-steplr-150e_kinetics400-rgb/slowonly_imagenet-pretrained-r50_8xb16-4x16x1-steplr-150e_kinetics400-rgb_20220901-e7b65fad.pth\n",
            "06/15 06:51:07 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Loads checkpoint by http backend from path: https://download.openmmlab.com/mmaction/v1.0/recognition/slowonly/slowonly_imagenet-pretrained-r50_8xb16-4x16x1-steplr-150e_kinetics400-rgb/slowonly_imagenet-pretrained-r50_8xb16-4x16x1-steplr-150e_kinetics400-rgb_20220901-e7b65fad.pth\n",
            "Downloading: \"https://download.openmmlab.com/mmaction/v1.0/recognition/slowonly/slowonly_imagenet-pretrained-r50_8xb16-4x16x1-steplr-150e_kinetics400-rgb/slowonly_imagenet-pretrained-r50_8xb16-4x16x1-steplr-150e_kinetics400-rgb_20220901-e7b65fad.pth\" to /root/.cache/torch/hub/checkpoints/slowonly_imagenet-pretrained-r50_8xb16-4x16x1-steplr-150e_kinetics400-rgb_20220901-e7b65fad.pth\n",
            "100% 124M/124M [00:05<00:00, 25.9MB/s]\n",
            "06/15 06:51:12 - mmengine - \u001b[5m\u001b[4m\u001b[33mWARNING\u001b[0m - The model and loaded state dict do not match exactly\n",
            "\n",
            "unexpected key in source state_dict: cls_head.fc_cls.weight, cls_head.fc_cls.bias\n",
            "\n",
            "missing keys in source state_dict: roi_head.bbox_head.fc_cls.weight, roi_head.bbox_head.fc_cls.bias\n",
            "\n",
            "Loads checkpoint by http backend from path: https://download.openmmlab.com/mmaction/v1.0/detection/slowonly/slowonly_kinetics400-pretrained-r50_8xb16-4x16x1-8e_multisports-rgb/slowonly_kinetics400-pretrained-r50_8xb16-4x16x1-8e_multisports-rgb_20230320-a1ca5e76.pth\n",
            "Downloading: \"https://download.openmmlab.com/mmaction/v1.0/detection/slowonly/slowonly_kinetics400-pretrained-r50_8xb16-4x16x1-8e_multisports-rgb/slowonly_kinetics400-pretrained-r50_8xb16-4x16x1-8e_multisports-rgb_20230320-a1ca5e76.pth\" to /root/.cache/torch/hub/checkpoints/slowonly_kinetics400-pretrained-r50_8xb16-4x16x1-8e_multisports-rgb_20230320-a1ca5e76.pth\n",
            "100% 122M/122M [00:04<00:00, 29.7MB/s]\n",
            "06/15 06:51:17 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Load checkpoint from https://download.openmmlab.com/mmaction/v1.0/detection/slowonly/slowonly_kinetics400-pretrained-r50_8xb16-4x16x1-8e_multisports-rgb/slowonly_kinetics400-pretrained-r50_8xb16-4x16x1-8e_multisports-rgb_20230320-a1ca5e76.pth\n",
            "06/15 06:51:17 - 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",
            "06/15 06:51:17 - mmengine - \u001b[5m\u001b[4m\u001b[33mWARNING\u001b[0m - \"HardDiskBackend\" is the alias of \"LocalBackend\" and the former will be deprecated in future.\n",
            "06/15 06:51:17 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Checkpoints will be saved to /content/mmaction2/projects/stad_tutorial/work_dirs/stad_model.\n",
            "06/15 06:51:26 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [1][ 20/118]  lr: 1.0000e-03  eta: 0:07:06  time: 0.4613  data_time: 0.0472  memory: 1381  grad_norm: 17.8613  loss: 1.1505  recall@thr=0.5: 0.6667  prec@thr=0.5: 0.6667  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 1.1505\n",
            "06/15 06:51:31 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [1][ 40/118]  lr: 1.0000e-03  eta: 0:05:28  time: 0.2655  data_time: 0.0204  memory: 1381  grad_norm: 6.8642  loss: 0.5417  recall@thr=0.5: 1.0000  prec@thr=0.5: 1.0000  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.5417\n",
            "06/15 06:51:38 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [1][ 60/118]  lr: 1.0000e-03  eta: 0:05:06  time: 0.3121  data_time: 0.0505  memory: 1381  grad_norm: 5.3190  loss: 0.6625  recall@thr=0.5: 0.9000  prec@thr=0.5: 0.9000  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.6625\n",
            "06/15 06:51:43 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [1][ 80/118]  lr: 1.0000e-03  eta: 0:04:44  time: 0.2771  data_time: 0.0255  memory: 1381  grad_norm: 3.0057  loss: 0.6646  recall@thr=0.5: 0.9231  prec@thr=0.5: 0.9231  recall@top3: 0.9231  prec@top3: 0.3077  recall@top5: 0.9231  prec@top5: 0.1846  loss_action_cls: 0.6646\n",
            "06/15 06:51:48 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [1][100/118]  lr: 1.0000e-03  eta: 0:04:26  time: 0.2625  data_time: 0.0130  memory: 1381  grad_norm: 1.8442  loss: 0.5711  recall@thr=0.5: 1.0000  prec@thr=0.5: 1.0000  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.5711\n",
            "06/15 06:51:54 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Exp name: slowonly_k400_multisports_20230615_065057\n",
            "06/15 06:51:54 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [1][118/118]  lr: 1.0000e-03  eta: 0:04:18  time: 0.2930  data_time: 0.0322  memory: 1381  grad_norm: 2.5183  loss: 0.6887  recall@thr=0.5: 0.6923  prec@thr=0.5: 0.6923  recall@top3: 0.6923  prec@top3: 0.2308  recall@top5: 0.6923  prec@top5: 0.1385  loss_action_cls: 0.6887\n",
            "06/15 06:51:54 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Saving checkpoint at 1 epochs\n",
            "06/15 06:51:59 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [1][ 20/120]    eta: 0:00:14  time: 0.1446  data_time: 0.0853  memory: 466  \n",
            "06/15 06:52:01 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [1][ 40/120]    eta: 0:00:10  time: 0.1124  data_time: 0.0612  memory: 466  \n",
            "06/15 06:52:03 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [1][ 60/120]    eta: 0:00:07  time: 0.1016  data_time: 0.0505  memory: 466  \n",
            "06/15 06:52:05 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [1][ 80/120]    eta: 0:00:04  time: 0.1083  data_time: 0.0581  memory: 466  \n",
            "06/15 06:52:08 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [1][100/120]    eta: 0:00:02  time: 0.1650  data_time: 0.1102  memory: 466  \n",
            "06/15 06:52:11 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [1][120/120]    eta: 0:00:00  time: 0.1410  data_time: 0.0866  memory: 466  \n",
            "no such label 0 aerobic push up\n",
            "no such label 1 aerobic explosive push up\n",
            "no such label 2 aerobic explosive support\n",
            "no such label 3 aerobic leg circle\n",
            "no such label 4 aerobic helicopter\n",
            "no such label 5 aerobic support\n",
            "no such label 6 aerobic v support\n",
            "no such label 7 aerobic horizontal support\n",
            "no such label 9 aerobic illusion\n",
            "no such label 10 aerobic bent leg(s) jump\n",
            "no such label 11 aerobic pike jump\n",
            "no such label 12 aerobic straddle jump\n",
            "do not evaluate aerobic kick jump\n",
            "do not evaluate aerobic off axis jump\n",
            "do not evaluate aerobic butterfly jump\n",
            "no such label 18 aerobic split\n",
            "do not evaluate aerobic balance turn\n",
            "no such label 21 volleyball serve\n",
            "no such label 22 volleyball block\n",
            "no such label 23 volleyball first pass\n",
            "no such label 24 volleyball defend\n",
            "no such label 25 volleyball protect\n",
            "no such label 26 volleyball second pass\n",
            "no such label 27 volleyball adjust\n",
            "no such label 28 volleyball save\n",
            "no such label 29 volleyball second attack\n",
            "no such label 30 volleyball spike\n",
            "no such label 31 volleyball dink\n",
            "no such label 32 volleyball no offensive attack\n",
            "no such label 33 football shoot\n",
            "no such label 34 football long pass\n",
            "no such label 35 football short pass\n",
            "no such label 36 football through pass\n",
            "no such label 37 football cross\n",
            "no such label 38 football dribble\n",
            "no such label 39 football trap\n",
            "no such label 40 football throw\n",
            "no such label 41 football diving\n",
            "no such label 42 football tackle\n",
            "no such label 43 football steal\n",
            "no such label 44 football clearance\n",
            "no such label 45 football block\n",
            "no such label 46 football press\n",
            "no such label 47 football aerial duels\n",
            "no such label 48 basketball pass\n",
            "no such label 49 basketball drive\n",
            "no such label 50 basketball dribble\n",
            "no such label 51 basketball 3-point shot\n",
            "no such label 52 basketball 2-point shot\n",
            "no such label 53 basketball free throw\n",
            "no such label 54 basketball block\n",
            "no such label 55 basketball offensive rebound\n",
            "no such label 56 basketball defensive rebound\n",
            "no such label 57 basketball pass steal\n",
            "no such label 58 basketball dribble steal\n",
            "no such label 59 basketball interfere shot\n",
            "no such label 60 basketball pick-and-roll defensive\n",
            "no such label 61 basketball sag\n",
            "no such label 62 basketball screen\n",
            "no such label 63 basketball pass-inbound\n",
            "do not evaluate basketball save\n",
            "do not evaluate basketball jump ball\n",
            "frameAP_0.5\n",
            "\n",
            "aerobic straight jump    47.41\n",
            "aerobic split jump      30.01\n",
            "aerobic scissors leap    88.94\n",
            "aerobic turn            98.43\n",
            "mAP                     66.20\n",
            "\u001b[2Klinking tubes... \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:00\u001b[0m\n",
            "\u001b[?25hno such label 0 aerobic push up\n",
            "no such label 1 aerobic explosive push up\n",
            "no such label 2 aerobic explosive support\n",
            "no such label 3 aerobic leg circle\n",
            "no such label 4 aerobic helicopter\n",
            "no such label 5 aerobic support\n",
            "no such label 6 aerobic v support\n",
            "no such label 7 aerobic horizontal support\n",
            "no such label 9 aerobic illusion\n",
            "no such label 10 aerobic bent leg(s) jump\n",
            "no such label 11 aerobic pike jump\n",
            "no such label 12 aerobic straddle jump\n",
            "do not evaluateaerobic kick jump\n",
            "do not evaluateaerobic off axis jump\n",
            "do not evaluateaerobic butterfly jump\n",
            "no such label 18 aerobic split\n",
            "do not evaluateaerobic balance turn\n",
            "no such label 21 volleyball serve\n",
            "no such label 22 volleyball block\n",
            "no such label 23 volleyball first pass\n",
            "no such label 24 volleyball defend\n",
            "no such label 25 volleyball protect\n",
            "no such label 26 volleyball second pass\n",
            "no such label 27 volleyball adjust\n",
            "no such label 28 volleyball save\n",
            "no such label 29 volleyball second attack\n",
            "no such label 30 volleyball spike\n",
            "no such label 31 volleyball dink\n",
            "no such label 32 volleyball no offensive attack\n",
            "no such label 33 football shoot\n",
            "no such label 34 football long pass\n",
            "no such label 35 football short pass\n",
            "no such label 36 football through pass\n",
            "no such label 37 football cross\n",
            "no such label 38 football dribble\n",
            "no such label 39 football trap\n",
            "no such label 40 football throw\n",
            "no such label 41 football diving\n",
            "no such label 42 football tackle\n",
            "no such label 43 football steal\n",
            "no such label 44 football clearance\n",
            "no such label 45 football block\n",
            "no such label 46 football press\n",
            "no such label 47 football aerial duels\n",
            "no such label 48 basketball pass\n",
            "no such label 49 basketball drive\n",
            "no such label 50 basketball dribble\n",
            "no such label 51 basketball 3-point shot\n",
            "no such label 52 basketball 2-point shot\n",
            "no such label 53 basketball free throw\n",
            "no such label 54 basketball block\n",
            "no such label 55 basketball offensive rebound\n",
            "no such label 56 basketball defensive rebound\n",
            "no such label 57 basketball pass steal\n",
            "no such label 58 basketball dribble steal\n",
            "no such label 59 basketball interfere shot\n",
            "no such label 60 basketball pick-and-roll defensive\n",
            "no such label 61 basketball sag\n",
            "no such label 62 basketball screen\n",
            "no such label 63 basketball pass-inbound\n",
            "do not evaluatebasketball save\n",
            "do not evaluatebasketball jump ball\n",
            "VideoAP_0.2\n",
            "\n",
            "aerobic straight jump    25.00\n",
            "aerobic split jump      20.00\n",
            "aerobic scissors leap    80.00\n",
            "aerobic turn           100.00\n",
            "mAP                     56.25\n",
            "no such label 0 aerobic push up\n",
            "no such label 1 aerobic explosive push up\n",
            "no such label 2 aerobic explosive support\n",
            "no such label 3 aerobic leg circle\n",
            "no such label 4 aerobic helicopter\n",
            "no such label 5 aerobic support\n",
            "no such label 6 aerobic v support\n",
            "no such label 7 aerobic horizontal support\n",
            "no such label 9 aerobic illusion\n",
            "no such label 10 aerobic bent leg(s) jump\n",
            "no such label 11 aerobic pike jump\n",
            "no such label 12 aerobic straddle jump\n",
            "do not evaluateaerobic kick jump\n",
            "do not evaluateaerobic off axis jump\n",
            "do not evaluateaerobic butterfly jump\n",
            "no such label 18 aerobic split\n",
            "do not evaluateaerobic balance turn\n",
            "no such label 21 volleyball serve\n",
            "no such label 22 volleyball block\n",
            "no such label 23 volleyball first pass\n",
            "no such label 24 volleyball defend\n",
            "no such label 25 volleyball protect\n",
            "no such label 26 volleyball second pass\n",
            "no such label 27 volleyball adjust\n",
            "no such label 28 volleyball save\n",
            "no such label 29 volleyball second attack\n",
            "no such label 30 volleyball spike\n",
            "no such label 31 volleyball dink\n",
            "no such label 32 volleyball no offensive attack\n",
            "no such label 33 football shoot\n",
            "no such label 34 football long pass\n",
            "no such label 35 football short pass\n",
            "no such label 36 football through pass\n",
            "no such label 37 football cross\n",
            "no such label 38 football dribble\n",
            "no such label 39 football trap\n",
            "no such label 40 football throw\n",
            "no such label 41 football diving\n",
            "no such label 42 football tackle\n",
            "no such label 43 football steal\n",
            "no such label 44 football clearance\n",
            "no such label 45 football block\n",
            "no such label 46 football press\n",
            "no such label 47 football aerial duels\n",
            "no such label 48 basketball pass\n",
            "no such label 49 basketball drive\n",
            "no such label 50 basketball dribble\n",
            "no such label 51 basketball 3-point shot\n",
            "no such label 52 basketball 2-point shot\n",
            "no such label 53 basketball free throw\n",
            "no such label 54 basketball block\n",
            "no such label 55 basketball offensive rebound\n",
            "no such label 56 basketball defensive rebound\n",
            "no such label 57 basketball pass steal\n",
            "no such label 58 basketball dribble steal\n",
            "no such label 59 basketball interfere shot\n",
            "no such label 60 basketball pick-and-roll defensive\n",
            "no such label 61 basketball sag\n",
            "no such label 62 basketball screen\n",
            "no such label 63 basketball pass-inbound\n",
            "do not evaluatebasketball save\n",
            "do not evaluatebasketball jump ball\n",
            "VideoAP_0.5\n",
            "\n",
            "aerobic straight jump     0.00\n",
            "aerobic split jump       0.00\n",
            "aerobic scissors leap    45.00\n",
            "aerobic turn           100.00\n",
            "mAP                     36.25\n",
            "06/15 06:52:12 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [1][120/120]    mAP/frameAP: 66.1965  mAP/v_map@0.2: 56.2500  mAP/v_map@0.5: 36.2500  mAP/v_map_0.05:0.45: 50.4167  mAP/v_map_0.10:0.90: 37.7963  mAP/v_map_0.50:0.95: 26.8167  data_time: 0.0753  time: 0.1288\n",
            "06/15 06:52:13 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - The best checkpoint with 66.1965 mAP/frameAP at 1 epoch is saved to best_mAP_frameAP_epoch_1.pth.\n",
            "06/15 06:52:23 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [2][ 20/118]  lr: 3.2500e-03  eta: 0:04:11  time: 0.3098  data_time: 0.0484  memory: 1381  grad_norm: 1.1745  loss: 0.4384  recall@thr=0.5: 0.7857  prec@thr=0.5: 0.7857  recall@top3: 0.9286  prec@top3: 0.3095  recall@top5: 0.9286  prec@top5: 0.1857  loss_action_cls: 0.4384\n",
            "06/15 06:52:30 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [2][ 40/118]  lr: 3.2500e-03  eta: 0:04:06  time: 0.3245  data_time: 0.0667  memory: 1381  grad_norm: 1.0271  loss: 0.3960  recall@thr=0.5: 0.9333  prec@thr=0.5: 0.9333  recall@top3: 0.9333  prec@top3: 0.3111  recall@top5: 0.9333  prec@top5: 0.1867  loss_action_cls: 0.3960\n",
            "06/15 06:52:35 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [2][ 60/118]  lr: 3.2500e-03  eta: 0:03:55  time: 0.2572  data_time: 0.0111  memory: 1381  grad_norm: 0.8150  loss: 0.3958  recall@thr=0.5: 1.0000  prec@thr=0.5: 1.0000  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.3958\n",
            "06/15 06:52:41 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [2][ 80/118]  lr: 3.2500e-03  eta: 0:03:47  time: 0.2843  data_time: 0.0167  memory: 1381  grad_norm: 1.4691  loss: 0.4575  recall@thr=0.5: 0.9333  prec@thr=0.5: 0.9333  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.4575\n",
            "06/15 06:52:47 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [2][100/118]  lr: 3.2500e-03  eta: 0:03:41  time: 0.3118  data_time: 0.0559  memory: 1381  grad_norm: 1.9420  loss: 0.5529  recall@thr=0.5: 1.0000  prec@thr=0.5: 1.0000  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.5529\n",
            "06/15 06:52:52 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Exp name: slowonly_k400_multisports_20230615_065057\n",
            "06/15 06:52:52 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [2][118/118]  lr: 3.2500e-03  eta: 0:03:33  time: 0.2532  data_time: 0.0082  memory: 1381  grad_norm: 1.6790  loss: 0.4253  recall@thr=0.5: 0.7500  prec@thr=0.5: 0.7500  recall@top3: 0.8333  prec@top3: 0.2778  recall@top5: 0.8333  prec@top5: 0.1667  loss_action_cls: 0.4253\n",
            "06/15 06:52:52 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Saving checkpoint at 2 epochs\n",
            "06/15 06:52:56 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [2][ 20/120]    eta: 0:00:15  time: 0.1515  data_time: 0.0968  memory: 466  \n",
            "06/15 06:53:00 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [2][ 40/120]    eta: 0:00:12  time: 0.1679  data_time: 0.1143  memory: 466  \n",
            "06/15 06:53:02 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [2][ 60/120]    eta: 0:00:08  time: 0.1134  data_time: 0.0631  memory: 466  \n",
            "06/15 06:53:04 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [2][ 80/120]    eta: 0:00:05  time: 0.0961  data_time: 0.0459  memory: 466  \n",
            "06/15 06:53:06 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [2][100/120]    eta: 0:00:02  time: 0.1063  data_time: 0.0549  memory: 466  \n",
            "06/15 06:53:08 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [2][120/120]    eta: 0:00:00  time: 0.1017  data_time: 0.0522  memory: 466  \n",
            "no such label 0 aerobic push up\n",
            "no such label 1 aerobic explosive push up\n",
            "no such label 2 aerobic explosive support\n",
            "no such label 3 aerobic leg circle\n",
            "no such label 4 aerobic helicopter\n",
            "no such label 5 aerobic support\n",
            "no such label 6 aerobic v support\n",
            "no such label 7 aerobic horizontal support\n",
            "no such label 9 aerobic illusion\n",
            "no such label 10 aerobic bent leg(s) jump\n",
            "no such label 11 aerobic pike jump\n",
            "no such label 12 aerobic straddle jump\n",
            "do not evaluate aerobic kick jump\n",
            "do not evaluate aerobic off axis jump\n",
            "do not evaluate aerobic butterfly jump\n",
            "no such label 18 aerobic split\n",
            "do not evaluate aerobic balance turn\n",
            "no such label 21 volleyball serve\n",
            "no such label 22 volleyball block\n",
            "no such label 23 volleyball first pass\n",
            "no such label 24 volleyball defend\n",
            "no such label 25 volleyball protect\n",
            "no such label 26 volleyball second pass\n",
            "no such label 27 volleyball adjust\n",
            "no such label 28 volleyball save\n",
            "no such label 29 volleyball second attack\n",
            "no such label 30 volleyball spike\n",
            "no such label 31 volleyball dink\n",
            "no such label 32 volleyball no offensive attack\n",
            "no such label 33 football shoot\n",
            "no such label 34 football long pass\n",
            "no such label 35 football short pass\n",
            "no such label 36 football through pass\n",
            "no such label 37 football cross\n",
            "no such label 38 football dribble\n",
            "no such label 39 football trap\n",
            "no such label 40 football throw\n",
            "no such label 41 football diving\n",
            "no such label 42 football tackle\n",
            "no such label 43 football steal\n",
            "no such label 44 football clearance\n",
            "no such label 45 football block\n",
            "no such label 46 football press\n",
            "no such label 47 football aerial duels\n",
            "no such label 48 basketball pass\n",
            "no such label 49 basketball drive\n",
            "no such label 50 basketball dribble\n",
            "no such label 51 basketball 3-point shot\n",
            "no such label 52 basketball 2-point shot\n",
            "no such label 53 basketball free throw\n",
            "no such label 54 basketball block\n",
            "no such label 55 basketball offensive rebound\n",
            "no such label 56 basketball defensive rebound\n",
            "no such label 57 basketball pass steal\n",
            "no such label 58 basketball dribble steal\n",
            "no such label 59 basketball interfere shot\n",
            "no such label 60 basketball pick-and-roll defensive\n",
            "no such label 61 basketball sag\n",
            "no such label 62 basketball screen\n",
            "no such label 63 basketball pass-inbound\n",
            "do not evaluate basketball save\n",
            "do not evaluate basketball jump ball\n",
            "frameAP_0.5\n",
            "\n",
            "aerobic straight jump    42.09\n",
            "aerobic split jump      27.71\n",
            "aerobic scissors leap    90.02\n",
            "aerobic turn            95.76\n",
            "mAP                     63.89\n",
            "\u001b[2Klinking tubes... \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:00\u001b[0m\n",
            "\u001b[?25hno such label 0 aerobic push up\n",
            "no such label 1 aerobic explosive push up\n",
            "no such label 2 aerobic explosive support\n",
            "no such label 3 aerobic leg circle\n",
            "no such label 4 aerobic helicopter\n",
            "no such label 5 aerobic support\n",
            "no such label 6 aerobic v support\n",
            "no such label 7 aerobic horizontal support\n",
            "no such label 9 aerobic illusion\n",
            "no such label 10 aerobic bent leg(s) jump\n",
            "no such label 11 aerobic pike jump\n",
            "no such label 12 aerobic straddle jump\n",
            "do not evaluateaerobic kick jump\n",
            "do not evaluateaerobic off axis jump\n",
            "do not evaluateaerobic butterfly jump\n",
            "no such label 18 aerobic split\n",
            "do not evaluateaerobic balance turn\n",
            "no such label 21 volleyball serve\n",
            "no such label 22 volleyball block\n",
            "no such label 23 volleyball first pass\n",
            "no such label 24 volleyball defend\n",
            "no such label 25 volleyball protect\n",
            "no such label 26 volleyball second pass\n",
            "no such label 27 volleyball adjust\n",
            "no such label 28 volleyball save\n",
            "no such label 29 volleyball second attack\n",
            "no such label 30 volleyball spike\n",
            "no such label 31 volleyball dink\n",
            "no such label 32 volleyball no offensive attack\n",
            "no such label 33 football shoot\n",
            "no such label 34 football long pass\n",
            "no such label 35 football short pass\n",
            "no such label 36 football through pass\n",
            "no such label 37 football cross\n",
            "no such label 38 football dribble\n",
            "no such label 39 football trap\n",
            "no such label 40 football throw\n",
            "no such label 41 football diving\n",
            "no such label 42 football tackle\n",
            "no such label 43 football steal\n",
            "no such label 44 football clearance\n",
            "no such label 45 football block\n",
            "no such label 46 football press\n",
            "no such label 47 football aerial duels\n",
            "no such label 48 basketball pass\n",
            "no such label 49 basketball drive\n",
            "no such label 50 basketball dribble\n",
            "no such label 51 basketball 3-point shot\n",
            "no such label 52 basketball 2-point shot\n",
            "no such label 53 basketball free throw\n",
            "no such label 54 basketball block\n",
            "no such label 55 basketball offensive rebound\n",
            "no such label 56 basketball defensive rebound\n",
            "no such label 57 basketball pass steal\n",
            "no such label 58 basketball dribble steal\n",
            "no such label 59 basketball interfere shot\n",
            "no such label 60 basketball pick-and-roll defensive\n",
            "no such label 61 basketball sag\n",
            "no such label 62 basketball screen\n",
            "no such label 63 basketball pass-inbound\n",
            "do not evaluatebasketball save\n",
            "do not evaluatebasketball jump ball\n",
            "VideoAP_0.2\n",
            "\n",
            "aerobic straight jump     0.00\n",
            "aerobic split jump      20.00\n",
            "aerobic scissors leap   100.00\n",
            "aerobic turn           100.00\n",
            "mAP                     55.00\n",
            "no such label 0 aerobic push up\n",
            "no such label 1 aerobic explosive push up\n",
            "no such label 2 aerobic explosive support\n",
            "no such label 3 aerobic leg circle\n",
            "no such label 4 aerobic helicopter\n",
            "no such label 5 aerobic support\n",
            "no such label 6 aerobic v support\n",
            "no such label 7 aerobic horizontal support\n",
            "no such label 9 aerobic illusion\n",
            "no such label 10 aerobic bent leg(s) jump\n",
            "no such label 11 aerobic pike jump\n",
            "no such label 12 aerobic straddle jump\n",
            "do not evaluateaerobic kick jump\n",
            "do not evaluateaerobic off axis jump\n",
            "do not evaluateaerobic butterfly jump\n",
            "no such label 18 aerobic split\n",
            "do not evaluateaerobic balance turn\n",
            "no such label 21 volleyball serve\n",
            "no such label 22 volleyball block\n",
            "no such label 23 volleyball first pass\n",
            "no such label 24 volleyball defend\n",
            "no such label 25 volleyball protect\n",
            "no such label 26 volleyball second pass\n",
            "no such label 27 volleyball adjust\n",
            "no such label 28 volleyball save\n",
            "no such label 29 volleyball second attack\n",
            "no such label 30 volleyball spike\n",
            "no such label 31 volleyball dink\n",
            "no such label 32 volleyball no offensive attack\n",
            "no such label 33 football shoot\n",
            "no such label 34 football long pass\n",
            "no such label 35 football short pass\n",
            "no such label 36 football through pass\n",
            "no such label 37 football cross\n",
            "no such label 38 football dribble\n",
            "no such label 39 football trap\n",
            "no such label 40 football throw\n",
            "no such label 41 football diving\n",
            "no such label 42 football tackle\n",
            "no such label 43 football steal\n",
            "no such label 44 football clearance\n",
            "no such label 45 football block\n",
            "no such label 46 football press\n",
            "no such label 47 football aerial duels\n",
            "no such label 48 basketball pass\n",
            "no such label 49 basketball drive\n",
            "no such label 50 basketball dribble\n",
            "no such label 51 basketball 3-point shot\n",
            "no such label 52 basketball 2-point shot\n",
            "no such label 53 basketball free throw\n",
            "no such label 54 basketball block\n",
            "no such label 55 basketball offensive rebound\n",
            "no such label 56 basketball defensive rebound\n",
            "no such label 57 basketball pass steal\n",
            "no such label 58 basketball dribble steal\n",
            "no such label 59 basketball interfere shot\n",
            "no such label 60 basketball pick-and-roll defensive\n",
            "no such label 61 basketball sag\n",
            "no such label 62 basketball screen\n",
            "no such label 63 basketball pass-inbound\n",
            "do not evaluatebasketball save\n",
            "do not evaluatebasketball jump ball\n",
            "VideoAP_0.5\n",
            "\n",
            "aerobic straight jump     0.00\n",
            "aerobic split jump       0.00\n",
            "aerobic scissors leap    36.00\n",
            "aerobic turn           100.00\n",
            "mAP                     34.00\n",
            "06/15 06:53:08 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [2][120/120]    mAP/frameAP: 63.8934  mAP/v_map@0.2: 55.0000  mAP/v_map@0.5: 34.0000  mAP/v_map_0.05:0.45: 51.8889  mAP/v_map_0.10:0.90: 34.0278  mAP/v_map_0.50:0.95: 18.7250  data_time: 0.0710  time: 0.1226\n",
            "06/15 06:53:17 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [3][ 20/118]  lr: 5.5000e-03  eta: 0:03:34  time: 0.4330  data_time: 0.1493  memory: 1381  grad_norm: 0.4795  loss: 0.5049  recall@thr=0.5: 0.8462  prec@thr=0.5: 0.8462  recall@top3: 0.8462  prec@top3: 0.2821  recall@top5: 0.8462  prec@top5: 0.1692  loss_action_cls: 0.5049\n",
            "06/15 06:53:23 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [3][ 40/118]  lr: 5.5000e-03  eta: 0:03:27  time: 0.2948  data_time: 0.0370  memory: 1381  grad_norm: 0.8584  loss: 0.4820  recall@thr=0.5: 0.6154  prec@thr=0.5: 0.6154  recall@top3: 0.6154  prec@top3: 0.2051  recall@top5: 0.6154  prec@top5: 0.1231  loss_action_cls: 0.4820\n",
            "06/15 06:53:28 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [3][ 60/118]  lr: 5.5000e-03  eta: 0:03:19  time: 0.2622  data_time: 0.0118  memory: 1381  grad_norm: 1.1041  loss: 0.2944  recall@thr=0.5: 1.0000  prec@thr=0.5: 1.0000  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.2944\n",
            "06/15 06:53:35 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [3][ 80/118]  lr: 5.5000e-03  eta: 0:03:13  time: 0.3111  data_time: 0.0470  memory: 1381  grad_norm: 0.8394  loss: 0.3393  recall@thr=0.5: 0.9091  prec@thr=0.5: 0.9091  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.3393\n",
            "06/15 06:53:40 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [3][100/118]  lr: 5.5000e-03  eta: 0:03:06  time: 0.2989  data_time: 0.0417  memory: 1381  grad_norm: 0.2155  loss: 0.4345  recall@thr=0.5: 0.8182  prec@thr=0.5: 0.8182  recall@top3: 0.8182  prec@top3: 0.2727  recall@top5: 0.8182  prec@top5: 0.1636  loss_action_cls: 0.4345\n",
            "06/15 06:53:45 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Exp name: slowonly_k400_multisports_20230615_065057\n",
            "06/15 06:53:45 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [3][118/118]  lr: 5.5000e-03  eta: 0:02:59  time: 0.2576  data_time: 0.0112  memory: 1381  grad_norm: 0.2509  loss: 0.4634  recall@thr=0.5: 1.0000  prec@thr=0.5: 1.0000  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.4634\n",
            "06/15 06:53:45 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Saving checkpoint at 3 epochs\n",
            "06/15 06:53:50 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [3][ 20/120]    eta: 0:00:18  time: 0.1815  data_time: 0.1180  memory: 466  \n",
            "06/15 06:53:53 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [3][ 40/120]    eta: 0:00:13  time: 0.1451  data_time: 0.0905  memory: 466  \n",
            "06/15 06:53:55 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [3][ 60/120]    eta: 0:00:08  time: 0.1020  data_time: 0.0510  memory: 466  \n",
            "06/15 06:53:57 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [3][ 80/120]    eta: 0:00:05  time: 0.1008  data_time: 0.0528  memory: 466  \n",
            "06/15 06:54:00 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [3][100/120]    eta: 0:00:02  time: 0.1072  data_time: 0.0569  memory: 466  \n",
            "06/15 06:54:02 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [3][120/120]    eta: 0:00:00  time: 0.1018  data_time: 0.0536  memory: 466  \n",
            "no such label 0 aerobic push up\n",
            "no such label 1 aerobic explosive push up\n",
            "no such label 2 aerobic explosive support\n",
            "no such label 3 aerobic leg circle\n",
            "no such label 4 aerobic helicopter\n",
            "no such label 5 aerobic support\n",
            "no such label 6 aerobic v support\n",
            "no such label 7 aerobic horizontal support\n",
            "no such label 9 aerobic illusion\n",
            "no such label 10 aerobic bent leg(s) jump\n",
            "no such label 11 aerobic pike jump\n",
            "no such label 12 aerobic straddle jump\n",
            "do not evaluate aerobic kick jump\n",
            "do not evaluate aerobic off axis jump\n",
            "do not evaluate aerobic butterfly jump\n",
            "no such label 18 aerobic split\n",
            "do not evaluate aerobic balance turn\n",
            "no such label 21 volleyball serve\n",
            "no such label 22 volleyball block\n",
            "no such label 23 volleyball first pass\n",
            "no such label 24 volleyball defend\n",
            "no such label 25 volleyball protect\n",
            "no such label 26 volleyball second pass\n",
            "no such label 27 volleyball adjust\n",
            "no such label 28 volleyball save\n",
            "no such label 29 volleyball second attack\n",
            "no such label 30 volleyball spike\n",
            "no such label 31 volleyball dink\n",
            "no such label 32 volleyball no offensive attack\n",
            "no such label 33 football shoot\n",
            "no such label 34 football long pass\n",
            "no such label 35 football short pass\n",
            "no such label 36 football through pass\n",
            "no such label 37 football cross\n",
            "no such label 38 football dribble\n",
            "no such label 39 football trap\n",
            "no such label 40 football throw\n",
            "no such label 41 football diving\n",
            "no such label 42 football tackle\n",
            "no such label 43 football steal\n",
            "no such label 44 football clearance\n",
            "no such label 45 football block\n",
            "no such label 46 football press\n",
            "no such label 47 football aerial duels\n",
            "no such label 48 basketball pass\n",
            "no such label 49 basketball drive\n",
            "no such label 50 basketball dribble\n",
            "no such label 51 basketball 3-point shot\n",
            "no such label 52 basketball 2-point shot\n",
            "no such label 53 basketball free throw\n",
            "no such label 54 basketball block\n",
            "no such label 55 basketball offensive rebound\n",
            "no such label 56 basketball defensive rebound\n",
            "no such label 57 basketball pass steal\n",
            "no such label 58 basketball dribble steal\n",
            "no such label 59 basketball interfere shot\n",
            "no such label 60 basketball pick-and-roll defensive\n",
            "no such label 61 basketball sag\n",
            "no such label 62 basketball screen\n",
            "no such label 63 basketball pass-inbound\n",
            "do not evaluate basketball save\n",
            "do not evaluate basketball jump ball\n",
            "frameAP_0.5\n",
            "\n",
            "aerobic straight jump    37.09\n",
            "aerobic split jump      27.98\n",
            "aerobic scissors leap    89.41\n",
            "aerobic turn            95.67\n",
            "mAP                     62.54\n",
            "\u001b[2Klinking tubes... \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:00\u001b[0m\n",
            "\u001b[?25hno such label 0 aerobic push up\n",
            "no such label 1 aerobic explosive push up\n",
            "no such label 2 aerobic explosive support\n",
            "no such label 3 aerobic leg circle\n",
            "no such label 4 aerobic helicopter\n",
            "no such label 5 aerobic support\n",
            "no such label 6 aerobic v support\n",
            "no such label 7 aerobic horizontal support\n",
            "no such label 9 aerobic illusion\n",
            "no such label 10 aerobic bent leg(s) jump\n",
            "no such label 11 aerobic pike jump\n",
            "no such label 12 aerobic straddle jump\n",
            "do not evaluateaerobic kick jump\n",
            "do not evaluateaerobic off axis jump\n",
            "do not evaluateaerobic butterfly jump\n",
            "no such label 18 aerobic split\n",
            "do not evaluateaerobic balance turn\n",
            "no such label 21 volleyball serve\n",
            "no such label 22 volleyball block\n",
            "no such label 23 volleyball first pass\n",
            "no such label 24 volleyball defend\n",
            "no such label 25 volleyball protect\n",
            "no such label 26 volleyball second pass\n",
            "no such label 27 volleyball adjust\n",
            "no such label 28 volleyball save\n",
            "no such label 29 volleyball second attack\n",
            "no such label 30 volleyball spike\n",
            "no such label 31 volleyball dink\n",
            "no such label 32 volleyball no offensive attack\n",
            "no such label 33 football shoot\n",
            "no such label 34 football long pass\n",
            "no such label 35 football short pass\n",
            "no such label 36 football through pass\n",
            "no such label 37 football cross\n",
            "no such label 38 football dribble\n",
            "no such label 39 football trap\n",
            "no such label 40 football throw\n",
            "no such label 41 football diving\n",
            "no such label 42 football tackle\n",
            "no such label 43 football steal\n",
            "no such label 44 football clearance\n",
            "no such label 45 football block\n",
            "no such label 46 football press\n",
            "no such label 47 football aerial duels\n",
            "no such label 48 basketball pass\n",
            "no such label 49 basketball drive\n",
            "no such label 50 basketball dribble\n",
            "no such label 51 basketball 3-point shot\n",
            "no such label 52 basketball 2-point shot\n",
            "no such label 53 basketball free throw\n",
            "no such label 54 basketball block\n",
            "no such label 55 basketball offensive rebound\n",
            "no such label 56 basketball defensive rebound\n",
            "no such label 57 basketball pass steal\n",
            "no such label 58 basketball dribble steal\n",
            "no such label 59 basketball interfere shot\n",
            "no such label 60 basketball pick-and-roll defensive\n",
            "no such label 61 basketball sag\n",
            "no such label 62 basketball screen\n",
            "no such label 63 basketball pass-inbound\n",
            "do not evaluatebasketball save\n",
            "do not evaluatebasketball jump ball\n",
            "VideoAP_0.2\n",
            "\n",
            "aerobic straight jump     0.00\n",
            "aerobic split jump      20.00\n",
            "aerobic scissors leap   100.00\n",
            "aerobic turn           100.00\n",
            "mAP                     55.00\n",
            "no such label 0 aerobic push up\n",
            "no such label 1 aerobic explosive push up\n",
            "no such label 2 aerobic explosive support\n",
            "no such label 3 aerobic leg circle\n",
            "no such label 4 aerobic helicopter\n",
            "no such label 5 aerobic support\n",
            "no such label 6 aerobic v support\n",
            "no such label 7 aerobic horizontal support\n",
            "no such label 9 aerobic illusion\n",
            "no such label 10 aerobic bent leg(s) jump\n",
            "no such label 11 aerobic pike jump\n",
            "no such label 12 aerobic straddle jump\n",
            "do not evaluateaerobic kick jump\n",
            "do not evaluateaerobic off axis jump\n",
            "do not evaluateaerobic butterfly jump\n",
            "no such label 18 aerobic split\n",
            "do not evaluateaerobic balance turn\n",
            "no such label 21 volleyball serve\n",
            "no such label 22 volleyball block\n",
            "no such label 23 volleyball first pass\n",
            "no such label 24 volleyball defend\n",
            "no such label 25 volleyball protect\n",
            "no such label 26 volleyball second pass\n",
            "no such label 27 volleyball adjust\n",
            "no such label 28 volleyball save\n",
            "no such label 29 volleyball second attack\n",
            "no such label 30 volleyball spike\n",
            "no such label 31 volleyball dink\n",
            "no such label 32 volleyball no offensive attack\n",
            "no such label 33 football shoot\n",
            "no such label 34 football long pass\n",
            "no such label 35 football short pass\n",
            "no such label 36 football through pass\n",
            "no such label 37 football cross\n",
            "no such label 38 football dribble\n",
            "no such label 39 football trap\n",
            "no such label 40 football throw\n",
            "no such label 41 football diving\n",
            "no such label 42 football tackle\n",
            "no such label 43 football steal\n",
            "no such label 44 football clearance\n",
            "no such label 45 football block\n",
            "no such label 46 football press\n",
            "no such label 47 football aerial duels\n",
            "no such label 48 basketball pass\n",
            "no such label 49 basketball drive\n",
            "no such label 50 basketball dribble\n",
            "no such label 51 basketball 3-point shot\n",
            "no such label 52 basketball 2-point shot\n",
            "no such label 53 basketball free throw\n",
            "no such label 54 basketball block\n",
            "no such label 55 basketball offensive rebound\n",
            "no such label 56 basketball defensive rebound\n",
            "no such label 57 basketball pass steal\n",
            "no such label 58 basketball dribble steal\n",
            "no such label 59 basketball interfere shot\n",
            "no such label 60 basketball pick-and-roll defensive\n",
            "no such label 61 basketball sag\n",
            "no such label 62 basketball screen\n",
            "no such label 63 basketball pass-inbound\n",
            "do not evaluatebasketball save\n",
            "do not evaluatebasketball jump ball\n",
            "VideoAP_0.5\n",
            "\n",
            "aerobic straight jump     0.00\n",
            "aerobic split jump       0.00\n",
            "aerobic scissors leap    36.00\n",
            "aerobic turn           100.00\n",
            "mAP                     34.00\n",
            "06/15 06:54:02 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [3][120/120]    mAP/frameAP: 62.5361  mAP/v_map@0.2: 55.0000  mAP/v_map@0.5: 34.0000  mAP/v_map_0.05:0.45: 51.2222  mAP/v_map_0.10:0.90: 34.1389  mAP/v_map_0.50:0.95: 18.7250  data_time: 0.0704  time: 0.1229\n",
            "06/15 06:54:10 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [4][ 20/118]  lr: 7.7500e-03  eta: 0:02:55  time: 0.3717  data_time: 0.0993  memory: 1381  grad_norm: 0.2139  loss: 0.3119  recall@thr=0.5: 1.0000  prec@thr=0.5: 1.0000  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.3119\n",
            "06/15 06:54:15 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [4][ 40/118]  lr: 7.7500e-03  eta: 0:02:48  time: 0.2730  data_time: 0.0230  memory: 1381  grad_norm: 0.6102  loss: 0.4782  recall@thr=0.5: 0.9375  prec@thr=0.5: 0.9375  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.4782\n",
            "06/15 06:54:21 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [4][ 60/118]  lr: 7.7500e-03  eta: 0:02:41  time: 0.2895  data_time: 0.0311  memory: 1381  grad_norm: 0.4057  loss: 0.3422  recall@thr=0.5: 0.9474  prec@thr=0.5: 0.9474  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.3422\n",
            "06/15 06:54:27 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [4][ 80/118]  lr: 7.7500e-03  eta: 0:02:36  time: 0.3170  data_time: 0.0490  memory: 1381  grad_norm: 0.3051  loss: 0.3628  recall@thr=0.5: 1.0000  prec@thr=0.5: 1.0000  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.3628\n",
            "06/15 06:54:32 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [4][100/118]  lr: 7.7500e-03  eta: 0:02:29  time: 0.2633  data_time: 0.0131  memory: 1381  grad_norm: 0.1671  loss: 0.3691  recall@thr=0.5: 1.0000  prec@thr=0.5: 1.0000  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.3691\n",
            "06/15 06:54:37 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Exp name: slowonly_k400_multisports_20230615_065057\n",
            "06/15 06:54:37 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [4][118/118]  lr: 7.7500e-03  eta: 0:02:23  time: 0.2721  data_time: 0.0181  memory: 1381  grad_norm: 0.1954  loss: 0.3076  recall@thr=0.5: 0.8571  prec@thr=0.5: 0.8571  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.3076\n",
            "06/15 06:54:37 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Saving checkpoint at 4 epochs\n",
            "06/15 06:54:43 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [4][ 20/120]    eta: 0:00:14  time: 0.1431  data_time: 0.0854  memory: 466  \n",
            "06/15 06:54:45 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [4][ 40/120]    eta: 0:00:10  time: 0.1086  data_time: 0.0584  memory: 466  \n",
            "06/15 06:54:47 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [4][ 60/120]    eta: 0:00:07  time: 0.1056  data_time: 0.0552  memory: 466  \n",
            "06/15 06:54:49 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [4][ 80/120]    eta: 0:00:04  time: 0.0922  data_time: 0.0399  memory: 466  \n",
            "06/15 06:54:51 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [4][100/120]    eta: 0:00:02  time: 0.1166  data_time: 0.0671  memory: 466  \n",
            "06/15 06:54:54 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [4][120/120]    eta: 0:00:00  time: 0.1468  data_time: 0.0927  memory: 466  \n",
            "no such label 0 aerobic push up\n",
            "no such label 1 aerobic explosive push up\n",
            "no such label 2 aerobic explosive support\n",
            "no such label 3 aerobic leg circle\n",
            "no such label 4 aerobic helicopter\n",
            "no such label 5 aerobic support\n",
            "no such label 6 aerobic v support\n",
            "no such label 7 aerobic horizontal support\n",
            "no such label 9 aerobic illusion\n",
            "no such label 10 aerobic bent leg(s) jump\n",
            "no such label 11 aerobic pike jump\n",
            "no such label 12 aerobic straddle jump\n",
            "do not evaluate aerobic kick jump\n",
            "do not evaluate aerobic off axis jump\n",
            "do not evaluate aerobic butterfly jump\n",
            "no such label 18 aerobic split\n",
            "do not evaluate aerobic balance turn\n",
            "no such label 21 volleyball serve\n",
            "no such label 22 volleyball block\n",
            "no such label 23 volleyball first pass\n",
            "no such label 24 volleyball defend\n",
            "no such label 25 volleyball protect\n",
            "no such label 26 volleyball second pass\n",
            "no such label 27 volleyball adjust\n",
            "no such label 28 volleyball save\n",
            "no such label 29 volleyball second attack\n",
            "no such label 30 volleyball spike\n",
            "no such label 31 volleyball dink\n",
            "no such label 32 volleyball no offensive attack\n",
            "no such label 33 football shoot\n",
            "no such label 34 football long pass\n",
            "no such label 35 football short pass\n",
            "no such label 36 football through pass\n",
            "no such label 37 football cross\n",
            "no such label 38 football dribble\n",
            "no such label 39 football trap\n",
            "no such label 40 football throw\n",
            "no such label 41 football diving\n",
            "no such label 42 football tackle\n",
            "no such label 43 football steal\n",
            "no such label 44 football clearance\n",
            "no such label 45 football block\n",
            "no such label 46 football press\n",
            "no such label 47 football aerial duels\n",
            "no such label 48 basketball pass\n",
            "no such label 49 basketball drive\n",
            "no such label 50 basketball dribble\n",
            "no such label 51 basketball 3-point shot\n",
            "no such label 52 basketball 2-point shot\n",
            "no such label 53 basketball free throw\n",
            "no such label 54 basketball block\n",
            "no such label 55 basketball offensive rebound\n",
            "no such label 56 basketball defensive rebound\n",
            "no such label 57 basketball pass steal\n",
            "no such label 58 basketball dribble steal\n",
            "no such label 59 basketball interfere shot\n",
            "no such label 60 basketball pick-and-roll defensive\n",
            "no such label 61 basketball sag\n",
            "no such label 62 basketball screen\n",
            "no such label 63 basketball pass-inbound\n",
            "do not evaluate basketball save\n",
            "do not evaluate basketball jump ball\n",
            "frameAP_0.5\n",
            "\n",
            "aerobic straight jump    25.62\n",
            "aerobic split jump      28.75\n",
            "aerobic scissors leap    89.02\n",
            "aerobic turn            93.30\n",
            "mAP                     59.17\n",
            "\u001b[2Klinking tubes... \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:00\u001b[0m\n",
            "\u001b[?25hno such label 0 aerobic push up\n",
            "no such label 1 aerobic explosive push up\n",
            "no such label 2 aerobic explosive support\n",
            "no such label 3 aerobic leg circle\n",
            "no such label 4 aerobic helicopter\n",
            "no such label 5 aerobic support\n",
            "no such label 6 aerobic v support\n",
            "no such label 7 aerobic horizontal support\n",
            "no such label 9 aerobic illusion\n",
            "no such label 10 aerobic bent leg(s) jump\n",
            "no such label 11 aerobic pike jump\n",
            "no such label 12 aerobic straddle jump\n",
            "do not evaluateaerobic kick jump\n",
            "do not evaluateaerobic off axis jump\n",
            "do not evaluateaerobic butterfly jump\n",
            "no such label 18 aerobic split\n",
            "do not evaluateaerobic balance turn\n",
            "no such label 21 volleyball serve\n",
            "no such label 22 volleyball block\n",
            "no such label 23 volleyball first pass\n",
            "no such label 24 volleyball defend\n",
            "no such label 25 volleyball protect\n",
            "no such label 26 volleyball second pass\n",
            "no such label 27 volleyball adjust\n",
            "no such label 28 volleyball save\n",
            "no such label 29 volleyball second attack\n",
            "no such label 30 volleyball spike\n",
            "no such label 31 volleyball dink\n",
            "no such label 32 volleyball no offensive attack\n",
            "no such label 33 football shoot\n",
            "no such label 34 football long pass\n",
            "no such label 35 football short pass\n",
            "no such label 36 football through pass\n",
            "no such label 37 football cross\n",
            "no such label 38 football dribble\n",
            "no such label 39 football trap\n",
            "no such label 40 football throw\n",
            "no such label 41 football diving\n",
            "no such label 42 football tackle\n",
            "no such label 43 football steal\n",
            "no such label 44 football clearance\n",
            "no such label 45 football block\n",
            "no such label 46 football press\n",
            "no such label 47 football aerial duels\n",
            "no such label 48 basketball pass\n",
            "no such label 49 basketball drive\n",
            "no such label 50 basketball dribble\n",
            "no such label 51 basketball 3-point shot\n",
            "no such label 52 basketball 2-point shot\n",
            "no such label 53 basketball free throw\n",
            "no such label 54 basketball block\n",
            "no such label 55 basketball offensive rebound\n",
            "no such label 56 basketball defensive rebound\n",
            "no such label 57 basketball pass steal\n",
            "no such label 58 basketball dribble steal\n",
            "no such label 59 basketball interfere shot\n",
            "no such label 60 basketball pick-and-roll defensive\n",
            "no such label 61 basketball sag\n",
            "no such label 62 basketball screen\n",
            "no such label 63 basketball pass-inbound\n",
            "do not evaluatebasketball save\n",
            "do not evaluatebasketball jump ball\n",
            "VideoAP_0.2\n",
            "\n",
            "aerobic straight jump     0.00\n",
            "aerobic split jump      20.00\n",
            "aerobic scissors leap    80.00\n",
            "aerobic turn           100.00\n",
            "mAP                     50.00\n",
            "no such label 0 aerobic push up\n",
            "no such label 1 aerobic explosive push up\n",
            "no such label 2 aerobic explosive support\n",
            "no such label 3 aerobic leg circle\n",
            "no such label 4 aerobic helicopter\n",
            "no such label 5 aerobic support\n",
            "no such label 6 aerobic v support\n",
            "no such label 7 aerobic horizontal support\n",
            "no such label 9 aerobic illusion\n",
            "no such label 10 aerobic bent leg(s) jump\n",
            "no such label 11 aerobic pike jump\n",
            "no such label 12 aerobic straddle jump\n",
            "do not evaluateaerobic kick jump\n",
            "do not evaluateaerobic off axis jump\n",
            "do not evaluateaerobic butterfly jump\n",
            "no such label 18 aerobic split\n",
            "do not evaluateaerobic balance turn\n",
            "no such label 21 volleyball serve\n",
            "no such label 22 volleyball block\n",
            "no such label 23 volleyball first pass\n",
            "no such label 24 volleyball defend\n",
            "no such label 25 volleyball protect\n",
            "no such label 26 volleyball second pass\n",
            "no such label 27 volleyball adjust\n",
            "no such label 28 volleyball save\n",
            "no such label 29 volleyball second attack\n",
            "no such label 30 volleyball spike\n",
            "no such label 31 volleyball dink\n",
            "no such label 32 volleyball no offensive attack\n",
            "no such label 33 football shoot\n",
            "no such label 34 football long pass\n",
            "no such label 35 football short pass\n",
            "no such label 36 football through pass\n",
            "no such label 37 football cross\n",
            "no such label 38 football dribble\n",
            "no such label 39 football trap\n",
            "no such label 40 football throw\n",
            "no such label 41 football diving\n",
            "no such label 42 football tackle\n",
            "no such label 43 football steal\n",
            "no such label 44 football clearance\n",
            "no such label 45 football block\n",
            "no such label 46 football press\n",
            "no such label 47 football aerial duels\n",
            "no such label 48 basketball pass\n",
            "no such label 49 basketball drive\n",
            "no such label 50 basketball dribble\n",
            "no such label 51 basketball 3-point shot\n",
            "no such label 52 basketball 2-point shot\n",
            "no such label 53 basketball free throw\n",
            "no such label 54 basketball block\n",
            "no such label 55 basketball offensive rebound\n",
            "no such label 56 basketball defensive rebound\n",
            "no such label 57 basketball pass steal\n",
            "no such label 58 basketball dribble steal\n",
            "no such label 59 basketball interfere shot\n",
            "no such label 60 basketball pick-and-roll defensive\n",
            "no such label 61 basketball sag\n",
            "no such label 62 basketball screen\n",
            "no such label 63 basketball pass-inbound\n",
            "do not evaluatebasketball save\n",
            "do not evaluatebasketball jump ball\n",
            "VideoAP_0.5\n",
            "\n",
            "aerobic straight jump     0.00\n",
            "aerobic split jump       0.00\n",
            "aerobic scissors leap    45.00\n",
            "aerobic turn           100.00\n",
            "mAP                     36.25\n",
            "06/15 06:54:55 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [4][120/120]    mAP/frameAP: 59.1749  mAP/v_map@0.2: 50.0000  mAP/v_map@0.5: 36.2500  mAP/v_map_0.05:0.45: 46.9444  mAP/v_map_0.10:0.90: 28.9352  mAP/v_map_0.50:0.95: 14.6667  data_time: 0.0663  time: 0.1186\n",
            "06/15 06:55:01 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [5][ 20/118]  lr: 1.0000e-02  eta: 0:02:17  time: 0.3090  data_time: 0.0513  memory: 1381  grad_norm: 0.2988  loss: 0.3067  recall@thr=0.5: 1.0000  prec@thr=0.5: 1.0000  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.3067\n",
            "06/15 06:55:06 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [5][ 40/118]  lr: 1.0000e-02  eta: 0:02:10  time: 0.2584  data_time: 0.0142  memory: 1381  grad_norm: 0.6702  loss: 0.3996  recall@thr=0.5: 1.0000  prec@thr=0.5: 1.0000  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.3996\n",
            "06/15 06:55:13 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [5][ 60/118]  lr: 1.0000e-02  eta: 0:02:04  time: 0.3286  data_time: 0.0617  memory: 1381  grad_norm: 0.4347  loss: 0.4374  recall@thr=0.5: 0.8462  prec@thr=0.5: 0.8462  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.4374\n",
            "06/15 06:55:19 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [5][ 80/118]  lr: 1.0000e-02  eta: 0:01:58  time: 0.2774  data_time: 0.0247  memory: 1381  grad_norm: 0.4373  loss: 0.3679  recall@thr=0.5: 0.7500  prec@thr=0.5: 0.7500  recall@top3: 0.8750  prec@top3: 0.2917  recall@top5: 0.8750  prec@top5: 0.1750  loss_action_cls: 0.3679\n",
            "06/15 06:55:24 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [5][100/118]  lr: 1.0000e-02  eta: 0:01:51  time: 0.2603  data_time: 0.0108  memory: 1381  grad_norm: 0.2507  loss: 0.3226  recall@thr=0.5: 1.0000  prec@thr=0.5: 1.0000  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.3226\n",
            "06/15 06:55:30 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Exp name: slowonly_k400_multisports_20230615_065057\n",
            "06/15 06:55:30 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [5][118/118]  lr: 1.0000e-02  eta: 0:01:46  time: 0.3256  data_time: 0.0497  memory: 1381  grad_norm: 0.0940  loss: 0.2914  recall@thr=0.5: 1.0000  prec@thr=0.5: 1.0000  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.2914\n",
            "06/15 06:55:30 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Saving checkpoint at 5 epochs\n",
            "06/15 06:55:34 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [5][ 20/120]    eta: 0:00:11  time: 0.1166  data_time: 0.0625  memory: 466  \n",
            "06/15 06:55:36 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [5][ 40/120]    eta: 0:00:09  time: 0.1119  data_time: 0.0618  memory: 466  \n",
            "06/15 06:55:38 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [5][ 60/120]    eta: 0:00:06  time: 0.1012  data_time: 0.0504  memory: 466  \n",
            "06/15 06:55:40 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [5][ 80/120]    eta: 0:00:04  time: 0.1017  data_time: 0.0537  memory: 466  \n",
            "06/15 06:55:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [5][100/120]    eta: 0:00:02  time: 0.1766  data_time: 0.1239  memory: 466  \n",
            "06/15 06:55:46 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [5][120/120]    eta: 0:00:00  time: 0.1421  data_time: 0.0884  memory: 466  \n",
            "no such label 0 aerobic push up\n",
            "no such label 1 aerobic explosive push up\n",
            "no such label 2 aerobic explosive support\n",
            "no such label 3 aerobic leg circle\n",
            "no such label 4 aerobic helicopter\n",
            "no such label 5 aerobic support\n",
            "no such label 6 aerobic v support\n",
            "no such label 7 aerobic horizontal support\n",
            "no such label 9 aerobic illusion\n",
            "no such label 10 aerobic bent leg(s) jump\n",
            "no such label 11 aerobic pike jump\n",
            "no such label 12 aerobic straddle jump\n",
            "do not evaluate aerobic kick jump\n",
            "do not evaluate aerobic off axis jump\n",
            "do not evaluate aerobic butterfly jump\n",
            "no such label 18 aerobic split\n",
            "do not evaluate aerobic balance turn\n",
            "no such label 21 volleyball serve\n",
            "no such label 22 volleyball block\n",
            "no such label 23 volleyball first pass\n",
            "no such label 24 volleyball defend\n",
            "no such label 25 volleyball protect\n",
            "no such label 26 volleyball second pass\n",
            "no such label 27 volleyball adjust\n",
            "no such label 28 volleyball save\n",
            "no such label 29 volleyball second attack\n",
            "no such label 30 volleyball spike\n",
            "no such label 31 volleyball dink\n",
            "no such label 32 volleyball no offensive attack\n",
            "no such label 33 football shoot\n",
            "no such label 34 football long pass\n",
            "no such label 35 football short pass\n",
            "no such label 36 football through pass\n",
            "no such label 37 football cross\n",
            "no such label 38 football dribble\n",
            "no such label 39 football trap\n",
            "no such label 40 football throw\n",
            "no such label 41 football diving\n",
            "no such label 42 football tackle\n",
            "no such label 43 football steal\n",
            "no such label 44 football clearance\n",
            "no such label 45 football block\n",
            "no such label 46 football press\n",
            "no such label 47 football aerial duels\n",
            "no such label 48 basketball pass\n",
            "no such label 49 basketball drive\n",
            "no such label 50 basketball dribble\n",
            "no such label 51 basketball 3-point shot\n",
            "no such label 52 basketball 2-point shot\n",
            "no such label 53 basketball free throw\n",
            "no such label 54 basketball block\n",
            "no such label 55 basketball offensive rebound\n",
            "no such label 56 basketball defensive rebound\n",
            "no such label 57 basketball pass steal\n",
            "no such label 58 basketball dribble steal\n",
            "no such label 59 basketball interfere shot\n",
            "no such label 60 basketball pick-and-roll defensive\n",
            "no such label 61 basketball sag\n",
            "no such label 62 basketball screen\n",
            "no such label 63 basketball pass-inbound\n",
            "do not evaluate basketball save\n",
            "do not evaluate basketball jump ball\n",
            "frameAP_0.5\n",
            "\n",
            "aerobic straight jump    17.82\n",
            "aerobic split jump      20.05\n",
            "aerobic scissors leap    89.00\n",
            "aerobic turn            91.20\n",
            "mAP                     54.52\n",
            "\u001b[2Klinking tubes... \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:00\u001b[0m\n",
            "\u001b[?25hno such label 0 aerobic push up\n",
            "no such label 1 aerobic explosive push up\n",
            "no such label 2 aerobic explosive support\n",
            "no such label 3 aerobic leg circle\n",
            "no such label 4 aerobic helicopter\n",
            "no such label 5 aerobic support\n",
            "no such label 6 aerobic v support\n",
            "no such label 7 aerobic horizontal support\n",
            "no such label 9 aerobic illusion\n",
            "no such label 10 aerobic bent leg(s) jump\n",
            "no such label 11 aerobic pike jump\n",
            "no such label 12 aerobic straddle jump\n",
            "do not evaluateaerobic kick jump\n",
            "do not evaluateaerobic off axis jump\n",
            "do not evaluateaerobic butterfly jump\n",
            "no such label 18 aerobic split\n",
            "do not evaluateaerobic balance turn\n",
            "no such label 21 volleyball serve\n",
            "no such label 22 volleyball block\n",
            "no such label 23 volleyball first pass\n",
            "no such label 24 volleyball defend\n",
            "no such label 25 volleyball protect\n",
            "no such label 26 volleyball second pass\n",
            "no such label 27 volleyball adjust\n",
            "no such label 28 volleyball save\n",
            "no such label 29 volleyball second attack\n",
            "no such label 30 volleyball spike\n",
            "no such label 31 volleyball dink\n",
            "no such label 32 volleyball no offensive attack\n",
            "no such label 33 football shoot\n",
            "no such label 34 football long pass\n",
            "no such label 35 football short pass\n",
            "no such label 36 football through pass\n",
            "no such label 37 football cross\n",
            "no such label 38 football dribble\n",
            "no such label 39 football trap\n",
            "no such label 40 football throw\n",
            "no such label 41 football diving\n",
            "no such label 42 football tackle\n",
            "no such label 43 football steal\n",
            "no such label 44 football clearance\n",
            "no such label 45 football block\n",
            "no such label 46 football press\n",
            "no such label 47 football aerial duels\n",
            "no such label 48 basketball pass\n",
            "no such label 49 basketball drive\n",
            "no such label 50 basketball dribble\n",
            "no such label 51 basketball 3-point shot\n",
            "no such label 52 basketball 2-point shot\n",
            "no such label 53 basketball free throw\n",
            "no such label 54 basketball block\n",
            "no such label 55 basketball offensive rebound\n",
            "no such label 56 basketball defensive rebound\n",
            "no such label 57 basketball pass steal\n",
            "no such label 58 basketball dribble steal\n",
            "no such label 59 basketball interfere shot\n",
            "no such label 60 basketball pick-and-roll defensive\n",
            "no such label 61 basketball sag\n",
            "no such label 62 basketball screen\n",
            "no such label 63 basketball pass-inbound\n",
            "do not evaluatebasketball save\n",
            "do not evaluatebasketball jump ball\n",
            "VideoAP_0.2\n",
            "\n",
            "aerobic straight jump     0.00\n",
            "aerobic split jump       0.00\n",
            "aerobic scissors leap    80.00\n",
            "aerobic turn            60.00\n",
            "mAP                     35.00\n",
            "no such label 0 aerobic push up\n",
            "no such label 1 aerobic explosive push up\n",
            "no such label 2 aerobic explosive support\n",
            "no such label 3 aerobic leg circle\n",
            "no such label 4 aerobic helicopter\n",
            "no such label 5 aerobic support\n",
            "no such label 6 aerobic v support\n",
            "no such label 7 aerobic horizontal support\n",
            "no such label 9 aerobic illusion\n",
            "no such label 10 aerobic bent leg(s) jump\n",
            "no such label 11 aerobic pike jump\n",
            "no such label 12 aerobic straddle jump\n",
            "do not evaluateaerobic kick jump\n",
            "do not evaluateaerobic off axis jump\n",
            "do not evaluateaerobic butterfly jump\n",
            "no such label 18 aerobic split\n",
            "do not evaluateaerobic balance turn\n",
            "no such label 21 volleyball serve\n",
            "no such label 22 volleyball block\n",
            "no such label 23 volleyball first pass\n",
            "no such label 24 volleyball defend\n",
            "no such label 25 volleyball protect\n",
            "no such label 26 volleyball second pass\n",
            "no such label 27 volleyball adjust\n",
            "no such label 28 volleyball save\n",
            "no such label 29 volleyball second attack\n",
            "no such label 30 volleyball spike\n",
            "no such label 31 volleyball dink\n",
            "no such label 32 volleyball no offensive attack\n",
            "no such label 33 football shoot\n",
            "no such label 34 football long pass\n",
            "no such label 35 football short pass\n",
            "no such label 36 football through pass\n",
            "no such label 37 football cross\n",
            "no such label 38 football dribble\n",
            "no such label 39 football trap\n",
            "no such label 40 football throw\n",
            "no such label 41 football diving\n",
            "no such label 42 football tackle\n",
            "no such label 43 football steal\n",
            "no such label 44 football clearance\n",
            "no such label 45 football block\n",
            "no such label 46 football press\n",
            "no such label 47 football aerial duels\n",
            "no such label 48 basketball pass\n",
            "no such label 49 basketball drive\n",
            "no such label 50 basketball dribble\n",
            "no such label 51 basketball 3-point shot\n",
            "no such label 52 basketball 2-point shot\n",
            "no such label 53 basketball free throw\n",
            "no such label 54 basketball block\n",
            "no such label 55 basketball offensive rebound\n",
            "no such label 56 basketball defensive rebound\n",
            "no such label 57 basketball pass steal\n",
            "no such label 58 basketball dribble steal\n",
            "no such label 59 basketball interfere shot\n",
            "no such label 60 basketball pick-and-roll defensive\n",
            "no such label 61 basketball sag\n",
            "no such label 62 basketball screen\n",
            "no such label 63 basketball pass-inbound\n",
            "do not evaluatebasketball save\n",
            "do not evaluatebasketball jump ball\n",
            "VideoAP_0.5\n",
            "\n",
            "aerobic straight jump     0.00\n",
            "aerobic split jump       0.00\n",
            "aerobic scissors leap    45.00\n",
            "aerobic turn            26.67\n",
            "mAP                     17.92\n",
            "06/15 06:55:47 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [5][120/120]    mAP/frameAP: 54.5189  mAP/v_map@0.2: 35.0000  mAP/v_map@0.5: 17.9167  mAP/v_map_0.05:0.45: 31.2037  mAP/v_map_0.10:0.90: 19.0741  mAP/v_map_0.50:0.95: 9.5833  data_time: 0.0733  time: 0.1249\n",
            "06/15 06:55:53 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [6][ 20/118]  lr: 1.0000e-02  eta: 0:01:40  time: 0.2867  data_time: 0.0385  memory: 1381  grad_norm: 0.1572  loss: 0.3008  recall@thr=0.5: 1.0000  prec@thr=0.5: 1.0000  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.3008\n",
            "06/15 06:55:58 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [6][ 40/118]  lr: 1.0000e-02  eta: 0:01:34  time: 0.2720  data_time: 0.0167  memory: 1381  grad_norm: 0.0803  loss: 0.2377  recall@thr=0.5: 1.0000  prec@thr=0.5: 1.0000  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.2377\n",
            "06/15 06:56:05 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [6][ 60/118]  lr: 1.0000e-02  eta: 0:01:28  time: 0.3423  data_time: 0.0840  memory: 1381  grad_norm: 0.3120  loss: 0.2442  recall@thr=0.5: 1.0000  prec@thr=0.5: 1.0000  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.2442\n",
            "06/15 06:56:10 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [6][ 80/118]  lr: 1.0000e-02  eta: 0:01:22  time: 0.2580  data_time: 0.0112  memory: 1381  grad_norm: 0.5726  loss: 0.3794  recall@thr=0.5: 1.0000  prec@thr=0.5: 1.0000  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.3794\n",
            "06/15 06:56:16 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [6][100/118]  lr: 1.0000e-02  eta: 0:01:16  time: 0.2949  data_time: 0.0347  memory: 1381  grad_norm: 0.1732  loss: 0.3004  recall@thr=0.5: 0.8750  prec@thr=0.5: 0.8750  recall@top3: 0.8750  prec@top3: 0.2917  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.3004\n",
            "06/15 06:56:22 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Exp name: slowonly_k400_multisports_20230615_065057\n",
            "06/15 06:56:22 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [6][118/118]  lr: 1.0000e-02  eta: 0:01:10  time: 0.3258  data_time: 0.0625  memory: 1381  grad_norm: 0.3709  loss: 0.3439  recall@thr=0.5: 1.0000  prec@thr=0.5: 1.0000  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.3439\n",
            "06/15 06:56:22 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Saving checkpoint at 6 epochs\n",
            "06/15 06:56:26 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [6][ 20/120]    eta: 0:00:11  time: 0.1169  data_time: 0.0624  memory: 466  \n",
            "06/15 06:56:28 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [6][ 40/120]    eta: 0:00:09  time: 0.1131  data_time: 0.0631  memory: 466  \n",
            "06/15 06:56:30 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [6][ 60/120]    eta: 0:00:06  time: 0.1064  data_time: 0.0553  memory: 466  \n",
            "06/15 06:56:33 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [6][ 80/120]    eta: 0:00:04  time: 0.1401  data_time: 0.0862  memory: 466  \n",
            "06/15 06:56:36 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [6][100/120]    eta: 0:00:02  time: 0.1519  data_time: 0.0982  memory: 466  \n",
            "06/15 06:56:38 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [6][120/120]    eta: 0:00:00  time: 0.0986  data_time: 0.0486  memory: 466  \n",
            "no such label 0 aerobic push up\n",
            "no such label 1 aerobic explosive push up\n",
            "no such label 2 aerobic explosive support\n",
            "no such label 3 aerobic leg circle\n",
            "no such label 4 aerobic helicopter\n",
            "no such label 5 aerobic support\n",
            "no such label 6 aerobic v support\n",
            "no such label 7 aerobic horizontal support\n",
            "no such label 9 aerobic illusion\n",
            "no such label 10 aerobic bent leg(s) jump\n",
            "no such label 11 aerobic pike jump\n",
            "no such label 12 aerobic straddle jump\n",
            "do not evaluate aerobic kick jump\n",
            "do not evaluate aerobic off axis jump\n",
            "do not evaluate aerobic butterfly jump\n",
            "no such label 18 aerobic split\n",
            "do not evaluate aerobic balance turn\n",
            "no such label 21 volleyball serve\n",
            "no such label 22 volleyball block\n",
            "no such label 23 volleyball first pass\n",
            "no such label 24 volleyball defend\n",
            "no such label 25 volleyball protect\n",
            "no such label 26 volleyball second pass\n",
            "no such label 27 volleyball adjust\n",
            "no such label 28 volleyball save\n",
            "no such label 29 volleyball second attack\n",
            "no such label 30 volleyball spike\n",
            "no such label 31 volleyball dink\n",
            "no such label 32 volleyball no offensive attack\n",
            "no such label 33 football shoot\n",
            "no such label 34 football long pass\n",
            "no such label 35 football short pass\n",
            "no such label 36 football through pass\n",
            "no such label 37 football cross\n",
            "no such label 38 football dribble\n",
            "no such label 39 football trap\n",
            "no such label 40 football throw\n",
            "no such label 41 football diving\n",
            "no such label 42 football tackle\n",
            "no such label 43 football steal\n",
            "no such label 44 football clearance\n",
            "no such label 45 football block\n",
            "no such label 46 football press\n",
            "no such label 47 football aerial duels\n",
            "no such label 48 basketball pass\n",
            "no such label 49 basketball drive\n",
            "no such label 50 basketball dribble\n",
            "no such label 51 basketball 3-point shot\n",
            "no such label 52 basketball 2-point shot\n",
            "no such label 53 basketball free throw\n",
            "no such label 54 basketball block\n",
            "no such label 55 basketball offensive rebound\n",
            "no such label 56 basketball defensive rebound\n",
            "no such label 57 basketball pass steal\n",
            "no such label 58 basketball dribble steal\n",
            "no such label 59 basketball interfere shot\n",
            "no such label 60 basketball pick-and-roll defensive\n",
            "no such label 61 basketball sag\n",
            "no such label 62 basketball screen\n",
            "no such label 63 basketball pass-inbound\n",
            "do not evaluate basketball save\n",
            "do not evaluate basketball jump ball\n",
            "frameAP_0.5\n",
            "\n",
            "aerobic straight jump    19.05\n",
            "aerobic split jump      22.20\n",
            "aerobic scissors leap    85.83\n",
            "aerobic turn            79.04\n",
            "mAP                     51.53\n",
            "\u001b[2Klinking tubes... \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:00\u001b[0m\n",
            "\u001b[?25hno such label 0 aerobic push up\n",
            "no such label 1 aerobic explosive push up\n",
            "no such label 2 aerobic explosive support\n",
            "no such label 3 aerobic leg circle\n",
            "no such label 4 aerobic helicopter\n",
            "no such label 5 aerobic support\n",
            "no such label 6 aerobic v support\n",
            "no such label 7 aerobic horizontal support\n",
            "no such label 9 aerobic illusion\n",
            "no such label 10 aerobic bent leg(s) jump\n",
            "no such label 11 aerobic pike jump\n",
            "no such label 12 aerobic straddle jump\n",
            "do not evaluateaerobic kick jump\n",
            "do not evaluateaerobic off axis jump\n",
            "do not evaluateaerobic butterfly jump\n",
            "no such label 18 aerobic split\n",
            "do not evaluateaerobic balance turn\n",
            "no such label 21 volleyball serve\n",
            "no such label 22 volleyball block\n",
            "no such label 23 volleyball first pass\n",
            "no such label 24 volleyball defend\n",
            "no such label 25 volleyball protect\n",
            "no such label 26 volleyball second pass\n",
            "no such label 27 volleyball adjust\n",
            "no such label 28 volleyball save\n",
            "no such label 29 volleyball second attack\n",
            "no such label 30 volleyball spike\n",
            "no such label 31 volleyball dink\n",
            "no such label 32 volleyball no offensive attack\n",
            "no such label 33 football shoot\n",
            "no such label 34 football long pass\n",
            "no such label 35 football short pass\n",
            "no such label 36 football through pass\n",
            "no such label 37 football cross\n",
            "no such label 38 football dribble\n",
            "no such label 39 football trap\n",
            "no such label 40 football throw\n",
            "no such label 41 football diving\n",
            "no such label 42 football tackle\n",
            "no such label 43 football steal\n",
            "no such label 44 football clearance\n",
            "no such label 45 football block\n",
            "no such label 46 football press\n",
            "no such label 47 football aerial duels\n",
            "no such label 48 basketball pass\n",
            "no such label 49 basketball drive\n",
            "no such label 50 basketball dribble\n",
            "no such label 51 basketball 3-point shot\n",
            "no such label 52 basketball 2-point shot\n",
            "no such label 53 basketball free throw\n",
            "no such label 54 basketball block\n",
            "no such label 55 basketball offensive rebound\n",
            "no such label 56 basketball defensive rebound\n",
            "no such label 57 basketball pass steal\n",
            "no such label 58 basketball dribble steal\n",
            "no such label 59 basketball interfere shot\n",
            "no such label 60 basketball pick-and-roll defensive\n",
            "no such label 61 basketball sag\n",
            "no such label 62 basketball screen\n",
            "no such label 63 basketball pass-inbound\n",
            "do not evaluatebasketball save\n",
            "do not evaluatebasketball jump ball\n",
            "VideoAP_0.2\n",
            "\n",
            "aerobic straight jump     0.00\n",
            "aerobic split jump       0.00\n",
            "aerobic scissors leap    80.00\n",
            "aerobic turn             0.00\n",
            "mAP                     20.00\n",
            "no such label 0 aerobic push up\n",
            "no such label 1 aerobic explosive push up\n",
            "no such label 2 aerobic explosive support\n",
            "no such label 3 aerobic leg circle\n",
            "no such label 4 aerobic helicopter\n",
            "no such label 5 aerobic support\n",
            "no such label 6 aerobic v support\n",
            "no such label 7 aerobic horizontal support\n",
            "no such label 9 aerobic illusion\n",
            "no such label 10 aerobic bent leg(s) jump\n",
            "no such label 11 aerobic pike jump\n",
            "no such label 12 aerobic straddle jump\n",
            "do not evaluateaerobic kick jump\n",
            "do not evaluateaerobic off axis jump\n",
            "do not evaluateaerobic butterfly jump\n",
            "no such label 18 aerobic split\n",
            "do not evaluateaerobic balance turn\n",
            "no such label 21 volleyball serve\n",
            "no such label 22 volleyball block\n",
            "no such label 23 volleyball first pass\n",
            "no such label 24 volleyball defend\n",
            "no such label 25 volleyball protect\n",
            "no such label 26 volleyball second pass\n",
            "no such label 27 volleyball adjust\n",
            "no such label 28 volleyball save\n",
            "no such label 29 volleyball second attack\n",
            "no such label 30 volleyball spike\n",
            "no such label 31 volleyball dink\n",
            "no such label 32 volleyball no offensive attack\n",
            "no such label 33 football shoot\n",
            "no such label 34 football long pass\n",
            "no such label 35 football short pass\n",
            "no such label 36 football through pass\n",
            "no such label 37 football cross\n",
            "no such label 38 football dribble\n",
            "no such label 39 football trap\n",
            "no such label 40 football throw\n",
            "no such label 41 football diving\n",
            "no such label 42 football tackle\n",
            "no such label 43 football steal\n",
            "no such label 44 football clearance\n",
            "no such label 45 football block\n",
            "no such label 46 football press\n",
            "no such label 47 football aerial duels\n",
            "no such label 48 basketball pass\n",
            "no such label 49 basketball drive\n",
            "no such label 50 basketball dribble\n",
            "no such label 51 basketball 3-point shot\n",
            "no such label 52 basketball 2-point shot\n",
            "no such label 53 basketball free throw\n",
            "no such label 54 basketball block\n",
            "no such label 55 basketball offensive rebound\n",
            "no such label 56 basketball defensive rebound\n",
            "no such label 57 basketball pass steal\n",
            "no such label 58 basketball dribble steal\n",
            "no such label 59 basketball interfere shot\n",
            "no such label 60 basketball pick-and-roll defensive\n",
            "no such label 61 basketball sag\n",
            "no such label 62 basketball screen\n",
            "no such label 63 basketball pass-inbound\n",
            "do not evaluatebasketball save\n",
            "do not evaluatebasketball jump ball\n",
            "VideoAP_0.5\n",
            "\n",
            "aerobic straight jump     0.00\n",
            "aerobic split jump       0.00\n",
            "aerobic scissors leap    45.00\n",
            "aerobic turn             0.00\n",
            "mAP                     11.25\n",
            "06/15 06:56:38 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [6][120/120]    mAP/frameAP: 51.5300  mAP/v_map@0.2: 20.0000  mAP/v_map@0.5: 11.2500  mAP/v_map_0.05:0.45: 18.0556  mAP/v_map_0.10:0.90: 11.8519  mAP/v_map_0.50:0.95: 6.9167  data_time: 0.0688  time: 0.1209\n",
            "06/15 06:56:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [7][ 20/118]  lr: 1.0000e-03  eta: 0:01:04  time: 0.2819  data_time: 0.0331  memory: 1381  grad_norm: 0.2811  loss: 0.2776  recall@thr=0.5: 1.0000  prec@thr=0.5: 1.0000  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.2776\n",
            "06/15 06:56:50 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [7][ 40/118]  lr: 1.0000e-03  eta: 0:00:58  time: 0.3114  data_time: 0.0473  memory: 1381  grad_norm: 0.1573  loss: 0.2043  recall@thr=0.5: 0.8182  prec@thr=0.5: 0.8182  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.2043\n",
            "06/15 06:56:56 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [7][ 60/118]  lr: 1.0000e-03  eta: 0:00:52  time: 0.2903  data_time: 0.0342  memory: 1381  grad_norm: 0.1343  loss: 0.3411  recall@thr=0.5: 0.8667  prec@thr=0.5: 0.8667  recall@top3: 0.8667  prec@top3: 0.2889  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.3411\n",
            "06/15 06:57:01 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [7][ 80/118]  lr: 1.0000e-03  eta: 0:00:46  time: 0.2623  data_time: 0.0128  memory: 1381  grad_norm: 0.1026  loss: 0.2895  recall@thr=0.5: 1.0000  prec@thr=0.5: 1.0000  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.2895\n",
            "06/15 06:57:08 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [7][100/118]  lr: 1.0000e-03  eta: 0:00:40  time: 0.3206  data_time: 0.0503  memory: 1381  grad_norm: 0.1911  loss: 0.3552  recall@thr=0.5: 0.7333  prec@thr=0.5: 0.7333  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.3552\n",
            "06/15 06:57:13 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Exp name: slowonly_k400_multisports_20230615_065057\n",
            "06/15 06:57:13 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [7][118/118]  lr: 1.0000e-03  eta: 0:00:35  time: 0.2884  data_time: 0.0335  memory: 1381  grad_norm: 0.1274  loss: 0.4391  recall@thr=0.5: 0.8571  prec@thr=0.5: 0.8571  recall@top3: 0.8571  prec@top3: 0.2857  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.4391\n",
            "06/15 06:57:13 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Saving checkpoint at 7 epochs\n",
            "06/15 06:57:17 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [7][ 20/120]    eta: 0:00:11  time: 0.1193  data_time: 0.0693  memory: 466  \n",
            "06/15 06:57:19 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [7][ 40/120]    eta: 0:00:09  time: 0.1188  data_time: 0.0670  memory: 466  \n",
            "06/15 06:57:23 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [7][ 60/120]    eta: 0:00:08  time: 0.1645  data_time: 0.1114  memory: 466  \n",
            "06/15 06:57:25 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [7][ 80/120]    eta: 0:00:05  time: 0.1391  data_time: 0.0850  memory: 466  \n",
            "06/15 06:57:27 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [7][100/120]    eta: 0:00:02  time: 0.1104  data_time: 0.0585  memory: 466  \n",
            "06/15 06:57:30 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [7][120/120]    eta: 0:00:00  time: 0.1025  data_time: 0.0512  memory: 466  \n",
            "no such label 0 aerobic push up\n",
            "no such label 1 aerobic explosive push up\n",
            "no such label 2 aerobic explosive support\n",
            "no such label 3 aerobic leg circle\n",
            "no such label 4 aerobic helicopter\n",
            "no such label 5 aerobic support\n",
            "no such label 6 aerobic v support\n",
            "no such label 7 aerobic horizontal support\n",
            "no such label 9 aerobic illusion\n",
            "no such label 10 aerobic bent leg(s) jump\n",
            "no such label 11 aerobic pike jump\n",
            "no such label 12 aerobic straddle jump\n",
            "do not evaluate aerobic kick jump\n",
            "do not evaluate aerobic off axis jump\n",
            "do not evaluate aerobic butterfly jump\n",
            "no such label 18 aerobic split\n",
            "do not evaluate aerobic balance turn\n",
            "no such label 21 volleyball serve\n",
            "no such label 22 volleyball block\n",
            "no such label 23 volleyball first pass\n",
            "no such label 24 volleyball defend\n",
            "no such label 25 volleyball protect\n",
            "no such label 26 volleyball second pass\n",
            "no such label 27 volleyball adjust\n",
            "no such label 28 volleyball save\n",
            "no such label 29 volleyball second attack\n",
            "no such label 30 volleyball spike\n",
            "no such label 31 volleyball dink\n",
            "no such label 32 volleyball no offensive attack\n",
            "no such label 33 football shoot\n",
            "no such label 34 football long pass\n",
            "no such label 35 football short pass\n",
            "no such label 36 football through pass\n",
            "no such label 37 football cross\n",
            "no such label 38 football dribble\n",
            "no such label 39 football trap\n",
            "no such label 40 football throw\n",
            "no such label 41 football diving\n",
            "no such label 42 football tackle\n",
            "no such label 43 football steal\n",
            "no such label 44 football clearance\n",
            "no such label 45 football block\n",
            "no such label 46 football press\n",
            "no such label 47 football aerial duels\n",
            "no such label 48 basketball pass\n",
            "no such label 49 basketball drive\n",
            "no such label 50 basketball dribble\n",
            "no such label 51 basketball 3-point shot\n",
            "no such label 52 basketball 2-point shot\n",
            "no such label 53 basketball free throw\n",
            "no such label 54 basketball block\n",
            "no such label 55 basketball offensive rebound\n",
            "no such label 56 basketball defensive rebound\n",
            "no such label 57 basketball pass steal\n",
            "no such label 58 basketball dribble steal\n",
            "no such label 59 basketball interfere shot\n",
            "no such label 60 basketball pick-and-roll defensive\n",
            "no such label 61 basketball sag\n",
            "no such label 62 basketball screen\n",
            "no such label 63 basketball pass-inbound\n",
            "do not evaluate basketball save\n",
            "do not evaluate basketball jump ball\n",
            "frameAP_0.5\n",
            "\n",
            "aerobic straight jump    20.79\n",
            "aerobic split jump      20.11\n",
            "aerobic scissors leap    84.84\n",
            "aerobic turn            78.58\n",
            "mAP                     51.08\n",
            "\u001b[2Klinking tubes... \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:00\u001b[0m\n",
            "\u001b[?25hno such label 0 aerobic push up\n",
            "no such label 1 aerobic explosive push up\n",
            "no such label 2 aerobic explosive support\n",
            "no such label 3 aerobic leg circle\n",
            "no such label 4 aerobic helicopter\n",
            "no such label 5 aerobic support\n",
            "no such label 6 aerobic v support\n",
            "no such label 7 aerobic horizontal support\n",
            "no such label 9 aerobic illusion\n",
            "no such label 10 aerobic bent leg(s) jump\n",
            "no such label 11 aerobic pike jump\n",
            "no such label 12 aerobic straddle jump\n",
            "do not evaluateaerobic kick jump\n",
            "do not evaluateaerobic off axis jump\n",
            "do not evaluateaerobic butterfly jump\n",
            "no such label 18 aerobic split\n",
            "do not evaluateaerobic balance turn\n",
            "no such label 21 volleyball serve\n",
            "no such label 22 volleyball block\n",
            "no such label 23 volleyball first pass\n",
            "no such label 24 volleyball defend\n",
            "no such label 25 volleyball protect\n",
            "no such label 26 volleyball second pass\n",
            "no such label 27 volleyball adjust\n",
            "no such label 28 volleyball save\n",
            "no such label 29 volleyball second attack\n",
            "no such label 30 volleyball spike\n",
            "no such label 31 volleyball dink\n",
            "no such label 32 volleyball no offensive attack\n",
            "no such label 33 football shoot\n",
            "no such label 34 football long pass\n",
            "no such label 35 football short pass\n",
            "no such label 36 football through pass\n",
            "no such label 37 football cross\n",
            "no such label 38 football dribble\n",
            "no such label 39 football trap\n",
            "no such label 40 football throw\n",
            "no such label 41 football diving\n",
            "no such label 42 football tackle\n",
            "no such label 43 football steal\n",
            "no such label 44 football clearance\n",
            "no such label 45 football block\n",
            "no such label 46 football press\n",
            "no such label 47 football aerial duels\n",
            "no such label 48 basketball pass\n",
            "no such label 49 basketball drive\n",
            "no such label 50 basketball dribble\n",
            "no such label 51 basketball 3-point shot\n",
            "no such label 52 basketball 2-point shot\n",
            "no such label 53 basketball free throw\n",
            "no such label 54 basketball block\n",
            "no such label 55 basketball offensive rebound\n",
            "no such label 56 basketball defensive rebound\n",
            "no such label 57 basketball pass steal\n",
            "no such label 58 basketball dribble steal\n",
            "no such label 59 basketball interfere shot\n",
            "no such label 60 basketball pick-and-roll defensive\n",
            "no such label 61 basketball sag\n",
            "no such label 62 basketball screen\n",
            "no such label 63 basketball pass-inbound\n",
            "do not evaluatebasketball save\n",
            "do not evaluatebasketball jump ball\n",
            "VideoAP_0.2\n",
            "\n",
            "aerobic straight jump     0.00\n",
            "aerobic split jump       0.00\n",
            "aerobic scissors leap    80.00\n",
            "aerobic turn            20.00\n",
            "mAP                     25.00\n",
            "no such label 0 aerobic push up\n",
            "no such label 1 aerobic explosive push up\n",
            "no such label 2 aerobic explosive support\n",
            "no such label 3 aerobic leg circle\n",
            "no such label 4 aerobic helicopter\n",
            "no such label 5 aerobic support\n",
            "no such label 6 aerobic v support\n",
            "no such label 7 aerobic horizontal support\n",
            "no such label 9 aerobic illusion\n",
            "no such label 10 aerobic bent leg(s) jump\n",
            "no such label 11 aerobic pike jump\n",
            "no such label 12 aerobic straddle jump\n",
            "do not evaluateaerobic kick jump\n",
            "do not evaluateaerobic off axis jump\n",
            "do not evaluateaerobic butterfly jump\n",
            "no such label 18 aerobic split\n",
            "do not evaluateaerobic balance turn\n",
            "no such label 21 volleyball serve\n",
            "no such label 22 volleyball block\n",
            "no such label 23 volleyball first pass\n",
            "no such label 24 volleyball defend\n",
            "no such label 25 volleyball protect\n",
            "no such label 26 volleyball second pass\n",
            "no such label 27 volleyball adjust\n",
            "no such label 28 volleyball save\n",
            "no such label 29 volleyball second attack\n",
            "no such label 30 volleyball spike\n",
            "no such label 31 volleyball dink\n",
            "no such label 32 volleyball no offensive attack\n",
            "no such label 33 football shoot\n",
            "no such label 34 football long pass\n",
            "no such label 35 football short pass\n",
            "no such label 36 football through pass\n",
            "no such label 37 football cross\n",
            "no such label 38 football dribble\n",
            "no such label 39 football trap\n",
            "no such label 40 football throw\n",
            "no such label 41 football diving\n",
            "no such label 42 football tackle\n",
            "no such label 43 football steal\n",
            "no such label 44 football clearance\n",
            "no such label 45 football block\n",
            "no such label 46 football press\n",
            "no such label 47 football aerial duels\n",
            "no such label 48 basketball pass\n",
            "no such label 49 basketball drive\n",
            "no such label 50 basketball dribble\n",
            "no such label 51 basketball 3-point shot\n",
            "no such label 52 basketball 2-point shot\n",
            "no such label 53 basketball free throw\n",
            "no such label 54 basketball block\n",
            "no such label 55 basketball offensive rebound\n",
            "no such label 56 basketball defensive rebound\n",
            "no such label 57 basketball pass steal\n",
            "no such label 58 basketball dribble steal\n",
            "no such label 59 basketball interfere shot\n",
            "no such label 60 basketball pick-and-roll defensive\n",
            "no such label 61 basketball sag\n",
            "no such label 62 basketball screen\n",
            "no such label 63 basketball pass-inbound\n",
            "do not evaluatebasketball save\n",
            "do not evaluatebasketball jump ball\n",
            "VideoAP_0.5\n",
            "\n",
            "aerobic straight jump     0.00\n",
            "aerobic split jump       0.00\n",
            "aerobic scissors leap    45.00\n",
            "aerobic turn             0.00\n",
            "mAP                     11.25\n",
            "06/15 06:57:30 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [7][120/120]    mAP/frameAP: 51.0794  mAP/v_map@0.2: 25.0000  mAP/v_map@0.5: 11.2500  mAP/v_map_0.05:0.45: 22.5000  mAP/v_map_0.10:0.90: 14.0741  mAP/v_map_0.50:0.95: 6.9167  data_time: 0.0735  time: 0.1255\n",
            "06/15 06:57:36 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [8][ 20/118]  lr: 1.0000e-04  eta: 0:00:29  time: 0.2894  data_time: 0.0322  memory: 1381  grad_norm: 0.1227  loss: 0.3286  recall@thr=0.5: 1.0000  prec@thr=0.5: 1.0000  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.3286\n",
            "06/15 06:57:44 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [8][ 40/118]  lr: 1.0000e-04  eta: 0:00:23  time: 0.4105  data_time: 0.1257  memory: 1381  grad_norm: 0.1948  loss: 0.3202  recall@thr=0.5: 1.0000  prec@thr=0.5: 1.0000  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.3202\n",
            "06/15 06:57:50 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [8][ 60/118]  lr: 1.0000e-04  eta: 0:00:17  time: 0.3095  data_time: 0.0537  memory: 1381  grad_norm: 0.7997  loss: 0.2428  recall@thr=0.5: 1.0000  prec@thr=0.5: 1.0000  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.2428\n",
            "06/15 06:57:56 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [8][ 80/118]  lr: 1.0000e-04  eta: 0:00:11  time: 0.2918  data_time: 0.0330  memory: 1381  grad_norm: 0.8157  loss: 0.3045  recall@thr=0.5: 1.0000  prec@thr=0.5: 1.0000  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.3045\n",
            "06/15 06:58:03 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [8][100/118]  lr: 1.0000e-04  eta: 0:00:05  time: 0.3443  data_time: 0.0786  memory: 1381  grad_norm: 0.0966  loss: 0.2605  recall@thr=0.5: 0.9375  prec@thr=0.5: 0.9375  recall@top3: 1.0000  prec@top3: 0.3333  recall@top5: 1.0000  prec@top5: 0.2000  loss_action_cls: 0.2605\n",
            "06/15 06:58:08 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Exp name: slowonly_k400_multisports_20230615_065057\n",
            "06/15 06:58:08 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(train) [8][118/118]  lr: 1.0000e-04  eta: 0:00:00  time: 0.2611  data_time: 0.0148  memory: 1381  grad_norm: 0.3034  loss: 0.2694  recall@thr=0.5: 0.9231  prec@thr=0.5: 0.9231  recall@top3: 0.9231  prec@top3: 0.3077  recall@top5: 0.9231  prec@top5: 0.1846  loss_action_cls: 0.2694\n",
            "06/15 06:58:08 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Saving checkpoint at 8 epochs\n",
            "06/15 06:58:12 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [8][ 20/120]    eta: 0:00:14  time: 0.1433  data_time: 0.0869  memory: 466  \n",
            "06/15 06:58:15 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [8][ 40/120]    eta: 0:00:12  time: 0.1664  data_time: 0.1160  memory: 466  \n",
            "06/15 06:58:18 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [8][ 60/120]    eta: 0:00:08  time: 0.1269  data_time: 0.0772  memory: 466  \n",
            "06/15 06:58:20 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [8][ 80/120]    eta: 0:00:05  time: 0.0951  data_time: 0.0455  memory: 466  \n",
            "06/15 06:58:22 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [8][100/120]    eta: 0:00:02  time: 0.1144  data_time: 0.0630  memory: 466  \n",
            "06/15 06:58:24 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [8][120/120]    eta: 0:00:00  time: 0.1028  data_time: 0.0530  memory: 466  \n",
            "no such label 0 aerobic push up\n",
            "no such label 1 aerobic explosive push up\n",
            "no such label 2 aerobic explosive support\n",
            "no such label 3 aerobic leg circle\n",
            "no such label 4 aerobic helicopter\n",
            "no such label 5 aerobic support\n",
            "no such label 6 aerobic v support\n",
            "no such label 7 aerobic horizontal support\n",
            "no such label 9 aerobic illusion\n",
            "no such label 10 aerobic bent leg(s) jump\n",
            "no such label 11 aerobic pike jump\n",
            "no such label 12 aerobic straddle jump\n",
            "do not evaluate aerobic kick jump\n",
            "do not evaluate aerobic off axis jump\n",
            "do not evaluate aerobic butterfly jump\n",
            "no such label 18 aerobic split\n",
            "do not evaluate aerobic balance turn\n",
            "no such label 21 volleyball serve\n",
            "no such label 22 volleyball block\n",
            "no such label 23 volleyball first pass\n",
            "no such label 24 volleyball defend\n",
            "no such label 25 volleyball protect\n",
            "no such label 26 volleyball second pass\n",
            "no such label 27 volleyball adjust\n",
            "no such label 28 volleyball save\n",
            "no such label 29 volleyball second attack\n",
            "no such label 30 volleyball spike\n",
            "no such label 31 volleyball dink\n",
            "no such label 32 volleyball no offensive attack\n",
            "no such label 33 football shoot\n",
            "no such label 34 football long pass\n",
            "no such label 35 football short pass\n",
            "no such label 36 football through pass\n",
            "no such label 37 football cross\n",
            "no such label 38 football dribble\n",
            "no such label 39 football trap\n",
            "no such label 40 football throw\n",
            "no such label 41 football diving\n",
            "no such label 42 football tackle\n",
            "no such label 43 football steal\n",
            "no such label 44 football clearance\n",
            "no such label 45 football block\n",
            "no such label 46 football press\n",
            "no such label 47 football aerial duels\n",
            "no such label 48 basketball pass\n",
            "no such label 49 basketball drive\n",
            "no such label 50 basketball dribble\n",
            "no such label 51 basketball 3-point shot\n",
            "no such label 52 basketball 2-point shot\n",
            "no such label 53 basketball free throw\n",
            "no such label 54 basketball block\n",
            "no such label 55 basketball offensive rebound\n",
            "no such label 56 basketball defensive rebound\n",
            "no such label 57 basketball pass steal\n",
            "no such label 58 basketball dribble steal\n",
            "no such label 59 basketball interfere shot\n",
            "no such label 60 basketball pick-and-roll defensive\n",
            "no such label 61 basketball sag\n",
            "no such label 62 basketball screen\n",
            "no such label 63 basketball pass-inbound\n",
            "do not evaluate basketball save\n",
            "do not evaluate basketball jump ball\n",
            "frameAP_0.5\n",
            "\n",
            "aerobic straight jump    15.29\n",
            "aerobic split jump      20.74\n",
            "aerobic scissors leap    86.38\n",
            "aerobic turn            80.98\n",
            "mAP                     50.85\n",
            "\u001b[2Klinking tubes... \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:00\u001b[0m\n",
            "\u001b[?25hno such label 0 aerobic push up\n",
            "no such label 1 aerobic explosive push up\n",
            "no such label 2 aerobic explosive support\n",
            "no such label 3 aerobic leg circle\n",
            "no such label 4 aerobic helicopter\n",
            "no such label 5 aerobic support\n",
            "no such label 6 aerobic v support\n",
            "no such label 7 aerobic horizontal support\n",
            "no such label 9 aerobic illusion\n",
            "no such label 10 aerobic bent leg(s) jump\n",
            "no such label 11 aerobic pike jump\n",
            "no such label 12 aerobic straddle jump\n",
            "do not evaluateaerobic kick jump\n",
            "do not evaluateaerobic off axis jump\n",
            "do not evaluateaerobic butterfly jump\n",
            "no such label 18 aerobic split\n",
            "do not evaluateaerobic balance turn\n",
            "no such label 21 volleyball serve\n",
            "no such label 22 volleyball block\n",
            "no such label 23 volleyball first pass\n",
            "no such label 24 volleyball defend\n",
            "no such label 25 volleyball protect\n",
            "no such label 26 volleyball second pass\n",
            "no such label 27 volleyball adjust\n",
            "no such label 28 volleyball save\n",
            "no such label 29 volleyball second attack\n",
            "no such label 30 volleyball spike\n",
            "no such label 31 volleyball dink\n",
            "no such label 32 volleyball no offensive attack\n",
            "no such label 33 football shoot\n",
            "no such label 34 football long pass\n",
            "no such label 35 football short pass\n",
            "no such label 36 football through pass\n",
            "no such label 37 football cross\n",
            "no such label 38 football dribble\n",
            "no such label 39 football trap\n",
            "no such label 40 football throw\n",
            "no such label 41 football diving\n",
            "no such label 42 football tackle\n",
            "no such label 43 football steal\n",
            "no such label 44 football clearance\n",
            "no such label 45 football block\n",
            "no such label 46 football press\n",
            "no such label 47 football aerial duels\n",
            "no such label 48 basketball pass\n",
            "no such label 49 basketball drive\n",
            "no such label 50 basketball dribble\n",
            "no such label 51 basketball 3-point shot\n",
            "no such label 52 basketball 2-point shot\n",
            "no such label 53 basketball free throw\n",
            "no such label 54 basketball block\n",
            "no such label 55 basketball offensive rebound\n",
            "no such label 56 basketball defensive rebound\n",
            "no such label 57 basketball pass steal\n",
            "no such label 58 basketball dribble steal\n",
            "no such label 59 basketball interfere shot\n",
            "no such label 60 basketball pick-and-roll defensive\n",
            "no such label 61 basketball sag\n",
            "no such label 62 basketball screen\n",
            "no such label 63 basketball pass-inbound\n",
            "do not evaluatebasketball save\n",
            "do not evaluatebasketball jump ball\n",
            "VideoAP_0.2\n",
            "\n",
            "aerobic straight jump     0.00\n",
            "aerobic split jump       0.00\n",
            "aerobic scissors leap    80.00\n",
            "aerobic turn            20.00\n",
            "mAP                     25.00\n",
            "no such label 0 aerobic push up\n",
            "no such label 1 aerobic explosive push up\n",
            "no such label 2 aerobic explosive support\n",
            "no such label 3 aerobic leg circle\n",
            "no such label 4 aerobic helicopter\n",
            "no such label 5 aerobic support\n",
            "no such label 6 aerobic v support\n",
            "no such label 7 aerobic horizontal support\n",
            "no such label 9 aerobic illusion\n",
            "no such label 10 aerobic bent leg(s) jump\n",
            "no such label 11 aerobic pike jump\n",
            "no such label 12 aerobic straddle jump\n",
            "do not evaluateaerobic kick jump\n",
            "do not evaluateaerobic off axis jump\n",
            "do not evaluateaerobic butterfly jump\n",
            "no such label 18 aerobic split\n",
            "do not evaluateaerobic balance turn\n",
            "no such label 21 volleyball serve\n",
            "no such label 22 volleyball block\n",
            "no such label 23 volleyball first pass\n",
            "no such label 24 volleyball defend\n",
            "no such label 25 volleyball protect\n",
            "no such label 26 volleyball second pass\n",
            "no such label 27 volleyball adjust\n",
            "no such label 28 volleyball save\n",
            "no such label 29 volleyball second attack\n",
            "no such label 30 volleyball spike\n",
            "no such label 31 volleyball dink\n",
            "no such label 32 volleyball no offensive attack\n",
            "no such label 33 football shoot\n",
            "no such label 34 football long pass\n",
            "no such label 35 football short pass\n",
            "no such label 36 football through pass\n",
            "no such label 37 football cross\n",
            "no such label 38 football dribble\n",
            "no such label 39 football trap\n",
            "no such label 40 football throw\n",
            "no such label 41 football diving\n",
            "no such label 42 football tackle\n",
            "no such label 43 football steal\n",
            "no such label 44 football clearance\n",
            "no such label 45 football block\n",
            "no such label 46 football press\n",
            "no such label 47 football aerial duels\n",
            "no such label 48 basketball pass\n",
            "no such label 49 basketball drive\n",
            "no such label 50 basketball dribble\n",
            "no such label 51 basketball 3-point shot\n",
            "no such label 52 basketball 2-point shot\n",
            "no such label 53 basketball free throw\n",
            "no such label 54 basketball block\n",
            "no such label 55 basketball offensive rebound\n",
            "no such label 56 basketball defensive rebound\n",
            "no such label 57 basketball pass steal\n",
            "no such label 58 basketball dribble steal\n",
            "no such label 59 basketball interfere shot\n",
            "no such label 60 basketball pick-and-roll defensive\n",
            "no such label 61 basketball sag\n",
            "no such label 62 basketball screen\n",
            "no such label 63 basketball pass-inbound\n",
            "do not evaluatebasketball save\n",
            "do not evaluatebasketball jump ball\n",
            "VideoAP_0.5\n",
            "\n",
            "aerobic straight jump     0.00\n",
            "aerobic split jump       0.00\n",
            "aerobic scissors leap    45.00\n",
            "aerobic turn            20.00\n",
            "mAP                     16.25\n",
            "06/15 06:58:25 - mmengine - \u001b[4m\u001b[97mINFO\u001b[0m - Epoch(val) [8][120/120]    mAP/frameAP: 50.8487  mAP/v_map@0.2: 25.0000  mAP/v_map@0.5: 16.2500  mAP/v_map_0.05:0.45: 23.0556  mAP/v_map_0.10:0.90: 15.1852  mAP/v_map_0.50:0.95: 8.4167  data_time: 0.0732  time: 0.1244\n",
            "\u001b[32mTraining finished successfully. \u001b[0m\n"
          ]
        }
      ],
      "source": [
        "# 使用 MIM 训练模型\n",
        "!mim train mmaction2 configs/slowonly_k400_multisports.py \\\n",
        "    --work-dir work_dirs/stad_model/"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {
        "id": "HCg6C9HYxRAt"
      },
      "source": [
        "## 4. 时空行为检测模型推理\n",
        "\n",
        "训练得到检测模型和时空行为检测模型后，我们可以利用时空行为检测 demo 进行推理，可视化模型效果。\n",
        "\n",
        "由于 tutorial 中使用的训练数据较少，模型性能较差，所以可视化时使用预先训练好的模型。"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {
        "id": "WW5-IJ7IxRAu"
      },
      "source": [
        "###"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 11,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "FofW_5RoxRAu",
        "outputId": "91217660-946d-48ab-f663-b0f7f2d6a6f6"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "ALSA lib confmisc.c:767:(parse_card) cannot find card '0'\n",
            "ALSA lib conf.c:4732:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory\n",
            "ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings\n",
            "ALSA lib conf.c:4732:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory\n",
            "ALSA lib confmisc.c:1246:(snd_func_refer) error evaluating name\n",
            "ALSA lib conf.c:4732:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory\n",
            "ALSA lib conf.c:5220:(snd_config_expand) Evaluate error: No such file or directory\n",
            "ALSA lib pcm.c:2642:(snd_pcm_open_noupdate) Unknown PCM default\n",
            "ALSA lib confmisc.c:767:(parse_card) cannot find card '0'\n",
            "ALSA lib conf.c:4732:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory\n",
            "ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings\n",
            "ALSA lib conf.c:4732:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory\n",
            "ALSA lib confmisc.c:1246:(snd_func_refer) error evaluating name\n",
            "ALSA lib conf.c:4732:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory\n",
            "ALSA lib conf.c:5220:(snd_config_expand) Evaluate error: No such file or directory\n",
            "ALSA lib pcm.c:2642:(snd_pcm_open_noupdate) Unknown PCM default\n",
            "Loads checkpoint by local backend from path: work_dirs/det_model/epoch_2.pth\n",
            "Performing Human Detection for each frame\n",
            "[>>] 99/99, 6.8 task/s, elapsed: 15s, ETA:     0s\n",
            "Loads checkpoint by http backend from path: https://download.openmmlab.com/mmaction/v1.0/detection/slowonly/slowonly_kinetics400-pretrained-r50_8xb16-4x16x1-8e_multisports-rgb/slowonly_kinetics400-pretrained-r50_8xb16-4x16x1-8e_multisports-rgb_20230320-a1ca5e76.pth\n",
            "Performing SpatioTemporal Action Detection for each clip\n",
            "[>>] 99/99, 16.6 task/s, elapsed: 6s, ETA:     0sPerforming visualization\n",
            "Moviepy - Building video data/demo_spatiotemporal_det.mp4.\n",
            "Moviepy - Writing video data/demo_spatiotemporal_det.mp4\n",
            "\n",
            "Moviepy - Done !\n",
            "Moviepy - video ready data/demo_spatiotemporal_det.mp4\n"
          ]
        }
      ],
      "source": [
        "!python ../../demo/demo_spatiotemporal_det.py \\\n",
        "    data/multisports/test/aerobic_gymnastics/v_7G_IpU0FxLU_c001.mp4 \\\n",
        "    data/demo_spatiotemporal_det.mp4 \\\n",
        "    --config configs/slowonly_k400_multisports.py \\\n",
        "    --checkpoint https://download.openmmlab.com/mmaction/v1.0/detection/slowonly/slowonly_kinetics400-pretrained-r50_8xb16-4x16x1-8e_multisports-rgb/slowonly_kinetics400-pretrained-r50_8xb16-4x16x1-8e_multisports-rgb_20230320-a1ca5e76.pth \\\n",
        "    --det-config configs/faster-rcnn_r50-caffe_fpn_ms-1x_coco_ms_person.py \\\n",
        "    --det-checkpoint work_dirs/det_model/epoch_2.pth \\\n",
        "    --det-score-thr 0.85 \\\n",
        "    --action-score-thr 0.8 \\\n",
        "    --label-map ../../tools/data/multisports/label_map.txt \\\n",
        "    --predict-stepsize 8 \\\n",
        "    --output-stepsize 1 \\\n",
        "    --output-fps 24"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 741
        },
        "id": "677FUWFRxRAv",
        "outputId": "f702d544-3492-494c-af81-9e90f43d6b6c"
      },
      "outputs": [],
      "source": [
        "# Show Video\n",
        "import moviepy.editor\n",
        "moviepy.editor.ipython_display(\"data/demo_spatiotemporal_det.mp4\")"
      ]
    }
  ],
  "metadata": {
    "accelerator": "GPU",
    "colab": {
      "gpuType": "T4",
      "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.9.0"
    },
    "orig_nbformat": 4
  },
  "nbformat": 4,
  "nbformat_minor": 0
}
