• Stars
    star
    190
  • Rank 202,542 (Top 5 %)
  • Language
    Python
  • Created about 2 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

This repository is the official implementation of DiffuStereo: High Quality Human Reconstruction via Diffusion-based Stereo Using Sparse Cameras.

News

  • 31/07/2022 We plan to release the THUman5.0 dataset for acadamic use. The dataset contains 10 dynamic human sequences which are captured by 32 RGB cameras with resolution of 4000x3096. Please see here for more detais.

DiffuStereo: High Quality Human Reconstruction via Diffusion-based Stereo Using Sparse Cameras

Project Page | Paper | Data

image

DiffuStereo: High Quality Human Reconstruction via Diffusion-based Stereo Using Sparse Cameras
Ruizhi Shao, Zerong Zheng, Hongwen Zhang, Jingxiang Sun, Yebin Liu ECCV 2022

We plan to release the training and testing code of DiffuStereo in this repository as soon as possible. Any discussions or questions would be welcome!

Installation

Please see INSTALL.md for manual installation.

Pretrained model

We will provide the pretrained diffusion models for stereo matching including 20 degree and 45 degree as soon as possible. You can download and put them into the checkpoints/ directory.

Download: pretrained model for 20 degree stereo matching

Run the code on the THUman2.0 dataset

Please see THUman2.0 to download DEMO samples and the dataset.

Structure of DEMO samples

thuman_demo/
├── depth_db
│   └── 0001
│       ├── xxx.npz  --- the depth of view xxx (reconstructed by DoubleField)
├── img
│   └── 0001
│       ├── xxx.png  --- the image of view xxx
├── mask
│   └── 0001
│       ├── xxx.png  --- the mask of view xxx
├── normal_db
│   └── 0001
│       ├── xxx.png  --- the normal of view xxx (reconstructed by DoubleField)
└── parameter        --- We use perspective camera model to render images
    └── 0001   
        ├── xxx_extrinsic.npy  --- the extrinsic of view xxx (3x4 world-to-camera matrix)
        ├── xxx_intrinsic.npy  --- the intrinsic of view xxx (3x3 matrix)

Inference on a single stereo matching pair

To inference on a single stereo matching pair of DEMO samples, please run the following script.

python -m app.inference --config configs/thuman_demo.yaml --dataroot [the directory of DEMO samples] --view_list 0 20

Visualization on a single stereo matching pair

The results will be saved in results/thuman_demo/. To visualize the results, use MeshLab to open results/thuman_demo/fusion000.ply and apply Possion Reconstruction with depth=11 or depth=10.

video

Inference on multiple stereo matching pairs

To inference on multiple stereo matching pairs of DEMO samples, please run the following script.

python -m app.inference --config configs/thuman_demo_multi.yaml --dataroot [the directory of DEMO samples] --view_list 0 20 90 110 180 200 270 290 --use_db_normal

For cases with 45 degree, please run the following script.

python -m app.inference --config configs/thuman_demo_multi_45.yaml --dataroot [the directory of DEMO samples] --view_list 0 45 90 135 180 225 270 315 --use_db_normal

Naive multi-view fusion and visualization on the results

The results will be saved in results/thuman_demo_multi/. To simply fuse multi-view depth point clouds, use MeshLab to open results/thuman_demo_multi/fusion000.ply and apply Possion Reconstruction with depth=11 or depth=10.

video

Run the code on the THUman5.0 dataset

Please see DATASET.md to download DEMO samples and the dataset.

Structure of DEMO samples

real_demo/
├── depth_db
│   └── 0001
│       ├── xxx.npz  --- the depth of view xxx (reconstructed by DoubleField)
├── img
│   └── 0001
│       ├── xxx.jpg  --- the image of view xxx (after undistortion)
├── mask
│   └── 0001
│       ├── xxx.jpg  --- the mask of view xxx (after undistortion)
├── normal_db
│   └── 0001
│       ├── xxx.png  --- the normal of view xxx (reconstructed by DoubleField)
└── parameter        --- parameters of real world perspective camera model (after undistortion)
    └── 0001   
        ├── xxx_extrinsic.npy  --- the extrinsic of view xxx (3x4 world-to-camera matrix)
        ├── xxx_intrinsic.npy  --- the intrinsic of view xxx (3x3 matrix)

Inference on one stereo matching pair

To inference on a single stereo matching pair of DEMO samples, please run the following script.

python -m app.inference --config configs/real_demo.yaml --dataroot [the directory of DEMO samples] --view_list 0 1

Visualization on one stereo matching pair

The results will be saved in results/real_demo/. To visualize the results, use MeshLab to open results/real_demo/fusion000.ply and apply Possion Reconstruction with depth=11 or depth=10.

video

Multi-view fusion

On account of calibration error and the complicated lighting environment in the real-world dataset, naive multi-view fusion based on Poisson Reconstruction will generate noise and artifacts. We recommend using traditional multi-view fusion algorithm or programming our proposed light-weight multi-view fusion to reproduce the final results.

Training on the 3D human scan dataset

Please see THUman2.0 to download DEMO samples and the dataset.

TODO

Run the code on the custom dataset

To run the code on the custom dataset, please see CUSTOM. We also clarify our camera model and provide some examples to render depth and normal maps.

Citation

If you find this code useful for your research, please use the following BibTeX entry.

@inproceedings{shao2022diffustereo,
    author = {Shao, Ruizhi and Zheng, Zerong and Zhang, Hongwen and Sun, Jingxiang and Liu, Yebin},
    title = {DiffuStereo: High Quality Human Reconstruction via Diffusion-based Stereo Using Sparse Cameras},
    booktitle = {ECCV},
    year = {2022}
}

Acknowledgments

Our project is benefit from these great resources:

Thanks for their sharing code.

More Repositories

1

Tensor4D

This is the official implementation of Tensor4D: Efficient Neural 4D Decomposition for High-fidelity Dynamic Reconstruction and Rendering.
Python
191
star
2

threestudio-3dgs

3D Gaussian Splatting extension of threestudio.
Python
159
star
3

DeepMultiCap

This repository is the official implementation of DeepMultiCap: Performance Capture of Multiple Characters Using Sparse Multiview Cameras.
Python
68
star
4

threestudio-dreamcraft3D

Python
56
star
5

threestudio-4dfy

Python
39
star
6

DoubleField

This repository is the official implementation of DoubleField: Bridging the Neural Surface and Radiance Fields for High-fidelity Human Reconstruction and Rendering.
39
star
7

threestudio-mvdream

MVDream extension of threestudio.
Python
37
star
8

threestudio-meshfitting

A simple extension of ThreeStudio, enabling the use of neural representation to fit a 3D mesh.
Python
25
star
9

LocalTrans

This repository is the official implementation of LocalTrans: A Multiscale Local Transformer Network for Cross-Resolution Homography Estimation.
C++
21
star
10

threestudio-mvimg-gen

Python
20
star
11

threestudio-diffusers-guidance

Python
7
star
12

Stupid-C-Compiler

Yacc
4
star
13

NERF-test

Python
4
star
14

threestudio-stable-nerf-renderer

Python
3
star
15

threestudio-shap-e

Python
3
star
16

OS

NKU OS course
2
star
17

threestudio-humangaussian

Python
2
star
18

threestudio-AnimatableGaussian

Python
2
star
19

BlockChain_Backend_Demo

A block chain backend without block chain
Java
1
star
20

KinectTest

simple kinect test
C++
1
star
21

diff-gaussian-rasterization-gsstudio

Cuda
1
star
22

CPUGL

CPU实现的渲染管线
C++
1
star
23

Drender

CUDA depth render
Python
1
star
24

simple-knn

Cuda
1
star
25

threestudio-dynamic-gaussian

1
star