Estimation de la profondeur monoculaire de haute qualité via le transfert d'apprentissage (Arxiv 2018)
Ibraheem Alhashim et Peter Wonka
[MISE À JOUR] Notre dernière méthode avec de meilleures performances peut être trouvée ici Adabins.
Keras officiel (TensorFlow) implémentaiton. Si vous avez des questions ou avez besoin de plus d'aide avec le code, contactez le premier auteur .
[Mise à jour] a ajouté un cahier Colab pour essayer la méthode à la volée.
[Mise à jour] Implémentation expérimentale TensorFlow 2.0 ajoutée.
[Mise à jour] Code pytorch expérimental ajouté.
Résultats
Exigences
- Ce code est testé avec Keras 2.2.4, TensorFlow 1.13, CUDA 10.0, sur une machine avec un Nvidia Titan V et 16 Go + RAM fonctionnant sur Windows 10 ou Ubuntu 16.
- D'autres packages avaient besoin
keras pillow matplotlib scikit-learn scikit-image opencv-python pydot et GraphViz pour la visualisation du modèle Graph et PyGLM PySide2 pyopengl pour la démo GUI. - Matériel minimum testé pour l'inférence Nvidia GeForce 940mx (ordinateur portable) / Nvidia GeForce GTX 950 (bureau).
- La formation prend environ 24 heures sur un seul Nvidia Titan RTX avec la taille du lot 8.
Modèles pré-formés
- NYU Depth v2 (165 Mo)
- Kitti (165 Mo)
Démos
- Après avoir téléchargé le modèle pré-formé (NYU.H5), exécutez
python test.py Vous devriez voir un montage d'images avec leurs cartes de profondeur estimées. - [MISE À JOUR] Une démo QT montrant les nuages de points 3D de la webcam ou une image. Exécutez simplement
python demo.py Il nécessite les packages PyGLM PySide2 pyopengl .
Données
- NYU Depth V2 (50K) (4,1 Go): Vous n'avez pas besoin d'extraire l'ensemble de données car le code charge l'intégralité du fichier zip en mémoire lors de la formation.
- Kitti: Copiez les données brutes dans un dossier avec le chemin '../Kitti'. Notre méthode s'attend à des cartes de profondeur d'entrée denses, par conséquent, vous devez exécuter une méthode d'intervention en profondeur sur les données lidar. Pour nos expériences, nous avons utilisé notre réimpression Python du code MATLAB fourni avec la boîte à outils NYU Depth V2. L'ensemble des images de 80 000 heures a duré 2 heures sur un cluster de 80 nœuds pour la déception. Pour notre formation, nous avons utilisé le sous-ensemble défini ici.
- Unreal-1k: à venir bientôt.
Entraînement
- Exécutez
python train.py --data nyu --gpus 4 --bs 8 .
Évaluation
- Téléchargez, mais n'extrairez pas les données de test de vérité au sol à partir d'ici (1,4 Go). Ensuite, exécutez simplement
python evaluate.py .
Référence
Papier correspondant à citer:
@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}
}