The official implementation of our CVPR 2021 paper - Hybrid Rotation Averaging: A Fast and Robust Rotation Averaging Approach

Overview

Graph Optimizer   Build Status License

This repo contains the official implementation of our CVPR 2021 paper - Hybrid Rotation Averaging: A Fast and Robust Rotation Averaging Approach. This library contains not only rotation averaging solvers, but also some popular methods in 3D vision, such as translation averaging, clustering, etc. The library is designed to deal with large scale optimization problems, and is easy to extend. Feel free to contribute to this project.

1. Features

  • A library which solves the optimization problems in 3D vision.
  • A template-based graph module which is easy to extend and to manipulate graph structures.
  • Rotation averaging solvers achieves state-of-the-art.
  • Translation averaging solvers (LUD, BATA).
  • Clustering methods (coming soon).
  • Bundle adjustment (needs more time to prepare).

2. Compilation

The library is compiled and tested on Ubuntu 16.04. We would like to support more platforms in the future.

2.1 Basic Requirements

This project requires Eigen 3.2. And Ceres 1.14.0 is currently used for stable conversions between different rotation representations (I'm managing on removing this dependency). You can install all the dependencies through the ./scripts/dependencies.sh.

bash ./scripts/dependencies.sh

2.3 Build GraphOptim

cd GraphOptim
mkdir build && cd build
cmake ..
make -j8

3. Running Examples

3.1 Rotation Averaging

./build/bin/rotation_estimator --g2o_filename=../../data/synthetic/20_2.g2o

You can also try other g2o files.

3.2 Translation Averaging

The translation averaging methods are decoupled from another project, and are not fully tested.

./build/bin/position_estimator --g2o_filename=../../data/synthetic/20_2.g2o

Contact

If you have any questions, contact me by [email protected].

You might also like...
PyTorch implementation of SCAFFOLD (Stochastic Controlled Averaging for Federated Learning, ICML 2020).

Scaffold-Federated-Learning PyTorch implementation of SCAFFOLD (Stochastic Controlled Averaging for Federated Learning, ICML 2020). Environment numpy=

Official PyTorch implemention of our paper "Learning to Rectify for Robust Learning with Noisy Labels".

WarPI The official PyTorch implemention of our paper "Learning to Rectify for Robust Learning with Noisy Labels". Run python main.py --corruption_type

Code for the paper One Thing One Click: A Self-Training Approach for Weakly Supervised 3D Semantic Segmentation, CVPR 2021.

One Thing One Click One Thing One Click: A Self-Training Approach for Weakly Supervised 3D Semantic Segmentation (CVPR2021) Code for the paper One Thi

[CVPR 2022] CoTTA Code for our CVPR 2022 paper Continual Test-Time Domain Adaptation

CoTTA Code for our CVPR 2022 paper Continual Test-Time Domain Adaptation Prerequisite Please create and activate the following conda envrionment. To r

This repository contains the entire code for our work "Two-Timescale End-to-End Learning for Channel Acquisition and Hybrid Precoding"

Two-Timescale-DNN Two-Timescale End-to-End Learning for Channel Acquisition and Hybrid Precoding This repository contains the entire code for our work

Official Pytorch implementation of
Official Pytorch implementation of "Learning to Estimate Robust 3D Human Mesh from In-the-Wild Crowded Scenes", CVPR 2022

Learning to Estimate Robust 3D Human Mesh from In-the-Wild Crowded Scenes / 3DCrowdNet News đź’Ş 3DCrowdNet achieves the state-of-the-art accuracy on 3D

Code for the CVPR 2021 paper: Understanding Failures of Deep Networks via Robust Feature Extraction
Code for the CVPR 2021 paper: Understanding Failures of Deep Networks via Robust Feature Extraction

Welcome to Barlow Barlow is a tool for identifying the failure modes for a given neural network. To achieve this, Barlow first creates a group of imag

Python and C++ implementation of
Python and C++ implementation of "MarkerPose: Robust real-time planar target tracking for accurate stereo pose estimation". Accepted at LXCV @ CVPR 2021.

MarkerPose: Robust real-time planar target tracking for accurate stereo pose estimation This is a PyTorch and LibTorch implementation of MarkerPose: a

[CVPR 2021] Rethinking Text Segmentation: A Novel Dataset and A Text-Specific Refinement Approach
[CVPR 2021] Rethinking Text Segmentation: A Novel Dataset and A Text-Specific Refinement Approach

Rethinking Text Segmentation: A Novel Dataset and A Text-Specific Refinement Approach This is the repo to host the dataset TextSeg and code for TexRNe

Comments
  • Inputs of Translation Averaging Need Absolute Rotation of Each View and Relative Pose of Piar Views

    Inputs of Translation Averaging Need Absolute Rotation of Each View and Relative Pose of Piar Views

    Hi, Thanks your great work! There is a bug in your code: Description: Inputs of Translation Averaging Need Absolute Rotation of Each View and Relative Pose of View Pair , But in examples/position_estimator.cc: 56 view_graph.ReadG2OFile(g2o_filename); you only convey relative rotation and relative translation.

    So, the following codes need to be corrected:

    edge.cc:
    replace : // node_t src = kInvalidNodeId; // node_t dst = kInvalidNodeId; with: ImageNode src; ImageNode dst; and correct construction fun correspondingly, view_graph.cc: ViewGraph::ReadG2OFile, add absolute rotation to edge.src and edge.dst. graph.inl: correct AddEdge and AddNodes etc. and some test functions.

    opened by qingchenwuhou 2
  • rotation_estimator  std::bad_alloc

    rotation_estimator std::bad_alloc

    @AIBluefisher HI,when I run the rotation_estimator ,the error like this: ./build/bin/rotation_estimator --g2o_filename=./data/synthetic/20_2.g2o I0120 19:03:26.052269 18845 hybrid_rotation_estimator.cc:94] Estimating Rotations Using LagrangeDual terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc Aborted (core dumped) also when I run the ./lagrange_dual_rotation_estimator_test dual_rotation_estimator_test Running main() from gtest_main.cc [==========] Running 15 tests from 1 test case. [----------] Global test environment set-up. [----------] 15 tests from LagrangeDualRotationAveragingTest [ RUN ] LagrangeDualRotationAveragingTest.smallTestNoNoise WARNING: Logging before InitGoogleLogging() is written to STDERR I0120 19:07:51.680837 19045 lagrange_dual_rotation_estimator_test.cc:88] Estimating Global Orientations using Lagrange Dual... free(): invalid pointer Aborted (core dumped)

    opened by coder12333444 1
  • OpenMVG related code in this repo

    OpenMVG related code in this repo

    Thank you for releasing the code related to your paper.

    I noticed that there are multiple files that are coming from OpenMVG code repository.

    | Topic | This Repo | OpenMVG | |-|-|-| | SVG | https://github.com/AIBluefisher/GraphOptim/blob/main/src/graph/svg_drawer.h | https://github.com/openMVG/openMVG/blob/develop/src/third_party/vectorGraphics/svgDrawer.hpp | |triplet| https://github.com/AIBluefisher/GraphOptim/blob/main/src/graph/triplet_extractor.h| https://github.com/openMVG/openMVG/blob/develop/src/openMVG/graph/triplet_finder.hpp | |ColorGradient|https://github.com/AIBluefisher/GraphOptim/blob/main/src/graph/color_gradient.h|https://github.com/openMVG/openMVG/blob/develop/src/openMVG/graphics/color_gradient.hpp| |l1 solver|https://github.com/AIBluefisher/GraphOptim/blob/main/src/solver/l1_solver.h|https://github.com/openMVG/openMVG/blob/develop/src/openMVG/numeric/l1_solver_admm.hpp| ...

    There are also other files that have the same issue https://github.com/AIBluefisher/GraphOptim/blob/main/src/util/alignment.h ...

    There is also code from other repositories like THeiaSfM here https://github.com/sweeneychris/TheiaSfM/blob/master/src/theia/sfm/global_pose_estimation/least_unsquared_deviation_position_estimator.h https://github.com/AIBluefisher/GraphOptim/blob/main/src/translation_averaging/lud_position_estimator.h

    Please keep the initial copyright notice and respect the work that has been done by the open-source community before you. Changing the name of the file is not enough to claim ownership of it.

    I appreciate that you see the direct value of OpenMVG code and are leveraging it for other work, but the opensource community can thrive better if we support each other, and keep initial copyrights and licenses in the file we are reusing.

    cc @laurentkneip

    opened by pmoulon 1
Owner
Chenyu
Not a coder!
Chenyu
Hybrid CenterNet - Hybrid-supervised object detection / Weakly semi-supervised object detection

Hybrid-Supervised Object Detection System Object detection system trained by hybrid-supervision/weakly semi-supervision (HSOD/WSSOD): This project is

null 5 Dec 10, 2022
git git《Transformer Meets Tracker: Exploiting Temporal Context for Robust Visual Tracking》(CVPR 2021) GitHub:git2] 《Masksembles for Uncertainty Estimation》(CVPR 2021) GitHub:git3]

Transformer Meets Tracker: Exploiting Temporal Context for Robust Visual Tracking Ning Wang, Wengang Zhou, Jie Wang, and Houqiang Li Accepted by CVPR

NingWang 236 Dec 22, 2022
Official Implementation of CVPR 2022 paper: "Mimicking the Oracle: An Initial Phase Decorrelation Approach for Class Incremental Learning"

(CVPR 2022) Mimicking the Oracle: An Initial Phase Decorrelation Approach for Class Incremental Learning ArXiv This repo contains Official Implementat

Yujun Shi 24 Nov 1, 2022
Official implementation of the paper 'Details or Artifacts: A Locally Discriminative Learning Approach to Realistic Image Super-Resolution' in CVPR 2022

LDL Paper | Supplementary Material Details or Artifacts: A Locally Discriminative Learning Approach to Realistic Image Super-Resolution Jie Liang*, Hu

null 150 Dec 26, 2022
This is an official implementation of our CVPR 2021 paper "Bottom-Up Human Pose Estimation Via Disentangled Keypoint Regression" (https://arxiv.org/abs/2104.02300)

Bottom-Up Human Pose Estimation Via Disentangled Keypoint Regression Introduction In this paper, we are interested in the bottom-up paradigm of estima

HRNet 367 Dec 27, 2022
The source code for the Cutoff data augmentation approach proposed in this paper: "A Simple but Tough-to-Beat Data Augmentation Approach for Natural Language Understanding and Generation".

Cutoff: A Simple Data Augmentation Approach for Natural Language This repository contains source code necessary to reproduce the results presented in

Dinghan Shen 49 Dec 22, 2022
The code for our paper submitted to RAL/IROS 2022: OverlapTransformer: An Efficient and Rotation-Invariant Transformer Network for LiDAR-Based Place Recognition.

OverlapTransformer The code for our paper submitted to RAL/IROS 2022: OverlapTransformer: An Efficient and Rotation-Invariant Transformer Network for

HAOMO.AI 136 Jan 3, 2023
Supporting code for the paper "Dangers of Bayesian Model Averaging under Covariate Shift"

Dangers of Bayesian Model Averaging under Covariate Shift This repository contains the code to reproduce the experiments in the paper Dangers of Bayes

Pavel Izmailov 25 Sep 21, 2022
The code for the CVPR 2021 paper Neural Deformation Graphs, a novel approach for globally-consistent deformation tracking and 3D reconstruction of non-rigid objects.

Neural Deformation Graphs Project Page | Paper | Video Neural Deformation Graphs for Globally-consistent Non-rigid Reconstruction AljaĹľ BoĹľiÄŤ, Pablo P

Aljaz Bozic 134 Dec 16, 2022
Rotation Robust Descriptors

RoRD Rotation-Robust Descriptors and Orthographic Views for Local Feature Matching Project Page | Paper link Evaluation and Datasets MMA : Training on

Udit Singh Parihar 25 Nov 15, 2022