This project is based on our SIGGRAPH 2021 paper, ROSEFusion: Random Optimization for Online DenSE Reconstruction under Fast Camera Motion .

Overview

ROSEFusion 🌹

This project is based on our SIGGRAPH 2021 paper, ROSEFusion: Random Optimization for Online DenSE Reconstruction under Fast Camera Motion .

Introduction

ROSEFsuion is proposed to tackle the difficulties in fast-motion camera tracking using random optimization with depth information only. Our method attains good quality pose tracking under fast camera motion in a realtime framerate without including loop closure or global pose optimization.

Installation

The code is based on C++ and CUDA with the support of:

  • Pangolin
  • OpenCV with CUDA (v.4.5 is required, for instance you can follow the link)
  • Eigen
  • CUDA (v.11 and above is required)

Befor building, please make sure the architecture (sm_xx and compute_xx) in the L22 of CMakeLists.txt is compatible with your own graphics card.

Our code has been tested with Nvidia GeForce RTX 2080 SUPER on Ubuntu 16.04.

[Option] Test with Docker

We have already upload a docker image with all the lib, code and data. Please download the image from the google drive.

Prepare

Make sure you have successfully installed the docker and nvidia docker. Once the environment is ready, you can using following commands to boot the docker image:

sudo docker load -i rosefusion_docker.tar 
sudo docker run -it  --gpus all jiazhao/rosefusion:v7 /bin/bash

And please check the architecture in the L22 of /home/code/ROSEFusion-main/CMakeList.txt is compatible with your own graphics card. If not, change the sm_xx and compute_xx, then rebuild the ROSEFusion.

QuickStart

All the data and configuration files are ready for using. You can find "run_example.sh" and "run_stairwell.sh" in /home/code/ROSEFusion-main/build. After running the scripts, the trajectory and reconstuciton results woulSd be generated in /home/code/rosefusion_xxx_data.

Configuration File

We use the following configuration files to make the parameters setting easier. There are four types of configuration files.

  • seq_generation_config.yaml: data information
  • camera_config.yaml: camera and image information.
  • data_config.yaml: output path, sequence file path and parameters of the volume.
  • controller_config.yaml: visualization, saving and parameters of tacking.

The seq_generation_config.yaml is only used in data preparation, and the other three types of configuration files are necessary to run the fusion part. The configuration files of many common datasets are given in [type]_config/ directory, you can change the settings to fit your own dataset.

Data Preparation

The details of data prepartiation can be found in src/seq_gen.cpp. By using the seq_generation_config.yaml introduced above, you can run the program:

./seq_gen  sequence_information.yaml

Once finished, there will be a .seq file containing all the information of the sequence.

Particle Swarm Template

We share the same pre-sampled PST as we used in our paper. Each PST is saved as an N×6 image and the N represents the number of particles. You can find the .tiff images in PST dicrectory, and please prelace the PST path in controller_config.yaml with your own path.

Running

To run the fusion code, you need to provide the camera_config.yaml, data_config.yaml and controller_config.yaml. We already share configuration files of many common datasets in ./camera_config, ./data_config, /controller_config. All the parameters of configuration can be modified as you want. With all the preparation done, you can run the code below:

./ROSEFsuion  your_camera_config.yaml your_data_config.yaml your_controller_config.yaml

For a quick start, you can download and use a small size synthesis seq file and related configuration files. Here is a preview.

FastCaMo Dataset

We present the Fast Camera Motion dataset, which contains both synthesis and real captured sequences. You are welcome to download the sequences and take a try.

FastCaMo-Synth

With 10 diverse room-scale scenes from Replica Dataset, we render the color images and depth maps along the synthesis trajectories. The raw sequences are provided in FastCaMo-synth-data(raw).zip, and we also provide the FastCaMo-synth-data(noise).zip with synthesis noise. We use the same noise model as simkinect. For evaluation, you can download the ground truth trajectories.

FastCaMo-Real

There are 12 real captured RGB-D sequences with fast camera motions are released. Each sequence is recorded in a challenging scene like gym or stairwell by using Azure Kinect DK. We offer a full and dense reconstruction scanned using the high-end laser scanner, serving as ground truth. However, The original file is extremely large, we will share the dense reconstruction in another platform or release the sub-sampled version only.

Citation

If you find our work useful in your research, please consider citing:

@article {zhang_sig21,
    title = {ROSEFusion: Random Optimization for Online Dense Reconstruction under Fast Camera Motion},
    author = {Jiazhao Zhang and Chenyang Zhu and Lintao Zheng and Kai Xu},
    journal = {ACM Transactions on Graphics (SIGGRAPH 2021)},
    volume = {40},
    number = {4},
    year = {2021}
}

Acknowledgments

Our code is inspired by KinectFusionLib.

This is an open-source version of ROSEFusion, some functions have been rewritten to avoid certain license. It would not be expected to reproduce the result exactly, but the result is almost the same.

License

The source code is released under GPLv3 license.

Contact

If you have any questions, feel free to email Jiazhao Zhang at [email protected].

Comments
  • Visualization issues

    Visualization issues

    I downloaded the image that you uploaded in docker. And downloaded the small size synthesis example than you uploaded. But there was no visual interface when i run ./ROSEFsuion example_camera_config.yaml example_data_config.yaml example_controller_config.yaml. The program did not crash and 'example.txt' generated successfully . What caused the visual interface not to appear?Whan should i do? thanks! image

    opened by Darker-zq 14
  • Frame could not be processed when running example

    Frame could not be processed when running example

    Hello, I'm using a GTX 1050 Ti (with CUDA 11.6) to run the program with the example data set. I have updated CMakeLists.txt accordingly and changed the PST path in the config file. But I still got the following output when running:

    n:0
    n:1
    Frame could not be processed
    n:2
    Frame could not be processed
    n:3
    Frame could not be processed
    

    The window displayed the frames correctly, but the output PLY does not contain any vertex.

    bug good first issue 
    opened by wuqs-net 7
  • Frame could not be processed

    Frame could not be processed

    when I run “ ./build/RoseFusion ./camera_config/FastCaMo_camera.yaml ./dataset_config/fastCaMo-Synth/raw/apartment_1_raw.yaml ./controller_config/controller_terminal.yaml ”

    it mentioned that Frame could not be processed.

    Here is my config:

    FastCaMo_camera.yaml: Camera.fx: 320.0 Camera.fy: 320.0 Camera.cx: 319.5 Camera.cy: 239.5 Camera.width: 640 Camera.height: 480

    apartment_1_raw.yaml name: apartment_1_raw seq_path: /home/kino/mnt/FastCaMo-synth-data_raw/apartment_1/apartment_1.seq result_path: /home/kino/project/3D-Reconstruction/ROSEFusion/result/ voxel_size: 20 truncated_size: 60 voxel_x: 712 voxel_y: 712 voxel_z: 712 init_x: 0 init_y: 0 init_z: 1000

    controller_terminal.yaml: render_surface: 1 PST_path: "/home/kino/project/3D-Reconstruction/ROSEFusion/PST/" save_trajectory: 1 save_scene: 1 max_iteration: 20 scaling_coefficient1: 0.18 scaling_coefficient2: 0.09 init_fitness: 0.5 momentum: 0.9 scaling_inherit_directly: 0

    apartment_1_seq.yaml: seq_name: apartment_1 association_file: /home/kino/mnt/FastCaMo-synth-data_raw/apartment_1/associations.txt output_path: /home/kino/mnt/FastCaMo-synth-data_raw/apartment_1/ source_path: /home/kino/mnt/FastCaMo-synth-data_raw/apartment_1/ img_height: 480 img_width: 640 depth_ratio: 1000 color_to_depth: 1

    opened by cybaol 7
  • Frame could not be processed when running example

    Frame could not be processed when running example

    Hello, when I was running the program with the example data set, that Frame could not be processed. The window could display the frames correctly, but the output PlyFile does not contain any vertex.

    My environment is as follow: GPU: GTX 1080 (I have changed the sm_xx and compute_xx to fit my graphics card) Ubuntu 20.04 CUDA 11.4 OpenCV 4.5.5 Eigen 3.3.9 Pangolin 0.6

    opened by wangm-buaa 6
  • Frame could not be processed

    Frame could not be processed

    I downloaded the seq file and related configuration files,but it could run the programe with a small size synthesis seq file and related configuration files in github. The erro information shows "Frame could not be processed" and every frame all like this,so I don't know how to fit the bug.

    opened by Mr-Kyrie 5
  • Could you share FastCaMo-Real Ground truth scan in Baidu cloud?

    Could you share FastCaMo-Real Ground truth scan in Baidu cloud?

    Hi, @jzhzhang. Thanks for your amazing work. I notice the ground truth of FastCaMo-Real is missing cause the original scan is too large to upload to google cloud. Could you share FastCaMo-Real Ground truth scan in Baidu cloud? It will help all Chinese users and surely increases the impact of your work. Thanks,

    opened by cdb0y511 4
  • Reconstruction range

    Reconstruction range

    When I run ROSEFusion in a room, suddenly the 3D shaded map in the Panglin window disappeared, like this 2022-03-03 22-29-23屏幕截图 And the console warning "Frame could not be processed", 2022-03-03 22-34-35屏幕截图 WHY??? I guess because of the camera is out of the reconstruction range. What is the unit of the "voxel_size" in dateset_config?Millimeter?

    opened by Goughhhhhh 4
  • Do I need to recreate PST for my own data?

    Do I need to recreate PST for my own data?

    In the paper you mentioned:

    PST is a set of particles pre-sampled uniformly within the unit sphere in the 6D space of camera pose. Through moving and rescaling the pre-sampled PST guided by swarm intelligence, our method is able to drive tens of thousands of particles to locate and cover a good local optimum extremely fast and robustly.

    It seems that the .tiff files are just a uniform sampling of poses in 6D space. But in readme.md you said:

    You can find the .tiff images in PST dicrectory, and please replace the PST path in controller_config.yaml with your own path.

    Shoud I create my own PST? Thanks.

    opened by pandahops1 4
  • use only depth images

    use only depth images

    is there a way to modify the code so that only depth images are used? it seems FrameData has both depth and rgb image as input so it seems kinda hard to modify it. also i tried changing all the depth images to completely black arrays but the result was worse.

    opened by pandahops1 3
  • 3D reconstruction process visualization issue

    3D reconstruction process visualization issue

    There was no 3D reconstruction process visual interface(the interface as shown on the right side of the figure) when I run ./ROSEFsuion example_camera_config.yaml example_data_config.yaml example_controller_config.yaml. But the color image, the depth image and shaded image(the interfaces as shown on the left side of the figure) are displayed, and *.txt and *.ply are generated successfully . How can I display the 3D reconstruction process visual interface? What should I do? Thanks! 2021-12-07 14-59-52屏幕截图

    opened by Goughhhhhh 3
  • Data Preparation about  ./seq_gen  <.yaml>

    Data Preparation about ./seq_gen <.yaml>

    I'm sorry to disturb you. An error occurred when I ran ./seq_gen. I recorded my own data by using Azure Kinect DK.but these data cannot be converted into .seq format files. The error is as follows: image

    My data as follows:

    image

    color

    image

    depth

    image

    sequence_information.yaml

    image

    associations.txt image

    I could convert the data that you provided to .seq format successfully . How can I solve it, thank you very much.

    opened by Darker-zq 2
Owner
null
MonoRec: Semi-Supervised Dense Reconstruction in Dynamic Environments from a Single Moving Camera

MonoRec: Semi-Supervised Dense Reconstruction in Dynamic Environments from a Single Moving Camera

Felix Wimbauer 494 Jan 6, 2023
PyTorch implementations for our SIGGRAPH 2021 paper: Editable Free-viewpoint Video Using a Layered Neural Representation.

st-nerf We provide PyTorch implementations for our paper: Editable Free-viewpoint Video Using a Layered Neural Representation SIGGRAPH 2021 Jiakai Zha

Diplodocus 258 Jan 2, 2023
[TIP 2021] SADRNet: Self-Aligned Dual Face Regression Networks for Robust 3D Dense Face Alignment and Reconstruction

SADRNet Paper link: SADRNet: Self-Aligned Dual Face Regression Networks for Robust 3D Dense Face Alignment and Reconstruction Requirements python

Multimedia Computing Group, Nanjing University 99 Dec 30, 2022
Source code for CVPR 2021 paper "Riggable 3D Face Reconstruction via In-Network Optimization"

Riggable 3D Face Reconstruction via In-Network Optimization Source code for CVPR 2021 paper "Riggable 3D Face Reconstruction via In-Network Optimizati

null 130 Jan 2, 2023
Convolutional neural network web app trained to track our infant’s sleep schedule using our Google Nest camera.

Machine Learning Sleep Schedule Tracker What is it? Convolutional neural network web app trained to track our infant’s sleep schedule using our Google

g-parki 7 Jul 15, 2022
Implementation for our ICCV 2021 paper: Dual-Camera Super-Resolution with Aligned Attention Modules

DCSR: Dual Camera Super-Resolution Implementation for our ICCV 2021 oral paper: Dual-Camera Super-Resolution with Aligned Attention Modules paper | pr

Tengfei Wang 110 Dec 20, 2022
Implementation for our ICCV 2021 paper: Dual-Camera Super-Resolution with Aligned Attention Modules

DCSR: Dual Camera Super-Resolution Implementation for our ICCV 2021 oral paper: Dual-Camera Super-Resolution with Aligned Attention Modules paper | pr

Tengfei Wang 110 Dec 20, 2022
Detection of drones using their thermal signatures from thermal camera through YOLO-V3 based CNN with modifications to encapsulate drone motion

Drone Detection using Thermal Signature This repository highlights the work for night-time drone detection using a using an Optris PI Lightweight ther

Chong Yu Quan 6 Dec 31, 2022
This repository contains the code for the paper "Hierarchical Motion Understanding via Motion Programs"

Hierarchical Motion Understanding via Motion Programs (CVPR 2021) This repository contains the official implementation of: Hierarchical Motion Underst

Sumith Kulal 40 Dec 5, 2022
The official implementation code of "PlantStereo: A Stereo Matching Benchmark for Plant Surface Dense Reconstruction."

PlantStereo This is the official implementation code for the paper "PlantStereo: A Stereo Matching Benchmark for Plant Surface Dense Reconstruction".

Wang Qingyu 14 Nov 28, 2022
PyTorch implementation for our NeurIPS 2021 Spotlight paper "Long Short-Term Transformer for Online Action Detection".

Long Short-Term Transformer for Online Action Detection Introduction This is a PyTorch implementation for our NeurIPS 2021 Spotlight paper "Long Short

null 77 Dec 16, 2022
Camera-caps - Examine the camera capabilities for V4l2 cameras

camera-caps This is a graphical user interface over the v4l2-ctl command line to

Jetsonhacks 25 Dec 26, 2022
Pytorch implementation of our paper under review — Lottery Jackpots Exist in Pre-trained Models

Lottery Jackpots Exist in Pre-trained Models (Paper Link) Requirements Python >= 3.7.4 Pytorch >= 1.6.1 Torchvision >= 0.4.1 Reproduce the Experiment

Yuxin Zhang 27 Jun 28, 2022
Official implementation of our paper "LLA: Loss-aware Label Assignment for Dense Pedestrian Detection" in Pytorch.

LLA: Loss-aware Label Assignment for Dense Pedestrian Detection This project provides an implementation for "LLA: Loss-aware Label Assignment for Dens

null 35 Dec 6, 2022
Supplementary code for SIGGRAPH 2021 paper: Discovering Diverse Athletic Jumping Strategies

SIGGRAPH 2021: Discovering Diverse Athletic Jumping Strategies project page paper demo video Prerequisites Important Notes We suspect there are bugs i

null 54 Dec 6, 2022
Code for the SIGGRAPH 2021 paper "Consistent Depth of Moving Objects in Video".

Consistent Depth of Moving Objects in Video This repository contains training code for the SIGGRAPH 2021 paper "Consistent Depth of Moving Objects in

Google 203 Jan 5, 2023
"MST++: Multi-stage Spectral-wise Transformer for Efficient Spectral Reconstruction" (CVPRW 2022) & (Winner of NTIRE 2022 Challenge on Spectral Reconstruction from RGB)

MST++: Multi-stage Spectral-wise Transformer for Efficient Spectral Reconstruction (CVPRW 2022) Yuanhao Cai, Jing Lin, Zudi Lin, Haoqian Wang, Yulun Z

Yuanhao Cai 274 Jan 5, 2023