Ce référentiel contient le code (dans Pytorch) pour le papier "Pyramid Stereo Matching Network" (CVPR 2018) par Jia-Rang Chang et Yong-Sheng Chen.
2020/12/20: Mettez à jour PSMNET: Prise en charge désormais de Torch 1.6.0 / TorchVision 0.5.0 et Python 3.7, supprimé une indentation incohérente.
2020/12/20: Notre stéréo en temps réel proposé peut être trouvé ici stéréo en temps réel.
@inproceedings{chang2018pyramid,
title={Pyramid Stereo Matching Network},
author={Chang, Jia-Ren and Chen, Yong-Sheng},
booktitle={Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition},
pages={5410--5418},
year={2018}
}
Des travaux récents ont montré que l'estimation de la profondeur d'une paire d'images stéréo peut être formulée comme une tâche d'apprentissage supervisée à résoudre avec des réseaux neuronaux convolutionnels (CNN). Cependant, les architectures actuelles reposent sur des réseaux siamois basés sur des patchs, sans moyen d'exploiter les informations contextuelles pour trouver la correspondance dans les régions malposées. Pour résoudre ce problème, nous proposons PSMNET, un réseau de correspondance stéréo pyramide composé de deux modules principaux: la mise en commun pyramide spatiale et le CNN 3D. Le module spatial de mise en commun des pyramides tire parti de la capacité des informations de contexte global en agrégeant le contexte dans différentes échelles et emplacements pour former un volume de coûts. Le 3D CNN apprend à régulariser le volume des coûts en utilisant plusieurs réseaux de sablier empilés en conjonction avec une supervision intermédiaire.

Usage of Scene Flow dataset
Download RGB cleanpass images and its disparity for three subset: FlyingThings3D, Driving, and Monkaa.
Put them in the same folder.
And rename the folder as: "driving_frames_cleanpass", "driving_disparity", "monkaa_frames_cleanpass", "monkaa_disparity", "frames_cleanpass", "frames_disparity".
À titre d'exemple, utilisez la commande suivante pour former un PSMNET sur le flux de la scène
python main.py --maxdisp 192
--model stackhourglass
--datapath (your scene flow data folder)
--epochs 10
--loadmodel (optional)
--savemodel (path for saving model)
Comme autre exemple, utilisez la commande suivante pour Finetune un PSMnet sur Kitti 2015
python finetune.py --maxdisp 192
--model stackhourglass
--datatype 2015
--datapath (KITTI 2015 training data folder)
--epochs 300
--loadmodel (pretrained PSMNet)
--savemodel (path for saving model)
Vous pouvez également voir ces exemples dans run.sh.
Utilisez la commande suivante pour évaluer le PSMNET formé sur les données de test Kitti 2015
python submission.py --maxdisp 192
--model stackhourglass
--KITTI 2015
--datapath (KITTI 2015 test data folder)
--loadmodel (finetuned PSMNet)
※ Remarque: le modèle pré-entraîné a été sauvé en .Tar; Cependant, vous n'avez pas besoin de le désarrêter. Utilisez Torch.load () pour le charger.
MISE À JOUR: 2018/9/6 Nous avons publié le modèle Kitti 2012 avant formé.
MISE À JOUR: 2021/9/22 Un modèle pré-entraîné utilisant la torche 1.8.1 (le poids du modèle précédent est formé TORCH 0.4.1)
| Kitti 2015 | Flux de scène | Kitti 2012 | Débit de scène (torche 1.8.1) |
|---|---|---|---|
| Google Drive | Google Drive | Google Drive | Google Drive |
python Test_img.py --loadmodel (finetuned PSMNet) --leftimg ./left.png --rightimg ./right.png

※ Notez que les erreurs de validation de 3-px signalées ont été calculées à l'aide du code MATLAB officiel de Kitti, et non de notre code.
Lien de classement
| Méthode | D1-all (tout) | D1-ALL (NOC) | Exécution (s) |
|---|---|---|---|
| PSMNET | 2,32% | 2,14% | 0,41 |
| iresnet-i2 | 2,44% | 2,19% | 0,12 |
| Gc-net | 2,87% | 2,61% | 0,90 |
| MC-CNN | 3,89% | 3,33% | 67 |
Nous visualisons les champs réceptifs des différents paramètres de PSMNET, des paramètres complets et de la ligne de base.
Réglage complet: Dilaté Conv, SPP, sablier empilé
Baseline: pas de dilated conv, pas de spp, pas de sablier empilé
Les champs réceptifs ont été calculés pour le pixel au centre d'image, indiqué par la Croix-Rouge.

Toute discussion ou préoccupation est la bienvenue!