Coder Social home page Coder Social logo

xiomg666 / rekd Goto Github PK

View Code? Open in Web Editor NEW

This project forked from bluedream1121/rekd

0.0 0.0 0.0 15.19 MB

[CVPR 2022] Official PyTorch implementation of "Official Self-Supervised Equivariant Learning for Oriented Keypoint Detection"

License: MIT License

Shell 0.21% Python 19.44% Jupyter Notebook 80.35%

rekd's Introduction

Self-Supervised Equivariant Learning for Oriented Keypoint Detection (CVPR 2022)

This is the official implementation of the CVPR 2022 paper "Self-Supervised Equivariant Learning for Oriented Keypoint Detection" by Jongmin Lee, Byungjin Kim, and Minsu Cho.

Detecting robust keypoints from an image is an integral part of many computer vision problems, and the characteristic orientation and scale of keypoints play an important role for keypoint description and matching. Existing learning-based methods for keypoint detection rely on standard translation-equivariant CNNs but often fail to detect reliable keypoints against geometric variations. To learn to detect robust oriented keypoints, we introduce a self-supervised learning framework using rotation-equivariant CNNs. We propose a dense orientation alignment loss by an image pair generated by synthetic transformations for training a histogram-based orientation map. Our method outperforms the previous methods on an image matching benchmark and a camera pose estimation benchmark.

Rotation-equivariant Keypoint Detection

PyTorch source code for CVPR2022 paper.

"Self-Supervised Equivariant Learning for Oriented Keypoint Detection".
Jongmin Lee, Byungjin Kim, Minsu Cho. CVPR 2022.

[Paper] [Project page]

Installation

Clone the Git repository

git clone https://github.com/bluedream1121/ReKD.git

Install dependency

Run the script to install all the dependencies. You need to provide the conda install path (e.g. ~/anaconda3) and the name for the created conda environment.

bash install.sh [conda_install_path] rekd

Requirements

  • Ubuntu 18.04
  • python 3.8
  • pytorch 1.8.1
  • torchvision 0.9.1
  • kornia 0.5.2
  • opencv-python 4.5.2.54
  • scipy 1.6.3
  • e2cnn 0.1.9

Dataset preparation

Training data

  • ImageNet 2012 for synthetic dataset generation (6.4G) : [Download ImageNet2012 validation set]

    • But, you don't have to use ImageNet 2012 validation set. Any image sequence can be used for the training, because this framework trains the model by self-supervised manner.

Evaluation data

Synthetic data generation

python train.py --data_dir [ImageNet_directory] --synth_dir datasets/synth_data --patch_size 192 --max_angle 180

  • Dataset parameters:

    • data_dir: File containing the image paths for generating synthetic training data.
    • patch_size: The patch size of the generated dataset.
    • max_angle: The max angle value for generating a synthetic view to train.
    • num_training_data: The number of the generated dataset.
  • We release the training data that we use to train our model. please download this link (841M) (password : rekd).
  • Please put the folder to datasets/ directory.

Training

python train.py --synth_dir datasets/synth_data --group_size 36 --batch_size 16 --ori_loss_balance 100

  • Network Architecture:

    • group_size: The order of group for the group convolution. default=36
    • dim_first: The number of channels of the first layer. default=2
    • dim_second: The number of channels of the second layer. default=2
    • dim_third: The number of channels of the third layer. default=2

Test on the HPatches

You can download the pretrained weights [best models] (password : rekd)

python eval_with_extract.py --load_dir [Trained_models] --eval_split full

  • descriptor: File containing the image paths for extracting features.
  • exp_name: The output path to save the extracted features to this directory: extracted_features/[exp_name]
  • num_points: The number of desired features to extract. Default: 1500.
  • pyramid_levels: downsampling pyramid levels.
  • upsampled_level: upsampling image levels.
  • nms_size: window size of non-maximal suppression.
HPatches all variations

Results on HPatches all variations. `*' denotes the results with outlier filtering using the orientation. We use HardNet descriptor for evaluation.

Model Repeatability MMA@3 MMA@5 pred. match. Links Notes
CVPR2022 57.6 73.1 79.6 505.8 - CVPR2022 results
CVPR2022* 57.6 76.7 82.3 440.1 - CVPR2022 results
REKD_release 58.4 73.5 80.1 511.6 model Official retrained model
REKD_release* 58.4 77.1 82.9 444.4 model Official retrained model
python eval_with_extract.py --load_dir trained_models/release_group36_f2_s2_t2.log/best_model.pt --eval_split full
HPatches viewpoint variations

Results on HPatches viewpoint variations. `*' denotes the results with outlier filtering using the orientation. We use HardNet descriptor for evaluation.

Model Repeatability MMA@3 MMA@5 pred. match. Notes
REKD_release 59.1 72.5 78.7 464.9 Official retrained model
REKD_release* 59.1 75.7 81.1 399.8 Official retrained model
HPatches illumination variations

Results on HPatches illumination variations. `*' denotes the results with outlier filtering using the orientation. We use HardNet descriptor for evaluation.

Model Repeatability MMA@3 MMA@5 pred. match. Notes
REKD_release 57.6 74.4 81.5 559.9 Official retrained model
REKD_release* 57.6 78.5 84.7 490.6 Official retrained model

Citation

If you find our code or paper useful to your research work, please consider citing our work using the following bibtex:

@inproceedings{lee2022self,
  title={Self-Supervised Equivariant Learning for Oriented Keypoint Detection},
  author={Lee, Jongmin and Kim, Byungjin and Cho, Minsu},
  booktitle={2022 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
  pages={4837--4847},
  year={2022},
  organization={IEEE}
}

Reference

Contact

Questions can be left as issues in the repository.

rekd's People

Contributors

bluedream1121 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.