autonomousvision / convolutional_occupancy_networks

[ECCV'20] Convolutional Occupancy Networks
https://pengsongyou.github.io/conv_onet
MIT License
831 stars 113 forks source link

Not using conditional batch normalization! #1

Closed Hippogriff closed 4 years ago

Hippogriff commented 4 years ago

In the line mentioned below, which is a part of documentation, it is mentioned that you are using conditional batch norm. However, in the code, you are using residual blocks without any batch norm. It seems that it is a legacy documentation. Please let me know, if you are actually intending to use batchnorm (conditional or otherwise).

Edit: I would really appreciate if you can also give some intuition about why did you not use batch normalization at all?

https://github.com/autonomousvision/convolutional_occupancy_networks/blob/1ef59d0d7e099a7723a3c317cdc97403bbf91f63/src/conv_onet/models/decoder.py#L9

pengsongyou commented 4 years ago

Thanks so much for pointing this out @Hippogriff. Yup, I developed at the early stage directly with ONet's decoder, so forgot to change the comments. We don't use CBN at all now.

Wuziyi616 commented 4 years ago

@pengsongyou Hi! Thank you for your great work! I'm also very interested in why you didn't use CBN any more? Cause in ONet, CBN seems to work smoothly. Do you have any ablation study about the performance when using or not CBN in ConvONet? Or is it just an issue for GPU memory since you said "memory intensive batch normalization operation" in the paper?

pengsongyou commented 4 years ago

Hi @Wuziyi616 , thanks for your interest! We did an ablation study on this at the very beginning. We found that without CBN: 1) It is more memory efficient (I don't remember the exact number, ~20% - 30% less memory) 2) Training process becomes faster 3) We don't find any performance drop, and in some cases, it can even reach slightly higher scores with a smaller number of iterations.

Hope this helps.

Wuziyi616 commented 4 years ago

@pengsongyou Thank you for your quick reply! Indeed I tried the code the training is faster and converged smoothly. BTW, just to make sure, the "configs/pointcloud/shapenet_3plane.yaml" is for training the "Ours-2D (3x64^2)" on Object-Level 3D Reconstruction from Point Clouds task (in which your model achieved an IoU of 0.861) right? That performance is amazing! Again this is really a great work!

pengsongyou commented 4 years ago

Hi @Wuziyi616 , thanks for the kind word! Yup, that is the model :) I think you might even get a little bit higher score because we continue training the model for a bit longer.