Этот репозиторий содержит код (в Pytorch) для статьи «Пирамида-стереоподобная сеть» (CVPR 2018) Цзя-Рен Чанг и Юн-Шенг Чен.
2020/12/20: обновление PSMNET: теперь поддержите TORCH 1.6.0/TOCHVISION 0.5.0 и Python 3.7, удалено непоследовательное отступление.
2020/12/20: Наш предложенную стереосистему в режиме реального времени можно найти здесь, стерео в режиме реального времени.
@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}
}
Недавняя работа показала, что оценка глубины из стерео -пары изображений может быть сформулирована в качестве контролируемой учебной задачи, которая должна быть решена с помощью сверточных нейронных сетей (CNN). Тем не менее, текущие архитектуры полагаются на патч-сиамские сети, не имеющие средств для использования контекстной информации для поиска соответствия в непоколебленных регионах. Чтобы решить эту проблему, мы предлагаем PSMNET, пирамидную стерео, соответствующую сети, состоящей из двух основных модулей: объединение пространственной пирамиды и 3D CNN. Пространственный модуль объединения пирамиды использует возможности глобальной контекстной информации, агрегируя контекст в различных масштабах и местоположениях, чтобы сформировать объем стоимости. 3D CNN учится регулярно использовать объем стоимости с использованием сложенных сетей для нескольких песочных часов в сочетании с промежуточным надзором.

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".
В качестве примера используйте следующую команду для обучения PSMNET на сцене.
python main.py --maxdisp 192
--model stackhourglass
--datapath (your scene flow data folder)
--epochs 10
--loadmodel (optional)
--savemodel (path for saving model)
В качестве другого примера, используйте следующую команду для Finetune A PSMNet на 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)
Вы также можете увидеть эти примеры в Run.sh.
Используйте следующую команду для оценки обученного PSMNET на тестовых данных Kitti 2015
python submission.py --maxdisp 192
--model stackhourglass
--KITTI 2015
--datapath (KITTI 2015 test data folder)
--loadmodel (finetuned PSMNet)
※ ПРИМЕЧАНИЕ: Предварительная модель была сохранена в .tar; Тем не менее, вам не нужно это растереть. Используйте Torch.load (), чтобы загрузить его.
ОБНОВЛЕНИЕ: 2018/9/6 Мы выпустили предварительно обученную модель Kitti 2012.
Обновление: 2021/9/22. Предварительная модель с использованием Torch 1.8.1 (вес предыдущей модели обучен факел 0.4.1)
| Китти 2015 | Сцена | Китти 2012 | Поток сцены (факел 1.8.1) |
|---|---|---|---|
| Google Drive | Google Drive | Google Drive | Google Drive |
python Test_img.py --loadmodel (finetuned PSMNet) --leftimg ./left.png --rightimg ./right.png

※ Обратите внимание, что сообщенные ошибки проверки 3-PX были рассчитаны с использованием официального кода Matlab Kitti, а не нашего кода.
Ссылка на лидеры
| Метод | D1-all (все) | D1-All (NOC) | Время выполнения (ы) |
|---|---|---|---|
| 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 |
Мы визуализируем восприимчивые поля различных настройки PSMNET, полного настройки и базового уровня.
Полная настройка: расширенная конвей, SPP, сложенные песочные часы
Базовая линия: нет расширенного конвейса, без SPP, без сложенных песочных часов
Рецептивные поля были рассчитаны для пикселя в центре изображения, обозначенного Красным Крестом.

Следуйте по адресу @gmail.com
Любые обсуждения или проблемы приветствуются!