Estimación de profundidad monocular de alta calidad a través del aprendizaje de transferencia (ARXIV 2018)
Ibraheem Alhashim y Peter Wonka
[Actualización] Nuestro último método con mejor rendimiento se puede encontrar aquí Adabins.
Keras oficiales (TensorFlow) ImplementAiton. Si tiene alguna pregunta o necesita más ayuda con el código, comuníquese con el primer autor .
[Actualización] Se agregó un cuaderno Colab para probar el método en la marcha.
[Actualización] Implementación experimental TensorFlow 2.0 agregada.
[Actualización] Código experimental de Pytorch agregado.
Resultados
Requisitos
- Este código se prueba con Keras 2.2.4, TensorFlow 1.13, Cuda 10.0, en una máquina con un Nvidia Titan V y 16GB+ RAM que se ejecuta en Windows 10 o Ubuntu 16.
- Otros paquetes necesitaban
keras pillow matplotlib scikit-learn scikit-image opencv-python pydot y GraphViz para la visualización del gráfico del modelo y PyGLM PySide2 pyopengl para la demostración de GUI. - Hardware mínimo probado para inferencia NVIDIA GEFORCE 940MX (computadora portátil) / Nvidia GeForce GTX 950 (escritorio).
- El entrenamiento dura aproximadamente 24 horas en un solo Nvidia Titan RTX con un lote de tamaño 8.
Modelos previamente capacitados
- NYU Profundidad V2 (165 MB)
- Kitti (165 MB)
Población
- Después de descargar el modelo previamente capacitado (NYU.H5), ejecute
python test.py Debería ver un montaje de imágenes con sus mapas de profundidad estimados. - [Actualización] Una demostración QT que muestra nubes de puntos 3D de la cámara web o una imagen. Simplemente ejecute
python demo.py Requiere los paquetes PyGLM PySide2 pyopengl .
Datos
- NYU Profundidad V2 (50k) (4.1 GB): No necesita extraer el conjunto de datos ya que el código carga todo el archivo ZIP en la memoria cuando se capacita.
- Kitti: Copie los datos sin procesar en una carpeta con la ruta '../kitti'. Nuestro método espera mapas de profundidad de entrada densos, por lo tanto, debe ejecutar un método de entrada de profundidad en los datos LIDAR. Para nuestros experimentos, utilizamos nuestro reimplmentaiton de Python del código MATLAB proporcionado con NYU Profundation V2 Toolbox. Todas las imágenes de 80k tomaron 2 horas en un clúster de 80 nodos para la entrada. Para nuestro entrenamiento, utilizamos el subconjunto definido aquí.
- Unreal-1k: Próximamente.
Capacitación
- Ejecute
python train.py --data nyu --gpus 4 --bs 8 .
Evaluación
- Descargue, pero no extraiga, los datos de prueba de verdad de tierra de aquí (1.4 GB). Luego simplemente ejecute
python evaluate.py .
Referencia
Papel correspondiente para citar:
@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}
}