dylan-campbell / bpnpnet Goto Github PK
View Code? Open in Web Editor NEWSolving the Blind Perspective-n-Point Problem End-To-End With Robust Differentiable Geometric Optimization
License: MIT License
Solving the Blind Perspective-n-Point Problem End-To-End With Robust Differentiable Geometric Optimization
License: MIT License
Hi! And thanks for making this code available.
I have a data set that consists of:
A set of 3d points (xyz values);
A set of 2d points (xy pixel values)
A camera matrix (fx,fy,cx,cy, 5 distortion params)
Is it possible to run your code with this data?
Also, related question:
Where can I pass in my own data?
Thanks!
Hey Dylan,
I'm not really sure if you intend to support Python 3, but I just wanted to bring to your attention that this expectation on the integer division no longer holds in Python 3. You need to use the operator //
.
Line 36 in 21642c8
The good thing is that //
is an explicit integer division in python 2 and 3, so making that replacement will not affect legacy support.
Cheers
Hey Dylan,
I'm trying to replicate your data generation setup on MegaDepth. I was crawling through the code that handles the dataset and noticed that the "unprocessed" version of code loads a number of pickle files. These files are not part of the native MegaDepth dataset so there's an intermediate stage missing here.
I wanted to ask if you could push these preprocessing scripts to this repository? We had a brief email exchange a couple of months ago that added some missing information. Here's what I know so far.
the splits are based on sequence numbers (randomly selected landmarks with no overlap between testing and training)
For training, 1000 2D-3D correspondences were sampled randomly from each image--point set pair
for testing we used all available points.
No priority was given to images, resulting in a fairly imbalanced training set (ranging from 4 correspondences to 14742)Training IDs of SfM models:
['0151_0_SIFT.pkl', '0306_0_SIFT.pkl', '0141_0_SIFT.pkl', '0183_0_SIFT.pkl', '0176_0_SIFT.pkl', '0176_1_SIFT.pkl', '0176_2_SIFT.pkl', '0095_0_SIFT.pkl', '0095_1_SIFT.pkl', '0095_2_SIFT.pkl', '0020_0_SIFT.pkl', '0020_1_SIFT.pkl', '0105_0_SIFT.pkl', '0004_0_SIFT.pkl', '0004_1_SIFT.pkl', '0004_2_SIFT.pkl', '0130_0_SIFT.pkl', '0130_1_SIFT.pkl', '0130_2_SIFT.pkl', '0078_0_SIFT.pkl', '0143_0_SIFT.pkl', '0019_0_SIFT.pkl', '0019_1_SIFT.pkl', '0107_0_SIFT.pkl', '0033_0_SIFT.pkl', '0017_0_SIFT.pkl', '0021_0_SIFT.pkl', '0046_0_SIFT.pkl', '0046_1_SIFT.pkl', '0046_2_SIFT.pkl', '0057_0_SIFT.pkl']
Testing IDs of SfM models:
['0104_0_SIFT.pkl', '0104_1_SIFT.pkl', '0026_0_SIFT.pkl', '0186_0_SIFT.pkl', '0067_0_SIFT.pkl', '0277_0_SIFT.pkl', '0277_1_SIFT.pkl', '0290_0_SIFT.pkl', '0290_1_SIFT.pkl', '0100_0_SIFT.pkl', '0022_0_SIFT.pkl', '0102_0_SIFT.pkl']
These IDs are selected randomly, and the name is under format: modelID_subModelID_SIFT.pkl.
I can probably recreate the process, but it would be always best to have access to the code that implemented the described logic.
Thank you for releasing the code
Hi, thank you for sharing your code. I wonder that if the 2d points are sampled from object A in the image I, while the 3d points are sampled from object B in the image I. Could the bpnpnet be suitable for such an experimental setting? Since it seems that there is no correspondence between the 2d points and 3d points in such conditions.
Or is there any requirements/precondition for the provided 2d points and 3d points? (such as the number of the provided 2d and 3d points at least, the sample range of the 2d/3d points, etc.)
Hi @dylan-campbell, is the trained model available? Or could you share the pre-trained models?
Hi! Thank you so much for your code.
I have a data set that consists of:
A set of 3d points (xyz values);
A set of images
A camera matrix
Is it possible to run your code with this data?
By the way,How to convert images to 2D points?Through visual features Such as FastCornerPoints,Harris,Orb,Sift,Surf ....?
Thanks!
Hi,dylan !
Train this network with my own data set,in the first few epochs(Lp is not introduced ),Lc fluctuates around 0.8, no obvious drop(Maybe this is normal?).
I saw that in your paper, the Lc training was conducted for 120 epochs.
Could you tell me the approximate value of Lc after you complete these 120 periods of training,this can give me a reference,thanks!!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.