All Projects → martinruenz → Co Fusion

martinruenz / Co Fusion

Licence: other
Co-Fusion: Real-time Segmentation, Tracking and Fusion of Multiple Objects

Projects that are alternatives of or similar to Co Fusion

Maskfusion
MaskFusion: Real-Time Recognition, Tracking and Reconstruction of Multiple Moving Objects
Stars: ✭ 404 (+1%)
Mutual labels:  slam, fusion, segmentation, reconstruction, rgbd, tracking
Recent slam research
Track Advancement of SLAM 跟踪SLAM前沿动态【2021 version】
Stars: ✭ 2,387 (+496.75%)
Mutual labels:  slam, fusion, reconstruction
Cilantro
A lean C++ library for working with point cloud data
Stars: ✭ 577 (+44.25%)
Mutual labels:  segmentation, reconstruction, rgbd
rgbd ptam
Python implementation of RGBD-PTAM algorithm
Stars: ✭ 65 (-83.75%)
Mutual labels:  slam, rgbd
Visual Gps Slam
This is a repo for my master thesis research about the Fusion of Visual SLAM and GPS. It contains the research paper, code and other interesting data.
Stars: ✭ 175 (-56.25%)
Mutual labels:  slam, fusion
Kimera Vio Ros
ROS wrapper for Kimera-VIO
Stars: ✭ 182 (-54.5%)
Mutual labels:  slam, reconstruction
Kintinuous
Real-time large scale dense visual SLAM system
Stars: ✭ 740 (+85%)
Mutual labels:  slam, reconstruction
Awesome-Vision-Transformer-Collection
Variants of Vision Transformer and its downstream tasks
Stars: ✭ 124 (-69%)
Mutual labels:  tracking, segmentation
dvo python
Coding dense visual odometry in a little more than a night (yikes)!
Stars: ✭ 40 (-90%)
Mutual labels:  slam, rgbd
pcan
Prototypical Cross-Attention Networks for Multiple Object Tracking and Segmentation, NeurIPS 2021 Spotlight
Stars: ✭ 294 (-26.5%)
Mutual labels:  tracking, segmentation
DeT
Dataset and Code for the paper "DepthTrack: Unveiling the Power of RGBD Tracking" (ICCV2021), and "Depth-only Object Tracking" (BMVC2021)
Stars: ✭ 39 (-90.25%)
Mutual labels:  tracking, rgbd
Awesome Visual Slam
📚 The list of vision-based SLAM / Visual Odometry open source, blogs, and papers
Stars: ✭ 1,336 (+234%)
Mutual labels:  slam, reconstruction
Elasticfusion
Real-time dense visual SLAM system
Stars: ✭ 1,298 (+224.5%)
Mutual labels:  slam, reconstruction
Kimera Vio
Visual Inertial Odometry with SLAM capabilities and 3D Mesh generation.
Stars: ✭ 741 (+85.25%)
Mutual labels:  slam, reconstruction
pedx
Python tools for working with PedX dataset.
Stars: ✭ 26 (-93.5%)
Mutual labels:  tracking, segmentation
staticfusion
StaticFusion
Stars: ✭ 107 (-73.25%)
Mutual labels:  slam, rgbd
RGB-D-SLAM
Work in Progress. A SLAM implementation based on plane and superquadric tracking.
Stars: ✭ 23 (-94.25%)
Mutual labels:  slam, rgbd
Jpdaf tracking
A tracker based on joint probabilistic data association filtering.
Stars: ✭ 107 (-73.25%)
Mutual labels:  fusion, tracking
Sipmask
SipMask: Spatial Information Preservation for Fast Image and Video Instance Segmentation (ECCV2020)
Stars: ✭ 255 (-36.25%)
Mutual labels:  segmentation, tracking
Dynamic ORB SLAM2
Visual SLAM system that can identify and exclude dynamic objects.
Stars: ✭ 89 (-77.75%)
Mutual labels:  segmentation, slam

Co-Fusion

This repository contains Co-Fusion, a dense SLAM system that takes a live stream of RGB-D images as input and segments the scene into different objects.

Crucially, we use a multiple model fitting approach where each object can move independently from the background and still be effectively tracked and its shape fused over time using only the information from pixels associated with that object label. Previous attempts to deal with dynamic scenes have typically considered moving regions as outliers that are of no interest to the robot, and consequently do not model their shape or track their motion over time. In contrast, we enable the robot to maintain 3D models for each of the segmented objects and to improve them over time through fusion. As a result, our system has the benefit to enable a robot to maintain a scene description at the object level which has the potential to allow interactions with its working environment; even in the case of dynamic scenes.

To run Co-Fusion in real-time, you have to use our approach based no motion cues. If you prefer to use semantic cues for segmentation, please pre-process the segmentation in advance and feed the resulting segmentation masks into Co-Fusion.

More information and the paper can be found here.

If you would like to see a short video comparing ElasticFusion and Co-Fusion, click on the following image: Figure of Co-Fusion

Publication

Please cite this publication, when using Co-Fusion (bibtex can be found on project webpage):

  • Co-Fusion: Real-time Segmentation, Tracking and Fusion of Multiple Objects, Martin Rünz and Lourdes Agapito, 2017 IEEE International Conference on Robotics and Automation (ICRA)

Building Co-Fusion

The script Scripts/install.sh shows step-by-step how Co-Fusion is build. A python-based install script is also available, see Scripts\install.py.

Dataset and evaluation tools

Tools

Synthetic sequences:

Real (Asus Xtion) sequences, in klg format:

Hardware

In order to run Co-Fusion smoothly, you need a fast GPU with enough memory to store multiple models simultaneously. We used an Nvidia TitanX for most experiments, but also successfully tested Co-Fusion on a laptop computer with an Nvidia GeForce™ GTX 960M. If your GPU memory is limited, the COFUSION_NUM_SURFELS CMake option can help reduce the memory footprint per model. While the tracking stage of Co-Fusion calls for a fast GPU, the motion based segmentation performance depends on the CPU and accordingly, having a nice processor helps as well.

Reformatting code:

The code-formatting rules for this project are defined .clang-format. Run:

clang-format -i -style=file Core/**/*.cpp Core/**/*.h Core/**/*.hpp GUI/**/*.cpp GUI/**/*.h GUI/**/*.hpp

ElasticFusion

The overall architecture and terminal-interface of Co-Fusion is based on ElasticFusion and the ElasticFusion readme file contains further useful information.

New command line parameters (see source-file)

  • -run: Run dataset immediately (otherwise start paused).
  • -static: Disable multi-model fusion.
  • -confO: Initial surfel confidence threshold for objects (default 0.01).
  • -confG: Initial surfel confidence threshold for scene (default 10.00).
  • -segMinNew: Min size of new object segments (relative to image size)
  • -segMaxNew: Max size of new object segments (relative to image size)
  • -offset: Offset between creating models
  • -keep: Keep all models (even bad, deactivated)
  • -dir: Processes a log-directory (Default: Color####.png + Depth####.exr [+ Mask####.png])
  • -depthdir: Separate depth directory (==dir if not provided)
  • -maskdir: Separate mask directory (==dir if not provided)
  • -exportdir: Export results to this directory, otherwise not exported
  • -basedir: Treat the above paths relative to this one (like depthdir = basedir + depthdir, default "")
  • -colorprefix: Specify prefix of color files (=="" or =="Color" if not provided)
  • -depthprefix: Specify prefix of depth files (=="" or =="Depth" if not provided)
  • -maskprefix: Specify prefix of mask files (=="" or =="Mask" if not provided)
  • -indexW: Number of digits of the indexes (==4 if not provided)
  • -nm: Ignore Mask####.png images as soon as the provided frame was reached.
  • -es: Export segmentation
  • -ev: Export viewport images
  • -el: Export label images
  • -em: Export models (point-cloud)
  • -en: Export normal images
  • -ep: Export poses after finishing run (just before quitting if '-q')
  • -or: Outlier rejection strength (default 3).

Acknowledgements

This work has been supported by the SecondHands project, funded from the EU Horizon 2020 Research and Innovation programme under grant agreement No 643950.

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].