All Projects → zjhthu → Oanet

zjhthu / Oanet

Licence: mit
Implementation of ICCV19 Paper "Learning Two-View Correspondences and Geometry Using Order-Aware Network"

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Oanet

Sgnn
[CVPR'20] SG-NN: Sparse Generative Neural Networks for Self-Supervised Scene Completion of RGB-D Scans
Stars: ✭ 112 (-32.53%)
Mutual labels:  3d-reconstruction
Meshroommaya
Photomodeling plugin for Maya
Stars: ✭ 118 (-28.92%)
Mutual labels:  3d-reconstruction
Surfelwarp
SurfelWarp: Efficient Non-Volumetric Dynamic Reconstruction
Stars: ✭ 149 (-10.24%)
Mutual labels:  3d-reconstruction
Mvcsnp
Code release for "Multi-view Consistency as Supervisory Signal for Learning Shape and Pose Prediction"
Stars: ✭ 113 (-31.93%)
Mutual labels:  3d-reconstruction
Openmvs
open Multi-View Stereo reconstruction library
Stars: ✭ 1,842 (+1009.64%)
Mutual labels:  3d-reconstruction
Synthesize3dviadepthorsil
[CVPR 2017] Generation and reconstruction of 3D shapes via modeling multi-view depth maps or silhouettes
Stars: ✭ 141 (-15.06%)
Mutual labels:  3d-reconstruction
Pcl Learning
🔥PCL(Point Cloud Library)点云库学习记录
Stars: ✭ 106 (-36.14%)
Mutual labels:  3d-reconstruction
Flame pytorch
This is a implementation of the 3D FLAME model in PyTorch
Stars: ✭ 153 (-7.83%)
Mutual labels:  3d-reconstruction
Reconstructiondataset
Set of images for doing 3d reconstruction
Stars: ✭ 117 (-29.52%)
Mutual labels:  3d-reconstruction
Drc
Code release for "Multi-view Supervision for Single-view Reconstruction via Differentiable Ray Consistency" (CVPR 2017)
Stars: ✭ 147 (-11.45%)
Mutual labels:  3d-reconstruction
Stereo dense reconstruction
Dense 3D reconstruction from stereo (using LIBELAS)
Stars: ✭ 113 (-31.93%)
Mutual labels:  3d-reconstruction
Cnncomplete
[CVPR'17] Shape Completion using 3D-Encoder-Predictor CNNs and Shape Synthesis
Stars: ✭ 117 (-29.52%)
Mutual labels:  3d-reconstruction
Alicevision
Photogrammetric Computer Vision Framework
Stars: ✭ 2,029 (+1122.29%)
Mutual labels:  3d-reconstruction
Sobfu
real-time 3D reconstruction of non-rigidly deforming scenes using depth data
Stars: ✭ 113 (-31.93%)
Mutual labels:  3d-reconstruction
Prnet pytorch
Training & Inference Code of PRNet in PyTorch 1.1.0
Stars: ✭ 149 (-10.24%)
Mutual labels:  3d-reconstruction
Unsupervised Depth Completion Visual Inertial Odometry
Tensorflow implementation of Unsupervised Depth Completion from Visual Inertial Odometry (in RA-L January 2020 & ICRA 2020)
Stars: ✭ 109 (-34.34%)
Mutual labels:  3d-reconstruction
Obman train
[cvpr19] Demo, training and evaluation code for generating dense hand+object reconstructions from single rgb images
Stars: ✭ 124 (-25.3%)
Mutual labels:  3d-reconstruction
Flame
FLaME: Fast Lightweight Mesh Estimation
Stars: ✭ 164 (-1.2%)
Mutual labels:  3d-reconstruction
Sltk
An OpenCV-based structured light processing toolkit.
Stars: ✭ 151 (-9.04%)
Mutual labels:  3d-reconstruction
Ad Census
AD-Census立体匹配算法,中国学者Xing Mei等人研究成果(Respect!),算法效率高、效果出色,适合硬件加速,Intel RealSense D400 Stereo模块算法。完整实现,代码规范,注释清晰,欢迎star!
Stars: ✭ 145 (-12.65%)
Mutual labels:  3d-reconstruction

OANet implementation

Pytorch implementation of OANet for ICCV'19 paper "Learning Two-View Correspondences and Geometry Using Order-Aware Network", by Jiahui Zhang, Dawei Sun, Zixin Luo, Anbang Yao, Lei Zhou, Tianwei Shen, Yurong Chen, Long Quan and Hongen Liao.

This paper focuses on establishing correspondences between two images. We introduce the DiffPool and DiffUnpool layers to capture the local context of unordered sparse correspondences in a learnable manner. By the collaborative use of DiffPool operator, we propose Order-Aware Filtering block which exploits the complex global context.

This repo contains the code and data for essential matrix estimation described in our ICCV paper. Besides, we also provide code for fundamental matrix estimation and the usage of side information (ratio test and mutual nearest neighbor check). Documents about this part will also be released soon.

Welcome bugs and issues!

If you find this project useful, please cite:

@article{zhang2019oanet,
  title={Learning Two-View Correspondences and Geometry Using Order-Aware Network},
  author={Zhang, Jiahui and Sun, Dawei and Luo, Zixin and Yao, Anbang and Zhou, Lei and Shen, Tianwei and Chen, Yurong and Quan, Long and Liao, Hongen},
  journal={International Conference on Computer Vision (ICCV)},
  year={2019}
}

Requirements

Please use Python 3.6, opencv-contrib-python (3.4.0.12) and Pytorch (>= 1.1.0). Other dependencies should be easily installed through pip or conda.

Example scripts

Run the demo

For a quick start, clone the repo and download the pretrained model.

git clone https://github.com/zjhthu/OANet.git 
cd OANet 
wget https://research.altizure.com/data/oanet_data/model_v2.tar.gz 
tar -xvf model_v2.tar.gz
cd model
wget https://research.altizure.com/data/oanet_data/sift-gl3d.tar.gz
tar -xvf sift-gl3d.tar.gz

Then run the fundamental matrix estimation demo.

cd ./demo && python demo.py

Generate training and testing data

First download YFCC100M dataset.

bash download_data.sh raw_data raw_data_yfcc.tar.gz 0 8
tar -xvf raw_data_yfcc.tar.gz

Download SUN3D testing (1.1G) and training (31G) dataset if you need.

bash download_data.sh raw_sun3d_test raw_sun3d_test.tar.gz 0 2
tar -xvf raw_sun3d_test.tar.gz
bash download_data.sh raw_sun3d_train raw_sun3d_train.tar.gz 0 63
tar -xvf raw_sun3d_train.tar.gz

Then generate matches for YFCC100M and SUN3D (only testing). Here we provide scripts for SIFT, this will take a while.

cd dump_match
python extract_feature.py
python yfcc.py
python extract_feature.py --input_path=../raw_data/sun3d_test
python sun3d.py

Generate SUN3D training data if you need by following the same procedure and uncommenting corresponding lines in sun3d.py.

Test pretrained model

We provide the model trained on YFCC100M and SUN3D described in our ICCV paper. Run the test script to get results in our paper.

cd ./core 
python main.py --run_mode=test --model_path=../model/yfcc/essential/sift-2000 --res_path=../model/yfcc/essential/sift-2000/ --use_ransac=False
python main.py --run_mode=test --data_te=../data_dump/sun3d-sift-2000-test.hdf5 --model_path=../model/sun3d/essential/sift-2000 --res_path=../model/sun3d/essential/sift-2000/ --use_ransac=False

Set --use_ransac=True to get results after RANSAC post-processing.

Train model on YFCC100M

After generating dataset for YFCC100M, run the tranining script.

cd ./core 
python main.py

You can train the fundamental estimation model by setting --use_fundamental=True --geo_loss_margin=0.03 and use side information by setting --use_ratio=2 --use_mutual=2

Train with your own local feature or data

The provided models are trained using SIFT. You had better retrain the model if you want to use OANet with your own local feature, such as ContextDesc, SuperPoint and etc.

You can follow the provided example scirpts in ./dump_match to generate dataset for your own local feature or data.

Tips for training OANet: if your dataset is small and overfitting is observed, you can consider replacing the OAFilter with OAFilterBottleneck.

Here we also provide a pretrained essential matrix estimation model using ContextDesc on YFCC100M.

cd model/
wget https://research.altizure.com/data/oanet_data/contextdesc-yfcc.tar.gz
tar -xvf contextdesc-yfcc.tar.gz

To test this model, you need to generate your own data using ContextDesc and then run python main.py --run_mode=test --data_te=YOUR/OWN/CONTEXTDESC/DATA --model_path=../model/yfcc/essential/contextdesc-2000 --res_path=XX --use_ratio=2.

Application on 3D reconstructions

sample

News

  1. Together with the local feature ContextDesc, we won both the stereo and muti-view tracks at the CVPR19 Image Matching Challenge (June. 2, 2019).

  2. We also rank the third place on the Visual Localization Benchmark using ContextDesc (Aug. 30, 2019).

Acknowledgement

This code is heavily borrowed from Learned-Correspondence. If you use the part of code related to data generation, testing and evaluation, you should cite this paper and follow its license.

@inproceedings{yi2018learning,
  title={Learning to Find Good Correspondences},
  author={Kwang Moo Yi* and Eduard Trulls* and Yuki Ono and Vincent Lepetit and Mathieu Salzmann and Pascal Fua},
  booktitle={Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition},
  year={2018}
}

Changelog

2019.09.29

  • Release code for data generation.

2019.10.04

  • Release model and data for SUN3D.

2019.12.09

  • Release a general purpose model trained on GL3D-v2, which has been tested on FM-Benchmark. This model achieves 66.1/92.3/84.0/47.0 on TUM/KITTI/T&T/CPC respectively using SIFT.
  • Release model trained using ContextDesc.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].