autonomousvision / differentiable_volumetric_rendering

This repository contains the code for the CVPR 2020 paper "Differentiable Volumetric Rendering: Learning Implicit 3D Representations without 3D Supervision"
http://www.cvlibs.net/publications/Niemeyer2020CVPR.pdf
MIT License
794 stars 90 forks source link

Why is there padding for unit cube? #41

Closed stalkerrush closed 3 years ago

stalkerrush commented 3 years ago

Hi @m-niemeyer , according to my understanding, the object has been normalized into the unit cube. But when generating freespace points and performing raymarching, you use a 0.1 padding of the cube. Can you briefly explain the reason for doing this?

Thank you :)

m-niemeyer commented 3 years ago

Hi @stalkerrush , thanks a lot for your interest in our project! Yes, that's correct, we use padding for calculating which points to evaluate along the ray. The idea here is to avoid any boundary issues - let's assume the object would take up the full unit cube size, and you start evaluating exactly at the GT object's boundary - then during training, the predicted surface might be a little bigger than the GT surface, hence outside the unit cube. Then, you are falsely not finding the predicted surface. To avoid issues like this, we add some padding. In practice, however, there is probably no big difference if you remove the padding. Best of luck for your research!

stalkerrush commented 3 years ago

Hi @m-niemeyer , thanks for the response last time. Another quick question about the training of multi-RGB supervised model: I find that you would sample a single supervision image for each object model during each training epoch. Have you tried to optimize the model with multiple supervision images together per iteration?

m-niemeyer commented 3 years ago

Hi @stalkerrush , yes, you are right, we always sample a single image per object, and then apply our loss over multiple pixels on this image. We haven't tried to sample more views per object per iteration, but it is for sure possible. For the single-view reconstruction methods, we instead sample multiple objects (and one view per object) - I think here, sampling additional views per object doesn't change much. However, it might be helpful for the multi-view reconstruction models where we only have a single object, as it basically corresponds to a larger batch size!

tiexuedanxin commented 3 years ago

Hi @m-niemeyer , according to my understanding, the object has been normalized into the unit cube. But when generating freespace points and performing raymarching, you use a 0.1 padding of the cube. Can you briefly explain the reason for doing this?

Thank you :) hello, Could you make a clear introduction of how to calculate the freespace and occupy points, I find the code is hard for me to understand. Besides what does the freespace and occupy points mean, the points inside or outside the object? than you very much.