Last active
August 16, 2020 17:04
-
-
Save DrSleep/4bce37254c5900545e6b65f6a0858b9c to your computer and use it in GitHub Desktop.
KITTI VISUAL ODOMETRY DATASET
This file contains 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
## http://cvlibs.net/datasets/kitti/eval_semantics.php | |
## https://omnomnom.vision.rwth-aachen.de/data/rwth_kitti_semantics_dataset.zip | |
### DATASET FOR SEMANTIC SEGMENTATION |
This file contains 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
IMG_MEAN = np.array((104.00698793,116.66876762,122.67891434), dtype=np.float32) | |
BATCH_SIZE = 2 | |
DATA_DIRECTORY = './../rwth_kitti_semantics_dataset/' | |
DATA_LIST_PATH = './../rwth_kitti_semantics_dataset/splits/train_tf.txt' | |
IGNORE_LABEL = 255 | |
INPUT_SIZE = '321,321' | |
LEARNING_RATE = 1e-4 | |
NUM_CLASSES = 14 | |
NUM_STEPS = 20000 | |
RANDOM_SEED = 1234 | |
RESTORE_FROM = './deeplab_resnet.ckpt' | |
SAVE_NUM_IMAGES = 2 | |
SAVE_PRED_EVERY = 10 | |
SNAPSHOT_DIR = './snapshots_finetune/' |
This file contains 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
# colour map | |
label_colours = [(0, 0, 0), | |
(0, 0, 255), | |
(255, 0, 0), | |
(255,255, 0), | |
( 0,255, 0), | |
(255, 0,255), | |
( 0,255,255), | |
(255, 0,153), | |
(153, 0,255), | |
( 0,153,255), | |
(153,255, 0), | |
(255,153, 0), | |
( 0,255,153), | |
( 0,153,153)] |
This file contains 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
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"import tensorflow as tf\n", | |
"from PIL import Image" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"from tqdm import tqdm" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"import numpy as np" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"arr = Image.open('rwth_kitti_semantics_dataset/labels/06_000800.png')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n0/+2uHVgjPrZBAAAAABJRU5ErkJggg==\n", | |
"text/plain": [ | |
"<PIL.PngImagePlugin.PngImageFile image mode=RGB size=1226x370 at 0x48E20876D8>" | |
] | |
}, | |
"execution_count": 5, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"arr" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(370, 1226, 3)" | |
] | |
}, | |
"execution_count": 6, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"np.array(arr).shape" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"arr = np.array(arr)\n", | |
"dt = np.dtype([('a', arr.dtype), ('b', arr.dtype), ('c', arr.dtype)])\n", | |
"y = arr.view(dtype=dt).squeeze()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([( 0, 0, 0), ( 0, 0, 255), ( 0, 153, 153), ( 0, 255, 0),\n", | |
" ( 0, 255, 153), ( 0, 255, 255), (255, 0, 0), (255, 0, 153),\n", | |
" (255, 0, 255), (255, 153, 0), (255, 255, 0)], \n", | |
" dtype=[('a', 'u1'), ('b', 'u1'), ('c', 'u1')])" | |
] | |
}, | |
"execution_count": 8, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"np.unique(y)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"## Convert labels from RGB" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"## adapted from https://github.com/martinkersner/train-DeepLab/blob/master/utils.py\n", | |
"palette = {(0, 0, 0) : 0 ,\n", | |
" (0, 0, 255) : 1 ,\n", | |
" (255, 0, 0) : 2,\n", | |
" (255,255, 0) : 3,\n", | |
" ( 0,255, 0) : 4,\n", | |
" (255, 0,255) : 5,\n", | |
" ( 0,255,255) : 6,\n", | |
" (255, 0,153) : 7,\n", | |
" (153, 0,255) : 8,\n", | |
" ( 0,153,255) : 9,\n", | |
" (153,255, 0) : 10,\n", | |
" (255,153, 0) : 11,\n", | |
" ( 0,255,153) : 12,\n", | |
" ( 0,153,153) : 13\n", | |
" }" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"def convert_from_color_segmentation(arr_3d):\n", | |
" arr_2d = np.zeros((arr_3d.shape[0], arr_3d.shape[1]), dtype=np.uint8)\n", | |
"\n", | |
" for c, i in palette.items():\n", | |
" m = np.all(arr_3d == np.array(c).reshape(1, 1, 3), axis=2)\n", | |
" arr_2d[m] = i\n", | |
"\n", | |
" return arr_2d" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<PIL.Image.Image image mode=L size=1226x370 at 0x48E2126278>" | |
] | |
}, | |
"execution_count": 12, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"Image.fromarray(convert_from_color_segmentation(arr))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 13, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"import os, shutil" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 15, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"new_label_dir = 'rwth_kitti_semantics_dataset/labels_tf/'" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 44, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"label_dir = 'rwth_kitti_semantics_dataset/labels/'\n", | |
"label_files = os.listdir(label_dir)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 52, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 203/203 [00:41<00:00, 4.82it/s]\n" | |
] | |
} | |
], | |
"source": [ | |
"for l_f in tqdm(label_files):\n", | |
" arr = np.array(Image.open(label_dir + l_f))\n", | |
" arr_2d = convert_from_color_segmentation(arr)\n", | |
" Image.fromarray(arr_2d).save(new_label_dir + l_f)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 53, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(376, 1241)" | |
] | |
}, | |
"execution_count": 53, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"## check\n", | |
"np.array(Image.open('rwth_kitti_semantics_dataset/labels_tf/00_000200.png')).shape" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 16, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"## fix training/test sets" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"with open('rwth_kitti_semantics_dataset/splits/train.txt', 'rb') as f:\n", | |
" trn_lst = list(f.readlines())" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"with open('rwth_kitti_semantics_dataset/splits/test.txt', 'rb') as f:\n", | |
" tst_lst = list(f.readlines())" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"## we want /train/file1.png /labels_tf/file1.png\n", | |
"with open('rwth_kitti_semantics_dataset/splits/train_tf.txt', 'w+') as f:\n", | |
" for el in trn_lst:\n", | |
" el = el.decode('utf-8')[:-5]\n", | |
" f.write('/images/{}.png /labels_tf/{}.png\\n'.format(el, el))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"## we want /train/file1.png /labels_tf/file1.png\n", | |
"with open('rwth_kitti_semantics_dataset/splits/test_tf.txt', 'w+') as f:\n", | |
" for el in tst_lst:\n", | |
" el = el.decode('utf-8')[:-5]\n", | |
" f.write('/images/{}.png /labels_tf/{}.png\\n'.format(el, el))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 2", | |
"language": "python", | |
"name": "python2" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 2 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython2", | |
"version": "2.7.12" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
good job!
what is the purpuse of IMG_MEAN in fine_tune.py
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
masks_kitti.ipynb
decode_png
Training results









