Dieses Repository enthält den Code (in Pytorch) für "Pyramid Stereo Matching Network" -Papier (CVPR 2018) von Jia-Ren Chang und Yong-Sheng Chen.
2020/12/20: Aktualisieren Sie PSMNET: Unterstützen Sie jetzt Torch 1.6.0/Torchvision 0.5.0 und Python 3.7, inkonsistente Eindrückung entfernt.
2020/12/20: Unsere vorgeschlagene Echtzeit-Stereoanlage finden Sie hier Echtzeit-Stereoanlage.
@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}
}
Jüngste Arbeiten haben gezeigt, dass die Tiefenschätzung aus einem Stereo -Bilderpaar als beaufsichtigte Lernaufgabe formuliert werden kann, um mit Faltungsnetzwerken (CNNs) mit Faltungsfischnetzwerken zu gelöst. Aktuelle Architekturen beruhen jedoch auf patpat-basierte siamesische Netzwerke, ohne dass die Mittel zur Ausbeutung von Kontextinformationen für die Suche nach Korrespondenz in unpositionierten Regionen fehlt. Um dieses Problem anzugehen, schlagen wir PSMNET vor, ein Pyramid -Stereo -Matching -Netzwerk, das aus zwei Hauptmodulen besteht: räumlicher Pyramidenpooling und 3D -CNN. Das räumliche Pyramid -Pooling -Modul nutzt die Kapazität globaler Kontextinformationen, indem es den Kontext in verschiedenen Maßstäben und Orten zusammenfasst, um ein Kostenvolumen zu bilden. Der 3D -CNN lernt, das Kostenvolumen mithilfe von gestapelten mehrere Sanduhr -Netzwerken in Verbindung mit der Zwischenaufsicht zu regulieren.

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".
Verwenden Sie beispielsweise den folgenden Befehl, um einen PSMNET vor dem Szenenfluss zu trainieren
python main.py --maxdisp 192
--model stackhourglass
--datapath (your scene flow data folder)
--epochs 10
--loadmodel (optional)
--savemodel (path for saving model)
Verwenden Sie als ein weiteres Beispiel den folgenden Befehl, um ein PSMNET auf Kitti 2015 zu beenden
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)
Sie können diese Beispiele auch in Run.sh.
Verwenden Sie den folgenden Befehl, um das ausgebildete PSMNET auf Kitti 2015 -Testdaten zu bewerten
python submission.py --maxdisp 192
--model stackhourglass
--KITTI 2015
--datapath (KITTI 2015 test data folder)
--loadmodel (finetuned PSMNet)
※ Hinweis: Das vorbereitete Modell wurde in .tar gerettet; Sie müssen es jedoch nicht loswerden. Verwenden Sie Torch.load (), um es zu laden.
Update: 2018/9/6 Wir haben das vorgeborene Kitti 2012-Modell veröffentlicht.
UPDATE: 2021/9/22 Ein vorgezogenes Modell mit Torch 1.8.1 (das Vorgängermodellgewicht ist geschultes Torch 0.4.1).
| Kitti 2015 | Szenenfluss | Kitti 2012 | Szenenfluss (Torch 1.8.1) |
|---|---|---|---|
| Google Drive | Google Drive | Google Drive | Google Drive |
python Test_img.py --loadmodel (finetuned PSMNet) --leftimg ./left.png --rightimg ./right.png

※ Beachten Sie, dass die gemeldeten 3-PX-Validierungsfehler mithilfe von Kittis offiziellem Matlab-Code und nicht mit unserem Code berechnet wurden.
Rangliste Link
| Verfahren | D1-ALL (alle) | D1-ALL (NOC) | Laufzeit (en) |
|---|---|---|---|
| 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 |
Wir visualisieren die Empfangsfelder verschiedener Einstellungen von PSMNET, Volleinstellung und Basislinie.
Vollständige Einstellung: Dilatated Conv, SPP, gestapelte Sanduhr
Grundlinie: Keine erweiterte Konv, kein SPP, keine gestapelte Sanduhr
Die Empfangsfelder wurden für das Pixel im Bildzentrum berechnet, das durch das Rote Kreuz angezeigt wurde.

Alle Diskussionen oder Bedenken sind begrüßt!