2021-02-28 22:48:00 +08:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Starter Code ADE20K\n",
"This notebook contains a tutorial on how to explore data in ADE20K"
]
},
{
"cell_type": "code",
2021-05-12 21:51:09 +08:00
"execution_count": 1,
2021-02-28 22:48:00 +08:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
2021-05-12 21:51:09 +08:00
"ln: ./utils: File exists\n",
"ln: ./dataset: File exists\n",
"--2021-05-12 21:27:23-- http://groups.csail.mit.edu/vision/datasets/ADE20K/toolkit/index_ade20k.pkl\n",
"Resolving groups.csail.mit.edu... 128.30.2.44\n",
"Connecting to groups.csail.mit.edu|128.30.2.44|:80... connected.\n",
2021-03-01 00:08:13 +08:00
"HTTP request sent, awaiting response... 200 OK\n",
"Length: 817537016 (780M)\n",
2021-05-12 21:51:09 +08:00
"Saving to: 'index_ade20k.pkl'\n",
2021-03-01 00:08:13 +08:00
"\n",
2021-05-12 21:51:09 +08:00
"index_ade20k.pkl 0%[ ] 5.75M 12.6KB/s eta 13h 54m^C\n"
2021-02-28 22:48:00 +08:00
]
}
],
"source": [
2021-03-01 00:08:13 +08:00
"# Starter setup\n",
"! sh setup.sh"
2021-02-28 22:48:00 +08:00
]
},
{
"cell_type": "code",
2021-03-01 00:08:13 +08:00
"execution_count": 4,
2021-02-28 22:48:00 +08:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
2021-03-01 00:08:13 +08:00
"The autoreload extension is already loaded. To reload it, use:\n",
" %reload_ext autoreload\n"
2021-02-28 22:48:00 +08:00
]
}
],
"source": [
2021-03-01 00:08:13 +08:00
"%load_ext autoreload\n",
"%autoreload 2\n",
"import IPython.display\n",
"import matplotlib.pyplot as plt\n",
"import cv2\n",
"import numpy as np\n",
"import pickle as pkl\n",
"from utils import utils_ade20k"
2021-02-28 22:48:00 +08:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Dataset index"
]
},
{
"cell_type": "code",
2021-03-01 00:08:13 +08:00
"execution_count": 5,
2021-02-28 22:48:00 +08:00
"metadata": {},
"outputs": [],
"source": [
"# Load index with global information about ADE20K\n",
2021-03-01 00:08:13 +08:00
"DATASET_PATH = '../dataset/'\n",
2021-02-28 22:48:00 +08:00
"index_file = 'index_ade20k.pkl'\n",
2021-03-01 00:08:13 +08:00
"with open('{}/{}'.format(DATASET_PATH, index_file), 'rb') as f:\n",
2021-02-28 22:48:00 +08:00
" index_ade20k = pkl.load(f)"
]
},
{
"cell_type": "code",
2021-03-01 00:08:13 +08:00
"execution_count": 6,
2021-03-22 05:09:59 +08:00
"metadata": {
"scrolled": true
},
2021-02-28 22:48:00 +08:00
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"File loaded, description of the attributes:\n",
"--------------------------------------------\n",
"* filename: array of length N=27574 with the image file names\n",
"* folder: array of length N with the image folder names.\n",
"* scene: array of length N providing the scene name (same classes as the Places database) for each image.\n",
"* objectIsPart: array of size [C, N] counting how many times an object is a part in each image. objectIsPart[c,i]=m if in image i object class c is a part of another object m times. For objects, objectIsPart[c,i]=0, and for parts we will find: objectIsPart[c,i] = objectPresence(c,i)\n",
"* objectPresence: array of size [C, N] with the object counts per image. objectPresence(c,i)=n if in image i there are n instances of object class c.\n",
"* objectcounts: array of length C with the number of instances for each object class.\n",
"* objectnames: array of length C with the object class names.\n",
"* proportionClassIsPart: array of length C with the proportion of times that class c behaves as a part. If proportionClassIsPart[c]=0 then it means that this is a main object (e.g., car, chair, ...). See bellow for a discussion on the utility of this variable.\n",
"* wordnet_found: array of length C. It indicates if the objectname was found in Wordnet.\n",
"* wordnet_level1: list of length C. WordNet associated.\n",
"* wordnet_synset: list of length C. WordNet synset for each object name. Shows the full hierarchy separated by .\n",
"* wordnet_hypernym: list of length C. WordNet hypernyms for each object name.\n",
"* wordnet_gloss: list of length C. WordNet definition.\n",
"* wordnet_synonyms: list of length C. Synonyms for the WordNet definition.\n",
"* wordnet_frequency: array of length C. How many times each wordnet appears\n",
"--------------------------------------------\n",
"\n",
"The dataset has 27574 images\n",
2021-03-01 00:08:13 +08:00
"The image at index 16868 is ADE_train_00016869.jpg\n",
"It is located at ADE20K_2021_17_01/images/ADE/training/urban/street/ADE_train_00016869.jpg\n",
"It happens in a /street\n",
"It has 70.0 objects, of which 19.0 are parts\n",
"The most common object is object car, auto, automobile, machine, motorcar (400), which appears 11.0 times\n"
2021-02-28 22:48:00 +08:00
]
}
],
"source": [
"\n",
"print(\"File loaded, description of the attributes:\")\n",
"print('--------------------------------------------')\n",
"for attribute_name, desc in index_ade20k['description'].items():\n",
" print('* {}: {}'.format(attribute_name, desc))\n",
"print('--------------------------------------------\\n')\n",
"\n",
2021-03-01 00:08:13 +08:00
"i = 16868 # 16899, 16964\n",
2021-02-28 22:48:00 +08:00
"nfiles = len(index_ade20k['filename'])\n",
"file_name = index_ade20k['filename'][i]\n",
"num_obj = index_ade20k['objectPresence'][:, i].sum()\n",
"num_parts = index_ade20k['objectIsPart'][:, i].sum()\n",
"count_obj = index_ade20k['objectPresence'][:, i].max()\n",
"obj_id = np.where(index_ade20k['objectPresence'][:, i] == count_obj)[0][0]\n",
"obj_name = index_ade20k['objectnames'][obj_id]\n",
"full_file_name = '{}/{}'.format(index_ade20k['folder'][i], index_ade20k['filename'][i])\n",
"print(\"The dataset has {} images\".format(nfiles))\n",
"print(\"The image at index {} is {}\".format(i, file_name))\n",
"print(\"It is located at {}\".format(full_file_name))\n",
"print(\"It happens in a {}\".format(index_ade20k['scene'][i]))\n",
"print(\"It has {} objects, of which {} are parts\".format(num_obj, num_parts))\n",
"print(\"The most common object is object {} ({}), which appears {} times\".format(obj_name, obj_id, count_obj))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Loading a segmentation object\n",
2021-03-01 00:08:13 +08:00
"We will visualize the same object we were studying before"
2021-02-28 22:48:00 +08:00
]
},
{
"cell_type": "code",
2021-03-01 00:08:13 +08:00
"execution_count": 7,
2021-02-28 22:48:00 +08:00
"metadata": {},
"outputs": [
{
"data": {
2021-03-01 00:08:13 +08:00
"image/png": "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
2021-02-28 22:48:00 +08:00
"text/plain": [
"<Figure size 1080x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
2021-03-01 00:08:13 +08:00
"image/png": "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\n",
2021-02-28 22:48:00 +08:00
"text/plain": [
2021-03-01 00:08:13 +08:00
"<Figure size 720x360 with 1 Axes>"
2021-02-28 22:48:00 +08:00
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"root_path = DATASET_PATH\n",
"info = utils_ade20k.loadAde20K('{}/{}'.format(root_path, full_file_name))\n",
"img = cv2.imread(info['img_name'])[:,:,::-1]\n",
"seg = cv2.imread(info['segm_name'])[:,:,::-1]\n",
"seg_mask = seg.copy()\n",
2021-03-22 05:09:59 +08:00
"\n",
"# The 0 index in seg_mask corresponds to background (not annotated) pixels\n",
2021-02-28 22:48:00 +08:00
"seg_mask[info['class_mask'] != obj_id+1] *= 0\n",
"plt.figure(figsize=(15,5))\n",
"\n",
"plt.imshow(np.concatenate([img, seg, seg_mask], 1))\n",
"plt.axis('off')\n",
"if len(info['partclass_mask']):\n",
" plt.figure(figsize=(5*len(info['partclass_mask']), 5))\n",
" plt.title('Parts')\n",
" plt.imshow(np.concatenate(info['partclass_mask'],1))\n",
" plt.axis('off')\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can also inspect the attributes `info['objects']` and `info['parts']` for information about object names, attributes etc."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Amodal segmentation and Polygons\n",
"We also provide access to the original polygons annotated, as well as the amodal segmentation of object instances"
]
},
{
"cell_type": "code",
2021-03-01 00:08:13 +08:00
"execution_count": 8,
2021-02-28 22:48:00 +08:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2021-03-01 00:08:13 +08:00
"(-0.5, 6143.5, 1535.5, -0.5)"
2021-02-28 22:48:00 +08:00
]
},
2021-03-01 00:08:13 +08:00
"execution_count": 8,
2021-02-28 22:48:00 +08:00
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
2021-03-01 00:08:13 +08:00
"image/png": "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\n",
2021-02-28 22:48:00 +08:00
"text/plain": [
"<Figure size 1080x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# We have a segmentation for every object instance, showing object bounds without occlusions\n",
2021-03-01 00:08:13 +08:00
"instances = [4, 10, 19]\n",
2021-02-28 22:48:00 +08:00
"images = []\n",
"for instance in instances:\n",
" file_instance = '{}/{}/instance_{:03}_{}'.format(\n",
" root_path, full_file_name.replace('.jpg', ''), instance, file_name.replace('.jpg', '.png'))\n",
" aux = cv2.imread(file_instance)\n",
" images.append(aux)\n",
"plt.figure(figsize=(5*len(images), 5))\n",
"plt.imshow(np.concatenate(images, 1))\n",
"plt.axis('off')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finally we can get the original polygons"
]
},
{
"cell_type": "code",
2021-03-01 00:08:13 +08:00
"execution_count": 9,
2021-02-28 22:48:00 +08:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2021-03-01 00:08:13 +08:00
"(-0.5, 2047.5, 1535.5, -0.5)"
2021-02-28 22:48:00 +08:00
]
},
2021-03-01 00:08:13 +08:00
"execution_count": 9,
2021-02-28 22:48:00 +08:00
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
2021-03-01 00:08:13 +08:00
"image/png": "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
2021-02-28 22:48:00 +08:00
"text/plain": [
"<Figure size 1080x1080 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"img = utils_ade20k.plot_polygon('{}/{}'.format(root_path, full_file_name), info)\n",
"plt.figure(figsize=(15,15))\n",
"plt.imshow(img[:, :, ::-1])\n",
"plt.axis('off')"
]
}
],
"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",
2021-05-12 21:51:09 +08:00
"version": "3.7.3"
2021-02-28 22:48:00 +08:00
}
},
"nbformat": 4,
"nbformat_minor": 2
}