Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save jeanpat/c6969677a3d8cc1c5a7e1d0273091071 to your computer and use it in GitHub Desktop.

Select an option

Save jeanpat/c6969677a3d8cc1c5a7e1d0273091071 to your computer and use it in GitHub Desktop.
Loading and displaying annotations generated with makesense.ai, over chromosomes image.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting git+git://github.com/waspinator/pycococreator.git@0.2.0\n",
" Cloning git://github.com/waspinator/pycococreator.git (to revision 0.2.0) to /tmp/pip-req-build-3zs22u5s\n",
" Running command git clone -q git://github.com/waspinator/pycococreator.git /tmp/pip-req-build-3zs22u5s\n",
" Running command git checkout -q fba8f4098f3c7aaa05fe119dc93bbe4063afdab8\n",
"Requirement already satisfied: numpy in /home/jeanpat/anaconda3/envs/PyTorch18/lib/python3.8/site-packages (from pycococreatortools==0.2.0) (1.19.2)\n",
"Requirement already satisfied: pillow in /home/jeanpat/anaconda3/envs/PyTorch18/lib/python3.8/site-packages (from pycococreatortools==0.2.0) (8.2.0)\n",
"Requirement already satisfied: scikit-image in /home/jeanpat/anaconda3/envs/PyTorch18/lib/python3.8/site-packages (from pycococreatortools==0.2.0) (0.18.1)\n",
"Requirement already satisfied: scipy>=1.0.1 in /home/jeanpat/anaconda3/envs/PyTorch18/lib/python3.8/site-packages (from scikit-image->pycococreatortools==0.2.0) (1.6.2)\n",
"Requirement already satisfied: matplotlib!=3.0.0,>=2.0.0 in /home/jeanpat/anaconda3/envs/PyTorch18/lib/python3.8/site-packages (from scikit-image->pycococreatortools==0.2.0) (3.4.1)\n",
"Requirement already satisfied: networkx>=2.0 in /home/jeanpat/anaconda3/envs/PyTorch18/lib/python3.8/site-packages (from scikit-image->pycococreatortools==0.2.0) (2.3)\n",
"Requirement already satisfied: imageio>=2.3.0 in /home/jeanpat/anaconda3/envs/PyTorch18/lib/python3.8/site-packages (from scikit-image->pycococreatortools==0.2.0) (2.9.0)\n",
"Requirement already satisfied: tifffile>=2019.7.26 in /home/jeanpat/anaconda3/envs/PyTorch18/lib/python3.8/site-packages (from scikit-image->pycococreatortools==0.2.0) (2019.7.26.2)\n",
"Requirement already satisfied: PyWavelets>=1.1.1 in /home/jeanpat/anaconda3/envs/PyTorch18/lib/python3.8/site-packages (from scikit-image->pycococreatortools==0.2.0) (1.1.1)\n",
"Requirement already satisfied: kiwisolver>=1.0.1 in /home/jeanpat/anaconda3/envs/PyTorch18/lib/python3.8/site-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image->pycococreatortools==0.2.0) (1.3.1)\n",
"Requirement already satisfied: cycler>=0.10 in /home/jeanpat/anaconda3/envs/PyTorch18/lib/python3.8/site-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image->pycococreatortools==0.2.0) (0.10.0)\n",
"Requirement already satisfied: python-dateutil>=2.7 in /home/jeanpat/anaconda3/envs/PyTorch18/lib/python3.8/site-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image->pycococreatortools==0.2.0) (2.8.1)\n",
"Requirement already satisfied: pyparsing>=2.2.1 in /home/jeanpat/anaconda3/envs/PyTorch18/lib/python3.8/site-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image->pycococreatortools==0.2.0) (2.4.7)\n",
"Requirement already satisfied: six in /home/jeanpat/anaconda3/envs/PyTorch18/lib/python3.8/site-packages (from cycler>=0.10->matplotlib!=3.0.0,>=2.0.0->scikit-image->pycococreatortools==0.2.0) (1.15.0)\n",
"Requirement already satisfied: decorator>=4.3.0 in /home/jeanpat/anaconda3/envs/PyTorch18/lib/python3.8/site-packages (from networkx>=2.0->scikit-image->pycococreatortools==0.2.0) (5.0.7)\n",
"Requirement already satisfied: imagecodecs-lite>=2019.12.2 in /home/jeanpat/anaconda3/envs/PyTorch18/lib/python3.8/site-packages (from tifffile>=2019.7.26->scikit-image->pycococreatortools==0.2.0) (2019.12.3)\n",
"Building wheels for collected packages: pycococreatortools\n",
" Building wheel for pycococreatortools (setup.py) ... \u001b[?25ldone\n",
"\u001b[?25h Created wheel for pycococreatortools: filename=pycococreatortools-0.2.0-py3-none-any.whl size=7190 sha256=8563594d1aac6a61fdd52f9abcdff59bc7a0bed0f84276b480e0e9edf42fca34\n",
" Stored in directory: /tmp/pip-ephem-wheel-cache-h_4ocnqu/wheels/ac/f9/b2/29203368344409953163620ffa0053e4c694bc50b520c7f50e\n",
"Successfully built pycococreatortools\n",
"Installing collected packages: pycococreatortools\n",
"Successfully installed pycococreatortools-0.2.0\n"
]
}
],
"source": [
"!pip install git+git://github.com/waspinator/pycococreator.git@0.2.0"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"#from fastai.vision import *\n",
"import os, sys"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"from scipy import ndimage as nd"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"from skimage import morphology as mo\n",
"from scipy.ndimage import distance_transform_bf as distance"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"from matplotlib import pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"import pycocotools\n",
"import pycococreatortools\n",
"from pycocotools.coco import COCO\n",
"import skimage.io as io"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Acces to small dataset images and annotations with pycococeator\n",
" * Images are on the disk\n",
"\n",
" * Annotation files was generated with online annotator tool [https://www.makesense.ai/](https://www.makesense.ai/)\n",
" \n",
"The validity of the annotation file cans be tested with [waspinator's code](https://github.com/waspinator/pycococreator/blob/master/examples/shapes/visualize_coco.ipynb) mildly adapted:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"loading annotations into memory...\n",
"Done (t=0.07s)\n",
"creating index...\n",
"index created!\n"
]
}
],
"source": [
"IMAGE_DIR = './UltraSmallSample_png-ds'\n",
"\n",
"#print(path.ls()) # prints subdirectories\n",
"os.listdir(IMAGE_DIR)\n",
"image_directory = IMAGE_DIR\n",
"annotation_file = IMAGE_DIR + '/labels_overlappchromosomes_2021-07-05-09-18-52.json'\n",
"example_coco = COCO(annotation_file)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"description: overlappchromosomes\n"
]
}
],
"source": [
"example_coco.info()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Custom COCO categories: \n",
"chromosome\n",
"\n"
]
}
],
"source": [
"categories = example_coco.loadCats(example_coco.getCatIds())\n",
"category_names = [category['name'] for category in categories]\n",
"print('Custom COCO categories: \\n{}\\n'.format(' '.join(category_names)))\n",
"\n",
"#category_names = set([category['supercategory'] for category in categories])\n",
"#print('Custom COCO supercategories: \\n{}'.format(' '.join(category_names)))"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [],
"source": [
"category_ids = example_coco.getCatIds(catNms=['chromosome'])\n",
"image_ids = example_coco.getImgIds(catIds=category_ids)\n",
"image_data = example_coco.loadImgs(image_ids[np.random.randint(0, len(image_ids))])[0]"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1]"
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"category_ids"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"125"
]
},
"execution_count": 67,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(image_ids)"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'id': 2, 'width': 211, 'height': 210, 'file_name': 'grey0013300.png'}"
]
},
"execution_count": 68,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"image_data"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {
"collapsed": true
},
"outputs": [
{
"data": {
"text/plain": [
"[1,\n",
" 2,\n",
" 3,\n",
" 4,\n",
" 5,\n",
" 6,\n",
" 7,\n",
" 8,\n",
" 9,\n",
" 10,\n",
" 11,\n",
" 12,\n",
" 13,\n",
" 14,\n",
" 15,\n",
" 16,\n",
" 17,\n",
" 18,\n",
" 19,\n",
" 20,\n",
" 21,\n",
" 22,\n",
" 23,\n",
" 24,\n",
" 25,\n",
" 26,\n",
" 27,\n",
" 28,\n",
" 29,\n",
" 30,\n",
" 31,\n",
" 32,\n",
" 33,\n",
" 34,\n",
" 35,\n",
" 36,\n",
" 37,\n",
" 38,\n",
" 39,\n",
" 40,\n",
" 41,\n",
" 42,\n",
" 43,\n",
" 44,\n",
" 45,\n",
" 46,\n",
" 47,\n",
" 48,\n",
" 49,\n",
" 50,\n",
" 51,\n",
" 52,\n",
" 53,\n",
" 54,\n",
" 55,\n",
" 56,\n",
" 57,\n",
" 58,\n",
" 59,\n",
" 60,\n",
" 61,\n",
" 62,\n",
" 63,\n",
" 64,\n",
" 65,\n",
" 66,\n",
" 67,\n",
" 68,\n",
" 69,\n",
" 70,\n",
" 71,\n",
" 72,\n",
" 73,\n",
" 74,\n",
" 75,\n",
" 76,\n",
" 77,\n",
" 78,\n",
" 79,\n",
" 80,\n",
" 81,\n",
" 82,\n",
" 83,\n",
" 84,\n",
" 85,\n",
" 86,\n",
" 87,\n",
" 88,\n",
" 89,\n",
" 90,\n",
" 91,\n",
" 92,\n",
" 93,\n",
" 94,\n",
" 95,\n",
" 96,\n",
" 97,\n",
" 98,\n",
" 99,\n",
" 100,\n",
" 101,\n",
" 102,\n",
" 103,\n",
" 104,\n",
" 105,\n",
" 106,\n",
" 107,\n",
" 108,\n",
" 109,\n",
" 110,\n",
" 111,\n",
" 112,\n",
" 113,\n",
" 114,\n",
" 115,\n",
" 116,\n",
" 117,\n",
" 118,\n",
" 119,\n",
" 120,\n",
" 121,\n",
" 122,\n",
" 123,\n",
" 124,\n",
" 125]"
]
},
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"image_ids"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[146, 147]\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# load and display instance annotations\n",
"image = io.imread(image_directory + '/'+ image_data['file_name'])\n",
"plt.Figure(figsize=(30.0,30.0))\n",
"plt.imshow(image, cmap=plt.cm.gray ); plt.axis('off')\n",
"#pylab.rcParams['figure.figsize'] = (8.0, 10.0)\n",
"annotation_ids = example_coco.getAnnIds(imgIds=image_data['id'], catIds=category_ids, iscrowd=None)\n",
"annotations = example_coco.loadAnns(annotation_ids)\n",
"\n",
"print(annotation_ids)\n",
"\n",
"example_coco.showAnns(annotations)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Tue Jul 6 21:55:59 2021 \n",
"+-----------------------------------------------------------------------------+\n",
"| NVIDIA-SMI 455.45.01 Driver Version: 455.45.01 CUDA Version: 11.1 |\n",
"|-------------------------------+----------------------+----------------------+\n",
"| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |\n",
"| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |\n",
"| | | MIG M. |\n",
"|===============================+======================+======================|\n",
"| 0 GeForce GTX 960 On | 00000000:03:00.0 On | N/A |\n",
"| 39% 37C P0 28W / 130W | 177MiB / 4035MiB | 0% Default |\n",
"| | | N/A |\n",
"+-------------------------------+----------------------+----------------------+\n",
" \n",
"+-----------------------------------------------------------------------------+\n",
"| Processes: |\n",
"| GPU GI CI PID Type Process name GPU Memory |\n",
"| ID ID Usage |\n",
"|=============================================================================|\n",
"| 0 N/A N/A 1577 G /usr/lib/xorg/Xorg 15MiB |\n",
"| 0 N/A N/A 1678 G /usr/bin/gnome-shell 47MiB |\n",
"| 0 N/A N/A 2064 G /usr/lib/xorg/Xorg 80MiB |\n",
"| 0 N/A N/A 2227 G /usr/bin/gnome-shell 25MiB |\n",
"| 0 N/A N/A 3756 G /usr/lib/firefox/firefox 0MiB |\n",
"+-----------------------------------------------------------------------------+\n"
]
}
],
"source": [
"!nvidia-smi"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Load the data images+annotation file with detectron 2\n",
" * there's 125 images\n",
" * an annotation files following the COCO format"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"!python -m pip install detectron2 -f \\\n",
" https://dl.fbaipublicfiles.com/detectron2/wheels/cu111/torch1.8/index.html"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Let's try a tuto:\n",
"\n",
" * https://detectron2.readthedocs.io/en/latest/tutorials/data_loading.html#use-a-custom-dataloader\n",
"\n",
" * https://detectron2.readthedocs.io/en/latest/tutorials/datasets.html\n",
"\n",
"Example:\n",
"\n",
" * https://colab.research.google.com/drive/16jcaJoc6bCFAQ96jDe2HwtXj7BMD_-m5"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"import json\n",
"import itertools"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"#import detectron2\n",
"from detectron2.data import DatasetCatalog, MetadataCatalog"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [],
"source": [
"# write a function that loads the dataset into detectron2's standard format\n",
"def get_chromosome_dicts(img_dir):\n",
" json_file = os.path.join(img_dir, \"labels_overlappchromosomes_2021-07-05-09-18-52.json\")\n",
" with open(json_file) as f:\n",
" imgs_anns = json.load(f)\n",
"\n",
" #print(imgs_anns.items())\n",
" dataset_dicts = []\n",
" for _, v in imgs_anns.items():\n",
" \n",
" record = {}\n",
" \n",
" filename = os.path.join(img_dir, v[\"file_name\"])\n",
" height, width = cv2.imread(filename).shape[:2]\n",
" \n",
" record[\"file_name\"] = filename\n",
" record[\"height\"] = height\n",
" record[\"width\"] = width\n",
" \n",
" annos = v[\"regions\"]\n",
" objs = []\n",
" for _, anno in annos.items():\n",
" assert not anno[\"region_attributes\"]\n",
" anno = anno[\"shape_attributes\"]\n",
" px = anno[\"all_points_x\"]\n",
" py = anno[\"all_points_y\"]\n",
" poly = [(x + 0.5, y + 0.5) for x, y in zip(px, py)]\n",
" poly = list(itertools.chain.from_iterable(poly))\n",
"\n",
" obj = {\n",
" \"bbox\": [np.min(px), np.min(py), np.max(px), np.max(py)],\n",
" \"bbox_mode\": BoxMode.XYXY_ABS,\n",
" \"segmentation\": [poly],\n",
" \"category_id\": 0,\n",
" \"iscrowd\": 0\n",
" }\n",
" objs.append(obj)\n",
" record[\"annotations\"] = objs\n",
" dataset_dicts.append(record)\n",
" return dataset_dicts"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"image annotations: <class 'dict'>\n",
"<class 'dict_items'>\n"
]
}
],
"source": [
"IMAGE_DIR = './UltraSmallSample_png-ds'\n",
"json_file = os.path.join(IMAGE_DIR, \"labels_overlappchromosomes_2021-07-05-09-18-52.json\")\n",
"with open(json_file) as f:\n",
" imgs_anns = json.load(f)\n",
"#imgs_anns\n",
"print('image annotations:', type(imgs_anns))\n",
"items = imgs_anns.items()\n",
"print(type(items))\n",
"#for _, v in imgs_anns.items():\n",
"# os.path.join(IMAGE_DIR, v[\"file_name\"])"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"ename": "KeyError",
"evalue": "'file_name'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-54-4bac4265af33>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mIMAGE_DIR\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'./UltraSmallSample_png-ds'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mget_chromosome_dicts\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mIMAGE_DIR\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m<ipython-input-50-a71999ad8f01>\u001b[0m in \u001b[0;36mget_chromosome_dicts\u001b[0;34m(img_dir)\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0mrecord\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 13\u001b[0;31m \u001b[0mfilename\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mimg_dir\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mv\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"file_name\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 14\u001b[0m \u001b[0mheight\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwidth\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcv2\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mimread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mKeyError\u001b[0m: 'file_name'"
]
}
],
"source": [
"IMAGE_DIR = './UltraSmallSample_png-ds'\n",
"get_chromosome_dicts(IMAGE_DIR)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"datas"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [
{
"ename": "AssertionError",
"evalue": "You must register a function with `DatasetCatalog.register`!",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-76-12ef5adf7350>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mDatasetCatalog\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mregister\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mIMAGE_DIR\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mimgs_anns\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;31m#MetadataCatalog.get(\"balloon/\" + d).set(thing_classes=[\"balloon\"])\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;31m#balloon_metadata = MetadataCatalog.get(\"balloon/train\")\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/envs/PyTorch18/lib/python3.8/site-packages/detectron2/data/catalog.py\u001b[0m in \u001b[0;36mregister\u001b[0;34m(self, name, func)\u001b[0m\n\u001b[1;32m 34\u001b[0m \u001b[0mIt\u001b[0m \u001b[0mmust\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mthe\u001b[0m \u001b[0msame\u001b[0m \u001b[0mresults\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mcalled\u001b[0m \u001b[0mmultiple\u001b[0m \u001b[0mtimes\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 35\u001b[0m \"\"\"\n\u001b[0;32m---> 36\u001b[0;31m \u001b[0;32massert\u001b[0m \u001b[0mcallable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfunc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"You must register a function with `DatasetCatalog.register`!\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 37\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mname\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Dataset '{}' is already registered!\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 38\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mAssertionError\u001b[0m: You must register a function with `DatasetCatalog.register`!"
]
}
],
"source": [
"DatasetCatalog.register(IMAGE_DIR, imgs_anns)\n",
"\n",
"#MetadataCatalog.get(\"balloon/\" + d).set(thing_classes=[\"balloon\"])\n",
"#balloon_metadata = MetadataCatalog.get(\"balloon/train\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment