# SuperPointPretrainedNetwork **Repository Path**: yyj110369/SuperPointPretrainedNetwork ## Basic Information - **Project Name**: SuperPointPretrainedNetwork - **Description**: PyTorch pre-trained model for real-time interest point detection, description, and sparse tracking (https://arxiv.org/abs/1712.07629) - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-02-08 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### Research @ Magic Leap # SuperPoint Weights File and Demo Script ## Introduction This repo contains the pretrained SuperPoint network, as implemented by the originating authors. SuperPoint is a research project at Magic Leap. The SuperPoint network is a fully convolutional deep neural network trained to detect interest points and compute their accompanying descriptors. The detected points and descriptors can thus be used for various image-to-image matching tasks. For more details please see * Full paper PDF: [SuperPoint: Self-Supervised Interest Point Detection and Description](https://arxiv.org/abs/1712.07629) * Presentation PDF: [Talk at CVPR Deep Learning for Visual SLAM Workshop 2018](assets/DL4VSLAM_talk.pdf) * Authors: *Daniel DeTone, Tomasz Malisiewicz, Andrew Rabinovich* This demo showcases a simple sparse optical flow point tracker that uses SuperPoint to detect points and match them across video sequences. The repo contains two core files (1) a PyTorch weights file and (2) a python deployment script that defines the network, loads images and runs the pytorch weights file on them, creating a sparse optical flow visualization. Here are videos of the demo running on various publically available datsets: Freiburg RGBD: KITTI: Microsoft 7 Scenes: MonoVO: ## Dependencies * [OpenCV](https://opencv.org/) python >= 3.4 * [PyTorch](https://pytorch.org/) >= 0.4 This repo depends on a few standard pythonic modules, plus OpenCV and PyTorch. These commands usually work (tested on Mac and Ubuntu) for installing the two libraries: ```sh pip install opencv-python pip install torch ``` ## Running the Demo This demo will run the SuperPoint network on an image sequence and compute points and descriptors from the images, using a helper class called `SuperPointFrontend`. The tracks are formed by the `PointTracker` class which finds sequential pair-wise nearest neighbors using two-way matching of the points' descriptors. The demo script uses a helper class called `VideoStreamer` which can process inputs from three different input streams: 1. A directory of images, such as .png or .jpg 2. A video file, such as .mp4 or .avi 3. A USB Webcam ### Run the demo on provided directory of images in CPU-mode: ```sh ./demo_superpoint.py assets/icl_snippet/ ``` You should see the following output from the ICL-NUIM sequence snippet: ### Run the demo on provided .mp4 file in GPU-mode: ```sh ./demo_superpoint.py assets/nyu_snippet.mp4 --cuda ``` You should see the following output from the NYU sequence snippet: ### Run a live demo via webcam (id #1) in CPU-mode: ```sh ./demo_superpoint.py camera --camid=1 ``` ### Run the demo on a remote GPU (no display) on 640x480 images and write the output to `myoutput/` ```sh ./demo_superpoint.py assets/icl_snippet/ --W=640 --H=480 --no_display --write --write_dir=myoutput/ ``` ### Additional useful command line parameters * Use `--H` to change the input image height (default: 120). * Use `--W` to change the input image width (default: 160). * Use `--display_scale` to scale the output visualization image height and width (default: 2). * Use `--cuda` flag to enable the GPU. * Use `--img_glob` to change the image file extension (default: *.png). * Use `--min_length` to change the minimum track length (default: 2). * Use `--max_length` to change the maximum track length (default: 5). * Use `--conf_thresh` to change the point confidence threshold (default: 0.015). * Use `--nn_thresh` to change the descriptor matching distance threshold (default: 0.7). * Use `--show_extra` to show more computer vision outputs. * Press the `q` key to quit. ## BibTeX Citation ```txt @inproceedings{detone18superpoint, author = {Daniel DeTone and Tomasz Malisiewicz and Andrew Rabinovich}, title = {SuperPoint: Self-Supervised Interest Point Detection and Description}, booktitle = {CVPR Deep Learning for Visual SLAM Workshop}, year = {2018}, url = {http://arxiv.org/abs/1712.07629} } ``` ## Additional Notes * We do not intend to release the SuperPoint training or evaluation code, please do not email us to ask for it. * We do not intend to release the Synthetic Shapes dataset used to bootstrap the SuperPoint training, please do not email us to ask for it. * We use bi-linear interpolation rather than the bi-cubic interpolation described in the paper to sample the descriptor as it is faster and gave us similar results.