shubham-goel / ucmr

Code for the ECCV2020 paper "Shape and Viewpoint without Keypoints".
https://shubham-goel.github.io/ucmr/
148 stars 11 forks source link

Query regarding camera pose initialization #22

Closed ShivamDuggal4 closed 2 years ago

ShivamDuggal4 commented 2 years ago

Hi @shubham-goel

Thanks for the great work!

I have a query regarding the camera pose optimization as done in the initialization phase here

It would be great if you can explain the choice of the following:

Also, as far as I know, pascal cameras are usually looking at the object center. Therefore, the authors of the pascal3d paper used a simplified camera parametrization (of azimuth, elevation, theta and just a radial camera distance as shown here). Just want to ask if you tried reducing your camera parameterization from the weak perspective (scale, 2d translation and 3D rotation) to this parameterization, as this would reduce the sampling space for your camera multiplex ?

Looking forward to your answer!

Thanks & Best Regards Shivam

shubham-goel commented 2 years ago

Hi @ShivamDuggal4. Thank you for your questions, I'm happy to answer them.

Since we're optimizing multiple cameras (starting from different initializations over the sphere), we want to minimize overlap between these different camera poses. optimizeAzRange achieves this by limiting the change in azimuth during optimization. We set it based on the number of cameras in the multiplex. When the multiplex has 40 cameras with initializations spanning 8 different azimuths and 5 different elevations, az of adjacent cameras are 380/8=45degrees apart. Setting optimizeAzRange=30 to allow for adjacent cameras to have little but non-zero overlap.

During optimizing, we want to limit my azimuth to the range [-optimizeAzRange, optimizeAzRange]. tanh help achieve this with an unbounded optimization variable (az_param), by mapping to (-1,1). The 0.1 is just another way of controlling the learning rate for that variable.

Hope this helps!