vsitzmann / siren

Official implementation of "Implicit Neural Representations with Periodic Activation Functions"
MIT License
1.72k stars 247 forks source link

Reproducibility of SDF #47

Open ZhengdiYu opened 3 years ago

ZhengdiYu commented 3 years ago

Hey,

Thank you for your work.

image

According to the paper, the signed distance function constraint as well as the off-surface penalization should be multiplied by the same λ. However, the λ of 'inter_constraint(off-surface)' and 'sdf_constraint' is totally different in the code.

  1. Shouldn't 'inter' be multiplied by 3e3? Which one should I follow?
  2. Do you use a different hidden_features for thai and room?
  3. Does 50000 iteration means 50000 steps or epochs?
  4. The loss value is very unstable sometimes. (see below)

I tried using the original setting of your code to train the network on room and thai with inter_loss 1e2 / inter_loss 3e3. A. room1e2, B. room3e3, C. thai1e2, D. thai3e3.

A, room1e2: image

B, room3e3: image

C thai1e2: image

D thai3e3: image

As you can see, none of these has a perfect convergency. I use hidden_feautre=256 for all 4 experiments. So if the 'units' in your paper means 'hidden_feautres' in code, then C thai1e2 should be exactly the same as you described. But as you can see, the inter_loss did not converge at all.

Best, Zhengdi

peihaowang commented 2 years ago

Hi Zhengdi,

Did you solve your problem? I have encountered the reproducibility problem as well. Have you ever visualized the SDF or the mesh? Besides non-convergence, I also failed to reproduce them (the exported ply file basically contains no vertices!)

I would appreciate any comments from authors to help reproduce the results.

BTW, if I want to regress SDF on ShapeNet dataset, is there anything I need to note?

Thanks, Peihao

ZhengdiYu commented 2 years ago

Hi Zhengdi,

Did you solve your problem? I have encountered the reproducibility problem as well. Have you ever visualized the SDF or the mesh? Besides non-convergence, I also failed to reproduce them (the exported ply file basically contains no vertices!)

I would appreciate any comments from authors to help reproduce the results.

BTW, if I want to regress SDF on ShapeNet dataset, is there anything I need to note?

Thanks, Peihao

Hi,

Yes, I have visualize the mesh. It seems generally great even some of the loss didn't converge at all. I have no idea why would this happen. It's been a long time though, I do remember that there are some discrepancies between paper and code. And I just did both of them. I remember that we need to follow the code, not the paper. The first picture was following the code. Rest of them were following the setting mentioned in the paper:

8dc49c092452a875eb58bf9aa2461bf 3c9f5c2b67c3e91e5d95016064db3ca 3c9f5c2b67c3e91e5d95016064db3ca

peihaowang commented 2 years ago

Thanks for your prompt reply. I just found my problem was due to my installed scikit-image package does not have marching_cubes_lewiner method. I think in latest version scikit-image, this function was rename to marching_cubes.

And I also found if the point cloud is very sparse (e.g., objects from shapenet only have ~2k vertices), the regressed results will have lots of holes.