This is a PyTorch implementation of "SuperPoint: Self-Supervised Interest Point Detection and Description." Daniel DeTone, Tomasz Malisiewicz, Andrew Rabinovich. ArXiv 2018. This code is partially based on the tensorflow implementation https://github.com/rpautrat/SuperPoint.
Please be generous to star this repo if it helps your research. This repo is a bi-product of our paper deepFEPE(IROS 2020).
Task | Homography estimation | Detector metric | Descriptor metric | ||||
---|---|---|---|---|---|---|---|
Epsilon = 1 | 3 | 5 | Repeatability | MLE | NN mAP | Matching Score | |
Pretrained model | 0.44 | 0.77 | 0.83 | 0.606 | 1.14 | 0.81 | 0.55 |
Sift (subpixel accuracy) | 0.63 | 0.76 | 0.79 | 0.51 | 1.16 | 0.70 | 0.27 |
superpoint_coco_heat2_0_170k_hpatches_sub | 0.46 | 0.75 | 0.81 | 0.63 | 1.07 | 0.78 | 0.42 |
superpoint_kitti_heat2_0_50k_hpatches_sub | 0.44 | 0.71 | 0.77 | 0.56 | 0.95 | 0.78 | 0.41 |
conda create --name py36-sp python=3.6
conda activate py36-sp
pip install -r requirements.txt
pip install -r requirements_torch.txt # install pytorch
setting.py
Datasets should be downloaded into $DATA_DIR. The Synthetic Shapes dataset will also be generated there. The folder structure should look like:
datasets/ ($DATA_DIR)
|-- COCO
| |-- train2014
| | |-- file1.jpg
| | `-- ...
| `-- val2014
| |-- file1.jpg
| `-- ...
`-- HPatches
| |-- i_ajuntament
| `-- ...
`-- synthetic_shapes # will be automatically created
`-- KITTI (accumulated folders from raw data)
| |-- 2011_09_26_drive_0020_sync
| | |-- image_00/
| | `-- ...
| |-- ...
| `-- 2011_09_28_drive_0001_sync
| | |-- image_00/
| | `-- ...
| |-- ...
| `-- 2011_09_29_drive_0004_sync
| | |-- image_00/
| | `-- ...
| |-- ...
| `-- 2011_09_30_drive_0016_sync
| | |-- image_00/
| | `-- ...
| |-- ...
| `-- 2011_10_03_drive_0027_sync
| | |-- image_00/
| | `-- ...
tensorboard --logdir=./runs/ [--host | static_ip_address] [--port | 6008]
python train4.py train_base configs/magicpoint_shapes_pair.yaml magicpoint_synth --eval
you don't need to download synthetic data. You will generate it when first running it.
Synthetic data is exported in ./datasets
. You can change the setting in settings.py
.
This is the step of homography adaptation(HA) to export pseudo ground truth for joint training.
export_folder: <'train' | 'val'> # set export for training or validation
python export.py <export task> <config file> <export folder> [--outputImg | output images for visualization (space inefficient)]
python export.py export_detector_homoAdapt configs/magicpoint_coco_export.yaml magicpoint_synth_homoAdapt_coco
python export.py export_detector_homoAdapt configs/magicpoint_coco_export.yaml magicpoint_synth_homoAdapt_coco
datasets/kitti_split/
.
python export.py export_detector_homoAdapt configs/magicpoint_kitti_export.yaml magicpoint_base_homoAdapt_kitti