Created
June 1, 2021 10:23
-
-
Save skarfie123/1874f1deacf9aaeb83ca9199543ba9ff to your computer and use it in GitHub Desktop.
Detectron2 PDM.ipynb
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "nbformat": 4, | |
| "nbformat_minor": 0, | |
| "metadata": { | |
| "accelerator": "GPU", | |
| "colab": { | |
| "name": "Detectron2 PDM.ipynb", | |
| "provenance": [], | |
| "collapsed_sections": [ | |
| "vM54r6jlKTII", | |
| "EHLReIIwL2GK", | |
| "w6VqZztjvALH", | |
| "lZE0vl4ZQzoH", | |
| "JCfkd6KPCK9i", | |
| "b2bjrfb2LDeo", | |
| "fHdPAAtHRw5b", | |
| "y0jqJ3dhOtN-", | |
| "epQAfWIFMsTV", | |
| "TLf95P3U_ijZ", | |
| "eK3vKakoMaLO", | |
| "AEMWBORwIncT" | |
| ], | |
| "toc_visible": true, | |
| "include_colab_link": true | |
| }, | |
| "kernelspec": { | |
| "display_name": "Python 3", | |
| "name": "python3" | |
| } | |
| }, | |
| "cells": [ | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "view-in-github", | |
| "colab_type": "text" | |
| }, | |
| "source": [ | |
| "<a href=\"https://colab.research.google.com/gist/skarfie123/1874f1deacf9aaeb83ca9199543ba9ff/detectron2-pdm.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "vM54r6jlKTII" | |
| }, | |
| "source": [ | |
| "# Install Detectron2" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "9_FzH13EjseR" | |
| }, | |
| "source": [ | |
| "# install dependencies: \n", | |
| "!pip install pyyaml==5.1\n", | |
| "# !pip install torch==1.7.1 torchvision==0.8.2\n", | |
| "import torch, torchvision\n", | |
| "print(torch.__version__, torch.cuda.is_available())\n", | |
| "!gcc --version\n", | |
| "# opencv is pre-installed on colab\n", | |
| "\n", | |
| "# install detectron2: (Colab has CUDA 10.1 + torch 1.7)\n", | |
| "# See https://detectron2.readthedocs.io/tutorials/install.html for instructions\n", | |
| "import torch\n", | |
| "assert torch.__version__.startswith(\"1.8\") # need to manually install torch 1.8 if Colab changes its default version\n", | |
| "!pip install detectron2 -f https://dl.fbaipublicfiles.com/detectron2/wheels/cu101/torch1.8/index.html\n", | |
| "\n", | |
| "!pip install jsonpickle\n", | |
| "!pip install resnest --pre\n", | |
| "\n", | |
| "from google.colab import output as colab_output\n", | |
| "colab_output.eval_js('new Audio(\"https://upload.wikimedia.org/wikipedia/commons/0/05/Beep-09.ogg\").play()')\n", | |
| "\n", | |
| "exit(0) # After installation, you need to \"restart runtime\" in Colab. This line can also restart runtime" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "2b91WXkEDx4Y" | |
| }, | |
| "source": [ | |
| "!pip freeze | grep \"torch\"" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "EHLReIIwL2GK" | |
| }, | |
| "source": [ | |
| "# Import Detectron2 and PDM" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "colab": { | |
| "background_save": true | |
| }, | |
| "id": "ZyAvNCJMmvFF" | |
| }, | |
| "source": [ | |
| "# Some basic setup:\n", | |
| "# Setup detectron2 logger\n", | |
| "import detectron2\n", | |
| "from detectron2.utils.logger import setup_logger\n", | |
| "setup_logger()\n", | |
| "\n", | |
| "# import some common libraries\n", | |
| "import numpy as np\n", | |
| "import matplotlib.pyplot as plt\n", | |
| "import os, json, cv2, random, math, sys, subprocess, logging\n", | |
| "from collections import OrderedDict\n", | |
| "from importlib import reload\n", | |
| "from google.colab.patches import cv2_imshow\n", | |
| "from pprint import pprint\n", | |
| "\n", | |
| "# import some common detectron2 utilities\n", | |
| "from detectron2 import model_zoo\n", | |
| "from detectron2.data import build, build_detection_test_loader, MetadataCatalog, DatasetCatalog\n", | |
| "from detectron2.data.datasets import register_coco_instances\n", | |
| "from detectron2.config import get_cfg\n", | |
| "from detectron2.engine import DefaultTrainer, DefaultPredictor\n", | |
| "from detectron2.evaluation import COCOEvaluator, inference_on_dataset, DatasetEvaluator, DatasetEvaluators\n", | |
| "from detectron2.utils.visualizer import Visualizer" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "colab": { | |
| "background_save": true | |
| }, | |
| "id": "7E2VbnAMuQoy" | |
| }, | |
| "source": [ | |
| "# tf.test.gpu_device_name()\n", | |
| "!nvidia-smi" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "colab": { | |
| "background_save": true | |
| }, | |
| "id": "0o6M-pvTOH7j" | |
| }, | |
| "source": [ | |
| "!git clone https://github.com/skarfie123/detectron2_pdm" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "colab": { | |
| "background_save": true | |
| }, | |
| "id": "JZehSEtxRKjk" | |
| }, | |
| "source": [ | |
| "import detectron2_pdm\n", | |
| "from detectron2_pdm import PDM_Evaluator as pdm\n", | |
| "PDM_Evaluator = pdm.PDM_Evaluator\n", | |
| "from detectron2_pdm import CustomTrainer as ct\n", | |
| "CustomTrainer = ct.CustomTrainer\n", | |
| "from detectron2_pdm import CustomConfig as cc\n", | |
| "CustomConfig = cc.CustomConfig\n", | |
| "from detectron2_pdm import Datasets\n", | |
| "from detectron2_pdm import Console\n", | |
| "from detectron2_pdm import Main\n", | |
| "from detectron2_pdm import Visualise\n", | |
| "Datasets.clear()" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "8mgx6tvQr8uT" | |
| }, | |
| "source": [ | |
| "from google.colab import output as colab_output\n", | |
| "def beep():\n", | |
| " colab_output.eval_js('new Audio(\"https://upload.wikimedia.org/wikipedia/commons/0/05/Beep-09.ogg\").play()')\n", | |
| "beep()" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "Y9RTdF_mLM7u" | |
| }, | |
| "source": [ | |
| "# Drive" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "r8lxXHfFCL9D" | |
| }, | |
| "source": [ | |
| "from google.colab import drive\n", | |
| "drive.mount('/content/gdrive')\n", | |
| "!mkdir outputs\n", | |
| "for dir in next(os.walk(\"/content/gdrive/My Drive/4YP Output/detectron/\"))[1]:\n", | |
| " os.mkdir(\"/content/outputs/\"+dir)" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "o2x9dSzVShl7" | |
| }, | |
| "source": [ | |
| "# !rm -rf outputs\n", | |
| "# !rm -rf /content/outputs/ground0/*\n", | |
| "folder = \"M_train\"\n", | |
| "os.system(f\"cp -rf /content/gdrive/My\\ Drive/4YP\\ Output/detectron/{folder}/* /content/outputs/{folder}/\")\n", | |
| "beep()" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "FMZhiuyv8dKl" | |
| }, | |
| "source": [ | |
| "folder = \"M_train\"\n", | |
| "os.system(f\"cp -rf /content/outputs/{folder} /content/gdrive/My\\ Drive/4YP\\ Output/detectron\")\n", | |
| "beep()" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "0mU-a1VR2JEN" | |
| }, | |
| "source": [ | |
| "from tqdm import tqdm\n", | |
| "pbar = tqdm([\"M_train\", \"M_test\", \"G_test\", \"V_test\"])\n", | |
| "for folder in pbar:\n", | |
| " pbar.set_description(folder)\n", | |
| " os.system(f\"cp -rf /content/gdrive/My\\ Drive/4YP\\ Output/detectron/{folder}/* /content/outputs/{folder}/\")\n", | |
| "beep()" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "2kL6L1gS_ybw" | |
| }, | |
| "source": [ | |
| "from tqdm import tqdm\n", | |
| "pbar = tqdm([\"M_test\", \"G_test\", \"V_test\"])\n", | |
| "for folder in pbar:\n", | |
| " pbar.set_description(folder)\n", | |
| " os.system(f\"cp -rf /content/outputs/{folder} /content/gdrive/My\\ Drive/4YP\\ Output/detectron\")\n", | |
| "beep()" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "w6VqZztjvALH" | |
| }, | |
| "source": [ | |
| "# Configs" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "2UzviBBwUeYZ" | |
| }, | |
| "source": [ | |
| "# # !wget https://raw.githubusercontent.com/zhanghang1989/ResNeSt/master/d2/configs/COCO-InstanceSegmentation/mask_cascade_rcnn_ResNeSt_200_FPN_dcn_syncBN_all_tricks_3x.yaml -O resnest.yaml\n", | |
| "# # # !wget https://s3.us-west-1.wasabisys.com/resnest/detectron/mask_cascade_rcnn_ResNeSt_200_FPN_dcn_syncBN_all_tricks_3x-e1901134.pth -O resnest.\n", | |
| "# !wget https://dl.fbaipublicfiles.com/detectron2/Misc/cascade_mask_rcnn_R_50_FPN_3x/144998488/model_final_480dd8.pkl -O cascade.pth" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "-mqlRWbeM25S" | |
| }, | |
| "source": [ | |
| "from collections import namedtuple\n", | |
| "Config = namedtuple(\"Config\", [\"trainingConfig\", \"testingConfigs\", \"saveInterval\", \"model\", \"modelWeights\"])\n", | |
| "MRCNN = Config(\n", | |
| " trainingConfig=cc.ConfigSet(\n", | |
| " category=cc.Category.MERGED,\n", | |
| " imageset=cc.IMAGESET_ORIGINAL_IMAGES,\n", | |
| " dataset=\"M\",\n", | |
| " numClasses=11,\n", | |
| " pdmClasses=[1,2,3,4,6,7,8,9,10],\n", | |
| " folder=\"M_train\",\n", | |
| " ),\n", | |
| " testingConfigs=[\n", | |
| " cc.ConfigSet(\n", | |
| " category=cc.Category.MERGED,\n", | |
| " imageset=cc.IMAGESET_ORIGINAL_IMAGES,\n", | |
| " dataset=\"M\",\n", | |
| " numClasses=11,\n", | |
| " pdmClasses=[1,2,3,4,6,7,8,9,10],\n", | |
| " folder=\"M_test\",\n", | |
| " ),\n", | |
| " cc.ConfigSet(\n", | |
| " category=cc.Category.GROUND,\n", | |
| " imageset=cc.IMAGESET_MASK_GROUND,\n", | |
| " dataset=\"G\",\n", | |
| " numClasses=7,\n", | |
| " pdmClasses=[6,7,8,9,10],\n", | |
| " folder=\"G_test\",\n", | |
| " ),\n", | |
| " cc.ConfigSet(\n", | |
| " category=cc.Category.VERTICAL,\n", | |
| " imageset=cc.IMAGESET_MASK_VERTICAL,\n", | |
| " dataset=\"V\",\n", | |
| " numClasses=6,\n", | |
| " pdmClasses=[1,2,3,4],\n", | |
| " folder=\"V_test\",\n", | |
| " ),\n", | |
| " ],\n", | |
| " saveInterval=1000,\n", | |
| " model = \"COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml\",\n", | |
| " modelWeights = \"\"\n", | |
| ")\n", | |
| "CMRCNN = Config(\n", | |
| " trainingConfig=cc.ConfigSet(\n", | |
| " category=cc.Category.MERGED,\n", | |
| " imageset=cc.IMAGESET_ORIGINAL_IMAGES,\n", | |
| " dataset=\"M\",\n", | |
| " numClasses=11,\n", | |
| " pdmClasses=[1,2,3,4,6,7,8,9,10],\n", | |
| " folder=\"M-CMRCNN_train\",\n", | |
| " ),\n", | |
| " testingConfigs=[\n", | |
| " cc.ConfigSet(\n", | |
| " category=cc.Category.MERGED,\n", | |
| " imageset=cc.IMAGESET_ORIGINAL_IMAGES,\n", | |
| " dataset=\"M\",\n", | |
| " numClasses=11,\n", | |
| " pdmClasses=[1,2,3,4,6,7,8,9,10],\n", | |
| " folder=\"M-CMRCNN_test\",\n", | |
| " ),\n", | |
| " cc.ConfigSet(\n", | |
| " category=cc.Category.GROUND,\n", | |
| " imageset=cc.IMAGESET_MASK_GROUND,\n", | |
| " dataset=\"G\",\n", | |
| " numClasses=7,\n", | |
| " pdmClasses=[6,7,8,9,10],\n", | |
| " folder=\"G-CMRCNN_test\",\n", | |
| " ),\n", | |
| " cc.ConfigSet(\n", | |
| " category=cc.Category.VERTICAL,\n", | |
| " imageset=cc.IMAGESET_MASK_VERTICAL,\n", | |
| " dataset=\"V\",\n", | |
| " numClasses=6,\n", | |
| " pdmClasses=[1,2,3,4],\n", | |
| " folder=\"V-CMRCNN_test\",\n", | |
| " ),\n", | |
| " ],\n", | |
| " saveInterval=1000,\n", | |
| " model = \"Misc/cascade_mask_rcnn_R_50_FPN_3x.yaml\",\n", | |
| " modelWeights = \"\"\n", | |
| ")\n", | |
| " # model=\"/content/mask_cascade_rcnn_ResNeSt_200_FPN_dcn_syncBN_all_tricks_3x.yaml\",\n", | |
| " # modelWeights=\"\"\n", | |
| " # modelWeights=\"/content/resnest200.pth\"" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "fn8kmnOLeafz" | |
| }, | |
| "source": [ | |
| "def setupCC():\n", | |
| " config = MRCNN\n", | |
| " CustomConfig.set(\n", | |
| " trainingConfig=config.trainingConfig,\n", | |
| " testingConfigs=config.testingConfigs,\n", | |
| " driveOutputs=\"/content/gdrive/My\\\\ Drive/4YP\\\\ Output/detectron\",\n", | |
| " driveDatasets=\"/content/gdrive/MyDrive/Share/4YPDatasets\",\n", | |
| " saveInterval=config.saveInterval,\n", | |
| " model = config.model,\n", | |
| " modelWeights = config.modelWeights\n", | |
| " )\n", | |
| " Datasets.register(CustomConfig.trainingConfig.imageset, CustomConfig.trainingConfig.dataset)\n", | |
| " for cs in CustomConfig.testingConfigs:\n", | |
| " Datasets.register(cs.imageset, cs.dataset)\n", | |
| " beep()\n", | |
| "setupCC()" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "9dkSxT3We61j" | |
| }, | |
| "source": [ | |
| "# subprocess.call(\n", | |
| "# f\"cp {CustomConfig.driveDatasets}/resnest.zip /content/\",\n", | |
| "# shell=True,\n", | |
| "# )\n", | |
| "# subprocess.call(f\"unzip resnest.zip > /dev/null\", shell=True)\n", | |
| "# subprocess.call(\n", | |
| "# f\"cp {CustomConfig.driveDatasets}/resnest200.pth /content/\",\n", | |
| "# shell=True,\n", | |
| "# )" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "Hj-NofhhxrMy" | |
| }, | |
| "source": [ | |
| "# !pip install gdown\n", | |
| "# !gdown https://drive.google.com/uc?id=1uSSvy4V7ALjousc7Tqy3tlGH7nLUijhG -O resnest200.pth" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "Di3RIFjNgDPG" | |
| }, | |
| "source": [ | |
| "for tc in CustomConfig.testingConfigs:\n", | |
| " DatasetCatalog.get(tc.dataset+\"_train\")\n", | |
| " print(tc.category, list(enumerate(MetadataCatalog.get(tc.dataset+\"_train\").thing_classes)))" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "bRC3fp4QW3nO" | |
| }, | |
| "source": [ | |
| "CustomConfig.pretty()" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "gcSZ-ghDBZgn" | |
| }, | |
| "source": [ | |
| "# CustomConfig.save()" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "lZE0vl4ZQzoH" | |
| }, | |
| "source": [ | |
| "# File inspection" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "kglst-InyCvX" | |
| }, | |
| "source": [ | |
| "!du -sh /content/gdrive/" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "MMbWUNf1LwOE" | |
| }, | |
| "source": [ | |
| "!ls /content/gdrive/MyDrive/" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "T_GSrMmBLHMw" | |
| }, | |
| "source": [ | |
| "!du -h --max-depth=1 /content/gdrive/MyDrive/ | sort -hr" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "ocM-nwJwNnPs" | |
| }, | |
| "source": [ | |
| "!du -h --max-depth=1 /content/gdrive/MyDrive/4YP\\ Output/detectron | sort -hr" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "WMFCqiHoOTsg" | |
| }, | |
| "source": [ | |
| "!ls -lh /content/gdrive/MyDrive/4YP\\ Output/detectron/vertical0" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "AYNHxkSAO6HA" | |
| }, | |
| "source": [ | |
| "!find . -type f -name \"model_final.pth\" -prune -exec du -sh {} \\;" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "JCfkd6KPCK9i" | |
| }, | |
| "source": [ | |
| "# Reload PDM" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "fHz9LNxgAkzs" | |
| }, | |
| "source": [ | |
| "%cd /content/detectron2_pdm/\n", | |
| "!git diff\n", | |
| "%cd /content/" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "M3FCuaLUm65_" | |
| }, | |
| "source": [ | |
| "%cd /content/detectron2_pdm/\n", | |
| "!git reset HEAD --hard\n", | |
| "!git pull\n", | |
| "%cd /content/" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "xoA99MExRfL5" | |
| }, | |
| "source": [ | |
| "detectron2_pdm = reload(detectron2_pdm)\n", | |
| "import detectron2_pdm\n", | |
| "pdm = reload(pdm)\n", | |
| "from detectron2_pdm import PDM_Evaluator as pdm\n", | |
| "PDM_Evaluator = pdm.PDM_Evaluator\n", | |
| "ct = reload(ct)\n", | |
| "from detectron2_pdm import CustomTrainer as ct\n", | |
| "CustomTrainer = ct.CustomTrainer\n", | |
| "cc = reload(cc)\n", | |
| "from detectron2_pdm import CustomConfig as cc\n", | |
| "CustomConfig = cc.CustomConfig\n", | |
| "Datasets = reload(Datasets)\n", | |
| "from detectron2_pdm import Datasets\n", | |
| "Console = reload(Console)\n", | |
| "from detectron2_pdm import Console\n", | |
| "Main = reload(Main)\n", | |
| "from detectron2_pdm import Main\n", | |
| "Visualise = reload(Visualise)\n", | |
| "from detectron2_pdm import Visualise\n", | |
| "setupCC()" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "bZ6frDdxUFpt" | |
| }, | |
| "source": [ | |
| "# !rm -rf /detectron2_pdm/" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "b2bjrfb2LDeo" | |
| }, | |
| "source": [ | |
| "# Dataset Inspection" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "QoGVvubJmnIG" | |
| }, | |
| "source": [ | |
| "!ls /content/gdrive/MyDrive/Share/4YPDatasets/" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "xHhScrFMuMTG" | |
| }, | |
| "source": [ | |
| "DatasetCatalog.list()" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "jeP8T5Txa2_c" | |
| }, | |
| "source": [ | |
| "!python /content/detectron2_pdm/cococount.py vertical_300_train.json vertical_300_val.json vertical_300_test.json ground_200_train.json ground_200_val.json ground_200_test.json" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "wRGZiu1BaS7i" | |
| }, | |
| "source": [ | |
| "!python /content/detectron2_pdm/cococount.py G/*.json" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "EKQNaZcZuQq9" | |
| }, | |
| "source": [ | |
| "Datasets.clear()" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "fHdPAAtHRw5b" | |
| }, | |
| "source": [ | |
| "## Counts" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "uaoloSkmHZIb" | |
| }, | |
| "source": [ | |
| "# DatasetCatalog.clear()\n", | |
| "# # register_coco_instances(\"ground_200_train\", {}, \"/content/ground_200_train.json\", \"/content/mask_ground/\")\n", | |
| "# # register_coco_instances(\"ground_200_val\", {}, \"/content/ground_200_val.json\", \"/content/mask_ground/\")\n", | |
| "# # register_coco_instances(\"ground_200_test\", {}, \"/content/ground_200_test.json\", \"/content/mask_ground/\")\n", | |
| "# # register_coco_instances(\"vertical_300_train\", {}, \"/content/vertical_300_train.json\", \"/content/mask_vertical/\")\n", | |
| "# # register_coco_instances(\"vertical_300_val\", {}, \"/content/vertical_300_val.json\", \"/content/mask_vertical/\")\n", | |
| "# # register_coco_instances(\"vertical_300_test\", {}, \"/content/vertical_300_test.json\", \"/content/mask_vertical/\")\n", | |
| "for i in [\"ground_200_train\", \"ground_200_val\", \"ground_200_test\", \"vertical_300_train\", \"vertical_300_val\", \"vertical_300_test\"]:\n", | |
| " print(i)\n", | |
| " build.print_instances_class_histogram(DatasetCatalog.get(i), MetadataCatalog.get(i).thing_classes)" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "y0jqJ3dhOtN-" | |
| }, | |
| "source": [ | |
| "# Train" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "qDBFWzsOsXpf" | |
| }, | |
| "source": [ | |
| "!rm -rf /content/outputs/M_train/" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "IPM0SuJdy7PZ" | |
| }, | |
| "source": [ | |
| "CustomConfig.modelWeights" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "FFPlUnN3Mwta" | |
| }, | |
| "source": [ | |
| "pprint(Main.get_cfg().MODEL.WEIGHTS)" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "Yg8qDqHZBjy-" | |
| }, | |
| "source": [ | |
| "logging.getLogger(\"detectron2\").setLevel(logging.DEBUG)\n", | |
| "Main.train(iterations=21000, resume=True, save=True)" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "tQmqEIfnonoc" | |
| }, | |
| "source": [ | |
| "# !cp -rf /content/outputs/vertical1 /content/gdrive/My\\ Drive/4YP\\ Output/detectron" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "OJRc4DMQqH1K" | |
| }, | |
| "source": [ | |
| "# os.system(f\"cp -rf /content/outputs/{CustomConfig.category}{outputn} {CustomConfig.driveOutputs}\")" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "tCS6wgJaGpcZ" | |
| }, | |
| "source": [ | |
| "# CustomConfig.save()" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "epQAfWIFMsTV" | |
| }, | |
| "source": [ | |
| "# Tensorboard" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "1kwB5fdAB3-S" | |
| }, | |
| "source": [ | |
| "# Look at training curves in tensorboard:\n", | |
| "%load_ext tensorboard\n", | |
| "%tensorboard --logdir /content/outputs/" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "TLf95P3U_ijZ" | |
| }, | |
| "source": [ | |
| "# Evaluation" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "bcSv2pilBoyN" | |
| }, | |
| "source": [ | |
| "log = logging.getLogger(\"detectron2\")\n", | |
| "ll = log.getEffectiveLevel()\n", | |
| "log.setLevel(logging.WARNING)\n", | |
| "\n", | |
| "cfg = Main.get_cfg(weights_file=\"model_final.pth\", load=False)\n", | |
| "results = Main.evaluate(cfg)\n", | |
| "pprint(results)\n", | |
| "beep()\n", | |
| "\n", | |
| "log.setLevel(ll)" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "i8T81PQMCsyR" | |
| }, | |
| "source": [ | |
| "print(results)\n", | |
| "print(str(results).replace(\"nan\", \"np.nan\"))" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "WPLNBBJ664ui" | |
| }, | |
| "source": [ | |
| "# print(f\"{CustomConfig.category}{outputn} = {Main.evaluate_all_checkpoints(outputn)}\")" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "eK3vKakoMaLO" | |
| }, | |
| "source": [ | |
| "# Visualise" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "mv4gRdj3XY13" | |
| }, | |
| "source": [ | |
| "for tc in CustomConfig.testingConfigs:\n", | |
| " DatasetCatalog.get(tc.dataset+\"_test\")\n", | |
| " print(tc.folder, MetadataCatalog.get(tc.dataset+\"_test\").thing_classes)" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "G-Oue7jOVNVs" | |
| }, | |
| "source": [ | |
| "Visualise.compare(filterAnnotation=0, subset=\"_val\", original=True)" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "P7LBk1ak_BGq" | |
| }, | |
| "source": [ | |
| "Visualise.compare(random=3, original=False)" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "2miI_ED6-D2l" | |
| }, | |
| "source": [ | |
| "Visualise.compare(filterAnnotation=0, subset=\"_test\")" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "qC1npk4-7UPl" | |
| }, | |
| "source": [ | |
| "Visualise.compare(save=True)\n", | |
| "beep()" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "uVINFXGn89kW" | |
| }, | |
| "source": [ | |
| "f\"/content/outputs/{CustomConfig.testingConfigs[0].folder}/{base}\"" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": { | |
| "id": "AEMWBORwIncT" | |
| }, | |
| "source": [ | |
| "### Metadata" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "ik2N7qcPBZmV" | |
| }, | |
| "source": [ | |
| "MetadataCatalog.get(\"vertical_300_test\").thing_classes" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "YLUe2dgEuC9L" | |
| }, | |
| "source": [ | |
| "MetadataCatalog.get(\"ground_200_train\").thing_classes" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "metadata": { | |
| "id": "S76zkF_r98Uu" | |
| }, | |
| "source": [ | |
| "DatasetCatalog.get(\"ground_200_train\")[0][\"annotations\"][1]" | |
| ], | |
| "execution_count": null, | |
| "outputs": [] | |
| } | |
| ] | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment