MVSTER: Epipolar Transformer for Efficient Multi-View Stereo, ECCV 2022. arXiv
This repository contains the official implementation of the paper: "MVSTER: Epipolar Transformer for Efficient Multi-View Stereo".
MVSTER is a learning-based MVS method which achieves competitive reconstruction performance with significantly higher efficiency. MVSTER leverages the proposed epipolar Transformer to learn both 2D semantics and 3D spatial associations efficiently. Specifically, the epipolar Transformer utilizes a detachable monocular depth estimator to enhance 2D semantics and uses cross-attention to construct data-dependent 3D associations along epipolar line. Additionally, MVSTER is built in a cascade structure, where entropy-regularized optimal transport is leveraged to propagate finer depth estimations in each stage.
MVSTER is tested on:
pip install -r requirements.txt
├── Cameras
├── Depths
├── Depths_raw
├── Rectified
├── Rectified_raw (Optional)
In scripts/train_dtu.sh
, set DTU_TRAINING
as $DTU_TRAINING
Train MVSTER (Multi-GPU training):
bash ./scripts/train_dtu.sh mid exp_name
bash ./scripts/train_dtu.sh raw exp_name
After training, you will get model checkpoints in ./checkpoints/dtu/exp_name.
cams
folder, one images
folder and one pair.txt
file.scripts/test_dtu.sh
, set DTU_TESTPATH
as $DTU_TESTPATH.DTU_CKPT_FILE
is automatically set as your pretrained checkpoint file, you also can download my pretrained model.bash ./scripts/test_dtu.sh mid exp_name
bash ./scripts/test_dtu.sh raw exp_name
bash scripts/test_dtu.sh mid benchmark --loadckpt PATH_TO_CKPT_FILE
After testing, you will get reconstructed point clouds of DTU test set in ./outputs/dtu/exp_name.
For quantitative evaluation, download SampleSet and Points from DTU's website. Unzip them and place Points
folder in SampleSet/MVS Data/
. The structure looks like:
SampleSet
├──MVS Data
└──Points
For convinience evaluation, please install matlab (tested on Ubuntu 18.04) and uncomment mrun_rst function at the end of ./test_mvs4.py, and you also need to change the path of matlab excutable file (for me, it is /mnt/cfs/algorithm/xiaofeng.wang/jeff/code/MVS/misc/matlab/bin/matlab). Then you can evaluate point cloud reconstruction results when testing is finished.
You can also evaluate the metrics with the traditional steps:
In evaluations/dtu/BaseEvalMain_web.m
, set dataPath
as the path to SampleSet/MVS Data/
, plyPath
as directory that stores the reconstructed point clouds and resultsPath
as directory to store the evaluation results. Then run evaluations/dtu/BaseEvalMain_web.m
in matlab.
Acc. | Comp. | Overall. | Inf. Time | |
---|---|---|---|---|
MVSTER (mid size) | 0.350 | 0.276 | 0.313 | 0.09s |
MVSTER (raw size) | 0.340 | 0.266 | 0.303 | 0.17s |
Point cloud results on DTU, Tanks and Temples, ETH3D
If you find this project useful for your research, please cite:
@misc{wang2022mvster,
title={MVSTER: Epipolar Transformer for Efficient Multi-View Stereo},
author={Xiaofeng Wang, Zheng Zhu, Fangbo Qin, Yun Ye, Guan Huang, Xu Chi, Yijia He and Xingang Wang},
journal={arXiv preprint arXiv:2204.07346},
year={2022}
}
Our work is partially baed on these opening source work: MVSNet, MVSNet-pytorch, cascade-stereo, PatchmatchNet.
We appreciate their contributions to the MVS community.