Tensorflow C++ implementation for single image depth estimation
The original work is implemented in Python, click here to go to their repo. Please cite their work if your find it helpful.
It is using pointer-to-implementation technique, so that you can use it in your project without worrying the actual implementation. Refer to src/inference_monodepth.cpp for more information
The C++ version is about 28fps, in comparison with Python's 13fps, tested with i7 processor and NVidia 1070 graphics laptop.
If you are looking for single-image relative depth prediction, feel free to check out my other repo, MiDaS-cpp, a PyTorch C++ implementation of MiDaS.
Run the Docker container
chmod +x run_tf_docker.sh
./run_tf_docker.sh
Note: You may have a better graphics card, and if that's so, go to tf.Dockerfile line 55 and change the value of TF_CUDA_COMPUTE_CAPABILITIES
(check out Nvidia cuda-gpus ).
Build Tensorflow library from source, see here
Either way, you will need to Freeze a Tensorflow graph (with known input and output names), or download a converted graph here.
.cmake
files in CMakeModulesNOTE: If you use the Docker container, this github repo will be mounted in /monodepth
. Therefore, run cd monodepth
in the container first.
mkdir build && mkdir install
cd build
cmake -DCMAKE_INSTALL_PREFIX=../install ..
make && make install
You will be seeing 'include' and 'lib' folders in the 'install' folder, import them in your project
To test if Monodepth C++ is working properly,
cd build
./inference_monodepth
NOTE: Select either static or shared library in CMakeLists.txt, unless you want both of them
In your own CMakeLists.txt project, do the following:
set(monodepth_INCLUDE_DIRS /path/to/monodepth-cpp/install/include)
INCLUDE_DIRECTORIES(
...
monodepth_INCLUDE_DIRS
...
)
TARGET_LINK_LIBRARIES(awesome_exe /path/to/tensorflow/library/libtensorflow_cc.so) # Only if you are using the provided instructions
TARGET_LINK_LIBRARIES(awesome_exe /path/to/monodepth-cpp/install/lib/libmonodepth_static.a) # if you are using static library
Reproducing Deep virtual stereo odometry
NOTE: Because DVSO uses both the left disparity and the right disparity outputs (for left-right consistency check), it requires some modifications in the source code to enable the disparities outputs.