rpautrat / SuperPoint

Efficient neural feature detector and descriptor
MIT License
1.94k stars 424 forks source link

Will you release a pytorch version? #127

Closed shaofengzeng closed 4 years ago

shaofengzeng commented 4 years ago

Tensorflow is really hard, so could you give a pytorch version? Thanks

rpautrat commented 4 years ago

I might release a Pytorch version later, because I am now using it in Pytorch, but this is not a priority for now. If it happens, it would be in a few months more probably.

In the meantime, you can at least use the pretrained model of Magic Leap here: https://github.com/MagicLeapResearch/SuperPointPretrainedNetwork

shaofengzeng commented 4 years ago

I might release a Pytorch version later, because I am now using it in Pytorch, but this is not a priority for now. If it happens, it would be in a few months more probably.

In the meantime, you can at least use the pretrained model of Magic Leap here: https://github.com/MagicLeapResearch/SuperPointPretrainedNetwork

Thanks, really looking forword to your pytorch version!

rpautrat commented 4 years ago

There is actually already a Pytorch version of SuperPoint here: https://github.com/eric-yyjau/pytorch-superpoint, also taking inspiration from my repo. So it might just be easier to use their Pytorch repo if you need it in Pytorch.

lwzbuaa commented 4 years ago

@rpautrat It's greatfully for the pretrained model of superpoint model.I want to know whether the model can be used to multi-batch process the feature detection on the same time?how to use to multi-batch process the input images?

sarlinpe commented 4 years ago

Our recent SuperGlue paper has a PyTorch implementation of SuperPoint that can handle batches with multiple images: superpoint.py.

rpautrat commented 4 years ago

There is currently no way to parallelize the feature detection across several batches at the same time in this repo. You can follow the suggestion of @Skydes if you need it in Pytorch, or write yourself the parallel loop if you prefer using this repo.

lwzbuaa commented 4 years ago

Our recent SuperGlue paper has a PyTorch implementation of SuperPoint that can handle batches with multiple images: superpoint.py.

@Skydes SuperGlue implement parallize very good,I want to know the model has some difference with the @rpautrat 's superpoint model?

sarlinpe commented 4 years ago

The SuperGlue repos is based on the orignal SuperPoint implementation.

lwzbuaa commented 4 years ago

Our recent SuperGlue paper has a PyTorch implementation of SuperPoint that can handle batches with multiple images: superpoint.py.

@Skydes in you project,the superpoint.py can use the gpu multibatch to parrel process multiimage at the same time?

areslp commented 4 years ago

Our recent SuperGlue paper has a PyTorch implementation of SuperPoint that can handle batches with multiple images: superpoint.py.

Hi, @Skydes, I have tried the one in superglue repo. I give two tensors to the superpoint network and measure the inference time. One tensor is 1 x 1 x h x w, the other one is batch x 1 x h x w. I run the network in conda enviroment (pytorch 1.5, cuda 10.2) with 1080ti (10G). Batch size is set to 10.

Inference time for 1 x 1 x h x w is about 0.01s. Inference time for batch x 1 x h x w is about 0.1s.

It seems that the batch is not working..did I do something wrong?

sarlinpe commented 4 years ago

Even if the computations are batched, the inference time might not be constant, since your GPU might not have enough kernels to do all the computations in parallel. You might see better parallelism with smaller images or batch sizes.

shaofengzeng commented 3 years ago

Here is a pytorch version that has implemented most of the functions https://github.com/shaofengzeng/MySuperPoint