• Stars
    star
    1,556
  • Rank 29,054 (Top 0.6 %)
  • Language
    Jupyter Notebook
  • License
    GNU General Publi...
  • Created over 5 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

High Quality Monocular Depth Estimation via Transfer Learning

High Quality Monocular Depth Estimation via Transfer Learning (arXiv 2018)

Ibraheem Alhashim and Peter Wonka

[Update] Our latest method with better performance can be found here AdaBins.

Offical Keras (TensorFlow) implementaiton. If you have any questions or need more help with the code, contact the first author.

[Update] Added a Colab notebook to try the method on the fly.

[Update] Experimental TensorFlow 2.0 implementation added.

[Update] Experimental PyTorch code added.

Results

  • KITTI

KITTI

  • NYU Depth V2

NYU Depth v2 NYU Depth v2 table

Requirements

  • This code is tested with Keras 2.2.4, Tensorflow 1.13, CUDA 10.0, on a machine with an NVIDIA Titan V and 16GB+ RAM running on Windows 10 or Ubuntu 16.
  • Other packages needed keras pillow matplotlib scikit-learn scikit-image opencv-python pydot and GraphViz for the model graph visualization and PyGLM PySide2 pyopengl for the GUI demo.
  • Minimum hardware tested on for inference NVIDIA GeForce 940MX (laptop) / NVIDIA GeForce GTX 950 (desktop).
  • Training takes about 24 hours on a single NVIDIA TITAN RTX with batch size 8.

Pre-trained Models

Demos

  • After downloading the pre-trained model (nyu.h5), run python test.py. You should see a montage of images with their estimated depth maps.
  • [Update] A Qt demo showing 3D point clouds from the webcam or an image. Simply run python demo.py. It requires the packages PyGLM PySide2 pyopengl.

RGBD Demo

Data

  • NYU Depth V2 (50K) (4.1 GB): You don't need to extract the dataset since the code loads the entire zip file into memory when training.
  • KITTI: copy the raw data to a folder with the path '../kitti'. Our method expects dense input depth maps, therefore, you need to run a depth inpainting method on the Lidar data. For our experiments, we used our Python re-implmentaiton of the Matlab code provided with NYU Depth V2 toolbox. The entire 80K images took 2 hours on an 80 nodes cluster for inpainting. For our training, we used the subset defined here.
  • Unreal-1k: coming soon.

Training

  • Run python train.py --data nyu --gpus 4 --bs 8.

Evaluation

  • Download, but don't extract, the ground truth test data from here (1.4 GB). Then simply run python evaluate.py.

Reference

Corresponding paper to cite:

@article{Alhashim2018,
  author    = {Ibraheem Alhashim and Peter Wonka},
  title     = {High Quality Monocular Depth Estimation via Transfer Learning},
  journal   = {arXiv e-prints},
  volume    = {abs/1812.11941},
  year      = {2018},
  url       = {https://arxiv.org/abs/1812.11941},
  eid       = {arXiv:1812.11941},
  eprint    = {1812.11941}
}

More Repositories

1

3d-workspace

Simple 3D mesh processing framework with a GUI
C
32
star
2

topo-blend

3D topology blending tool
C++
26
star
3

StyleGAN-Tensorflow2

StyleGAN - TensorFlow 2.0 implementation compatible with the official code
Jupyter Notebook
26
star
4

PyEXR

Python binding for tinyexr, an OpenEXR image loader/saver library
C++
23
star
5

TopoBlender

A 3D modeling software allowing free-form blending and topology changes
C++
22
star
6

sketch-search

Sketch-based Image Retrieval
C
18
star
7

libcvt

Centroidal Voronoi Tessellations on Surfaces
C++
15
star
8

GeoTopo

Corresponding topologically different 3D shapes
C++
13
star
9

powercrust

Powercrust algorithm: from points to a surface mesh and an approximate medial axis
C++
12
star
10

extend-mesh

3D shape stretching while preserving surface details
C++
9
star
11

taucs-wrapper

A C++ wrapper for the TAUCS sparse linear solver
C++
3
star
12

QDigraph

Drawing directed graphs using Qt's QtWebKit and dagre-d3 javascript library
C++
3
star
13

EmojiNetTutorial

An AI tutorial on the problem of object detection and segmentation using Keras
Python
3
star
14

calligram-dev

calligram maker
C++
2
star
15

AccurateSelectionEG2013

Windows binaries for the paper "Accurate Binary Image Selection from Inaccurate User Input" with a GUI.
1
star
16

user-study-graphics

A platform to create mini-demos used for a user study
C++
1
star
17

geometric-median

Weiszfeld's algorithm for finding the geometric median
C++
1
star
18

EventCloudBundler

Special bunder_sfm that supports parallel execution with added pre-processing.
Perl
1
star
19

libfastmarching

2D Fast Marching Method
C++
1
star
20

concavehull

A standalone implementation of concave hull computation for 3D points using powercrust
C++
1
star
21

xdog-example

Simple driver for the extended DoG operator
C++
1
star
22

ddtt-dev

development playground
C++
1
star
23

openra-android

Automatically exported from code.google.com/p/openra-android
Java
1
star