Poplar implementation of "Bundle Adjustment on a Graph Processor" (CVPR 2020)

Overview

Poplar Implementation of Bundle Adjustment using Gaussian Belief Propagation on Graphcore's IPU

Implementation of CVPR 2020 paper: Bundle Adjustment on a Graph Processor

Find the Poplar SDK documentation here. Code has been tested on Poplar SDK 1.2.

Find the corresponding python implementation here.

Running Bundle Adjustment

cd ba
make ba
./ba --bal_file ../sequences/fr1xyz.txt

For more options

./ba --help

Running SLAM

cd ba
make slam
./slam --bal_file ../sequences/fr2robot2.txt 

Citation

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

@InProceedings{OrtizCVPR2020,
author = {Ortiz, Joseph and Pupilli, Mark and Leutenegger, Stefan and Davison, Andrew J.},
title = {Bundle Adjustment on a Graph Processor},
booktitle = {{Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR)}},
year = {2020}
}
You might also like...
《Where am I looking at? Joint Location and Orientation Estimation by Cross-View Matching》(CVPR 2020)
《Where am I looking at? Joint Location and Orientation Estimation by Cross-View Matching》(CVPR 2020)

This contains the codes for cross-view geo-localization method described in: Where am I looking at? Joint Location and Orientation Estimation by Cross-View Matching, CVPR2020.

Provided is code that demonstrates the training and evaluation of the work presented in the paper:
Provided is code that demonstrates the training and evaluation of the work presented in the paper: "On the Detection of Digital Face Manipulation" published in CVPR 2020.

FFD Source Code Provided is code that demonstrates the training and evaluation of the work presented in the paper: "On the Detection of Digital Face M

 From Fidelity to Perceptual Quality: A Semi-Supervised Approach for Low-Light Image Enhancement (CVPR'2020)
From Fidelity to Perceptual Quality: A Semi-Supervised Approach for Low-Light Image Enhancement (CVPR'2020)

Under-exposure introduces a series of visual degradation, i.e. decreased visibility, intensive noise, and biased color, etc. To address these problems, we propose a novel semi-supervised learning approach for low-light image enhancement.

Pixel Consensus Voting for Panoptic Segmentation (CVPR 2020)

Implementation for Pixel Consensus Voting (CVPR 2020). This codebase contains the essential ingredients of PCV, including various spatial discretizati

Official code for
Official code for "End-to-End Optimization of Scene Layout" -- including VAE, Diff Render, SPADE for colorization (CVPR 2020 Oral)

End-to-End Optimization of Scene Layout Code release for: End-to-End Optimization of Scene Layout CVPR 2020 (Oral) Project site, Bibtex For help conta

Official PyTorch code for CVPR 2020 paper
Official PyTorch code for CVPR 2020 paper "Deep Active Learning for Biased Datasets via Fisher Kernel Self-Supervision"

Deep Active Learning for Biased Datasets via Fisher Kernel Self-Supervision https://arxiv.org/abs/2003.00393 Abstract Active learning (AL) aims to min

Baseline model for
Baseline model for "GraspNet-1Billion: A Large-Scale Benchmark for General Object Grasping" (CVPR 2020)

GraspNet Baseline Baseline model for "GraspNet-1Billion: A Large-Scale Benchmark for General Object Grasping" (CVPR 2020). [paper] [dataset] [API] [do

[CVPR 2020] Interpreting the Latent Space of GANs for Semantic Face Editing
[CVPR 2020] Interpreting the Latent Space of GANs for Semantic Face Editing

InterFaceGAN - Interpreting the Latent Space of GANs for Semantic Face Editing Figure: High-quality facial attributes editing results with InterFaceGA

Single-Stage 6D Object Pose Estimation, CVPR 2020
Single-Stage 6D Object Pose Estimation, CVPR 2020

Overview This repository contains the code for the paper Single-Stage 6D Object Pose Estimation. Yinlin Hu, Pascal Fua, Wei Wang and Mathieu Salzmann.

Comments
  • Update code option

    Update code option

    @joeaortiz - first of all, thanks for sharing the source code for your paper!

    I was just trying your code on a Graphcore Pod64 IPU server to see the effectiveness of IPU for BA / SLAM purposes.

    Following your instructions, I've got the error shown below:

    poplaruser1-3@ipu-pod64-mgmt:~/ba/gbp-poplar/ba$ ./ba --bal_file ../sequences/fr1xyz.txt 
    Completed loading data!
    
    Bundle Adjustment
    
    Number of keyframe nodes in the graph: 42
    Number of landmark nodes in the graph: 2194
    Number of edges in the graph: 12908
    
    Number of IPUs: 1
    Number of keyframe / landmark / factor nodes per tile: 1 / 2 / 11
    Number of tiles used by camera / landmark / factor nodes / total : 42 / 1097 / 1174 / 1216
    
    Attaching to IPU device...
    Attached to device: 0
    terminate called after throwing an instance of 'poplar::invalid_option'
      what(): Unrecognised option 'target.workerStackSizeInBytes'
    Aborted
    

    When I looked up the target.workerStackSizeInBytes option, I've got debug.workerStackSizeInBytes instead from the official document.

    image

    So I replaced the code with debug.workerStackSizeInBytes, then saw the code running.

    I'm not exactly sure why this works - since the debug.workerStackSizeInBytes options have never been changed from its older versions. And I'm also not too sure about what the original intent of the target.workerStackSizeInBytes is either, since I am very inexperienced in Poplar.

    Please take a look at the changes, and let me know if these changes are appropriate :smile_cat:

    opened by changh95 1
Owner
Joe Ortiz
Computer Vision PhD Student at Imperial College London | MPhys from University of Oxford | https://joeaortiz.github.io/
Joe Ortiz
Unofficial implementation of "TTNet: Real-time temporal and spatial video analysis of table tennis" (CVPR 2020)

TTNet-Pytorch The implementation for the paper "TTNet: Real-time temporal and spatial video analysis of table tennis" An introduction of the project c

Nguyen Mau Dung 438 Dec 29, 2022
The official implementation of Equalization Loss v1 & v2 (CVPR 2020, 2021) based on MMDetection.

The Equalization Losses for Long-tailed Object Detection and Instance Segmentation This repo is official implementation CVPR 2021 paper: Equalization

Jingru Tan 129 Dec 16, 2022
Implementation of CVPR 2020 Dual Super-Resolution Learning for Semantic Segmentation

Dual super-resolution learning for semantic segmentation 2021-01-02 Subpixel Update Happy new year! The 2020-12-29 update of SISR with subpixel conv p

Sam 79 Nov 24, 2022
PyTorch implementation of CVPR 2020 paper (Reference-Based Sketch Image Colorization using Augmented-Self Reference and Dense Semantic Correspondence) and pre-trained model on ImageNet dataset

Reference-Based-Sketch-Image-Colorization-ImageNet This is a PyTorch implementation of CVPR 2020 paper (Reference-Based Sketch Image Colorization usin

Yuzhi ZHAO 11 Jul 28, 2022
UDP++ (ECCVW 2020 Oral), (Winner of COCO 2020 Keypoint Challenge).

UDP-Pose This is the pytorch implementation for UDP++, which won the Fisrt place in COCO Keypoint Challenge at ECCV 2020 Workshop. Top-Down Results on

null 20 Jul 29, 2022
Learning to Simulate Dynamic Environments with GameGAN (CVPR 2020)

Learning to Simulate Dynamic Environments with GameGAN PyTorch code for GameGAN Learning to Simulate Dynamic Environments with GameGAN Seung Wook Kim,

null 199 Dec 26, 2022
Code accompanying "Dynamic Neural Relational Inference" from CVPR 2020

Code accompanying "Dynamic Neural Relational Inference" This codebase accompanies the paper "Dynamic Neural Relational Inference" from CVPR 2020. This

Colin Graber 48 Dec 23, 2022
git《Investigating Loss Functions for Extreme Super-Resolution》(CVPR 2020) GitHub:

Investigating Loss Functions for Extreme Super-Resolution NTIRE 2020 Perceptual Extreme Super-Resolution Submission. Our method ranked first and secon

Sejong Yang 0 Oct 17, 2022
Block-wisely Supervised Neural Architecture Search with Knowledge Distillation (CVPR 2020)

DNA This repository provides the code of our paper: Blockwisely Supervised Neural Architecture Search with Knowledge Distillation. Illustration of DNA

Changlin Li 215 Dec 19, 2022
《Train in Germany, Test in The USA: Making 3D Object Detectors Generalize》(CVPR 2020)

Train in Germany, Test in The USA: Making 3D Object Detectors Generalize This paper has been accpeted by Conference on Computer Vision and Pattern Rec

Xiangyu Chen 101 Jan 2, 2023