jonkhler / s2cnn

Spherical CNNs
MIT License
939 stars 176 forks source link

Representation of 3D meshes on sphere #24

Closed lxxue closed 5 years ago

lxxue commented 5 years ago

Great work! Thanks for releasing the code.

I was reading code about projection of meshes input onto sphere but I could understand the following preprocessing code:

        im[0] -= 0.75
        im[0] /= 0.26
        im[1] -= 0.59
        im[1] /= 0.50
        im[2] -= 0.54
        im[2] /= 0.29
        im[3] -= 0.52
        im[3] /= 0.19
        im[4] -= 0.80
        im[4] /= 0.18
        im[5] -= 0.51
        im[5] /= 0.25

I wonder where these constants come from and what's the meaning of this kind of translation and scaling? Are these constants empirical mean and std of each channel? If it is, will these kinds of data preprocessing help a lot w.r.t. empirical performance/convergence?

Besides, I wonder if you have done any ablation study about the importance of each channel of input? For example, will the performance degrades much without convex hull input? What if without sin input channel(I feel like cos is enough to represent the angle between normal and ray)?

mariogeiger commented 5 years ago

Yes these are the empirical mean and std of each channel. It always helps to have well normalized input data, I don't know if it's more or less important with s2cnn than with other kind of architectures.

I tried to find the notes I took when I tested different parameters but I did not find it, as far as I remember they all helps, maybe you are right that sin and cos a redundant. But computationally speaking it changes nothing because the first layer is much less demanding than the others. The idea was to give everything we can and the network figure out what he needs.