Este repositório contém o código (em Pytorch) para o artigo "Rede de correspondência estéreo de pirâmide" (CVPR 2018) de Jia-Ren Chang e Yong-Sheng Chen.
2020/12/20: Atualizar PSMNET: agora suporta a Torch 1.6.0/Torchvision 0.5.0 e Python 3.7, removeu o indentação inconsistente.
2020/12/20: Nosso estéreo em tempo real proposto pode ser encontrado aqui em estéreo em tempo real.
@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}
}
Trabalhos recentes mostraram que a estimativa de profundidade de um par de imagens estéreo pode ser formulada como uma tarefa de aprendizado supervisionada a ser resolvida com as redes neurais convolucionais (CNNs). No entanto, as arquiteturas atuais dependem de redes siamesas baseadas em patches, sem os meios para explorar informações de contexto para encontrar correspondência em regiões ilícitas. Para resolver esse problema, propomos PSMNET, uma rede de correspondência estéreo de pirâmide que consiste em dois módulos principais: agrupamento de pirâmide espacial e CNN 3D. O módulo de pool de pirâmide espacial aproveita a capacidade das informações de contexto global, agregando o contexto em diferentes escalas e locais para formar um volume de custo. A CNN 3D aprende a regularizar o volume de custos usando redes empilhadas de várias ampulhetas em conjunto com a supervisão intermediária.

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".
Como exemplo, use o seguinte comando para treinar um psmnet no fluxo de cena
python main.py --maxdisp 192
--model stackhourglass
--datapath (your scene flow data folder)
--epochs 10
--loadmodel (optional)
--savemodel (path for saving model)
Como outro exemplo, use o seguinte comando para Finetune um PSMNET no 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)
Você também pode ver esses exemplos em run.sh.
Use o seguinte comando para avaliar o PSMNET treinado nos dados de teste de Kitti 2015
python submission.py --maxdisp 192
--model stackhourglass
--KITTI 2015
--datapath (KITTI 2015 test data folder)
--loadmodel (finetuned PSMNet)
※ Nota: o modelo pré -terenciado foi salvo em .tar; No entanto, você não precisa desmarcá -lo. Use Torch.load () para carregá -lo.
ATUALIZAÇÃO: 2018/9/6 Lançamos o modelo Kitti 2012 pré-treinado.
ATUALIZAÇÃO: 2021/9/22 Um modelo pré -terenciado usando a Torch 1.8.1 (o peso do modelo anterior é treinado tocha 0.4.1)
| Kitti 2015 | Fluxo de cena | Kitti 2012 | Fluxo de cena (tocha 1.8.1) |
|---|---|---|---|
| Google Drive | Google Drive | Google Drive | Google Drive |
python Test_img.py --loadmodel (finetuned PSMNet) --leftimg ./left.png --rightimg ./right.png

※ Observe que os erros de validação 3-PX relatados foram calculados usando o código oficial do Kitti, não o nosso código.
LIGADA LIGADA LINK
| Método | D1-all (tudo) | D1-All (NOC) | Tempo (s) de execução (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 |
Visualizamos os campos receptivos de diferentes configurações de PSMNET, configuração completa e linha de base.
Configuração completa: Conv dilatado, spp, ampulheta empilhada
Linha de base: nenhum convul dilatado, sem spp, sem ampulheta empilhada
Os campos receptivos foram calculados para o pixel no Centro de Imagem, indicado pela Cruz Vermelha.

Quaisquer discussões ou preocupações são bem -vindas!