关于PCN的复现实验结果
作者您好,感谢您杰出的工作,让我看到了可以用如此小的参数规模达到如此高的性能. 但是我在复现的过程中碰到了一些问题,首先我再train ShapeNet55的时候发现会出现Nan的问题,其次是用您开源出的模型权重测试PCN的时候性能指标比论文中报告出现的略低 Taxonomy #Sample ChamferDistance 02691156 150 4.9409 02933112 150 8.6510 02958343 150 7.5450 03001627 150 6.7271 03636649 150 8.2706 04256520 150 8.3896 04379243 150 5.8836 04530566 150 6.3147 Overall 7.0903
#0 26.5826 19.5242 11.6978 26.5826 | 7.0903 | #0 inf
您在论文中的报告对应的是:
| Methods | Average | Plane | Cabinet | Car | Chair | Lamp | Couch | Table | Boat |
|---|---|---|---|---|---|---|---|---|---|
| Ours | 6.39 | 3.59 | 8.70 | 7.50 | 6.70 | 5.06 | 8.24 | 5.72 | 5.64 |
我配的环境是pointr,用的是RTX3090,cuda11.1,torch 1.10.1 我想知道为什么Plane, Lamp,Boat这三个物体会和论文报告的性能偏差较大,而且其他物体基本上都能复现出一个比较好的性能? 是因为这些类型的物体在重建的过程中受随机种子的影响较大吗?
首先,感谢您的关注!
1. 训练ShapeNet55时Nan
训练ShapeNet55时候我也碰到过几次Nan的情况,我猜测是seed generator使用了Upsample Transformer的原因 (类似的问题)。 可能的解决方案: 1.尝试多次训练,按照我的经验,Nan的情况一般发生在训练的早期(前30个epoch附近)。 2.将seed generator中的Upsample Transformer换成 Deconvolution 或者 MLP。
2. 使用PCN预训练权重无法复现论文结果
使用训练好的权重,我在我的环境(1080Ti, cuda 12.2, torch 1.10.1)随机测试了两次,结果如下:
Taxonomy #Sample ChamferDistance
02691156 150 3.6072
02933112 150 8.6567
02958343 150 7.5555
03001627 150 6.6614
03636649 150 4.9509
04256520 150 8.4091
04379243 150 5.8136
04530566 150 5.6998
Overall 6.4193
#0 26.5446 19.5163 11.6969 26.5446 | 6.4193 | #0 inf
Taxonomy #Sample ChamferDistance
02691156 150 3.6164
02933112 150 8.6323
02958343 150 7.5496
03001627 150 6.6717
03636649 150 4.9590
04256520 150 8.4112
04379243 150 5.8005
04530566 150 5.6826
Overall 6.4154
#0 26.5397 19.5151 11.7012 26.5397 | 6.4154 | #0 inf
和您提供的测试结果对比来看,有三个类差的比较多(也就是您提到的三类)。看上去这似乎不是随机种子的问题。
观察测试结果的最后一行:
我:
#0 26.5397 19.5151 11.7012 26.5397 | 6.4154 | #0 inf
您:
#0 26.5826 19.5242 11.6978 26.5826 | 7.0903 | #0 inf
格式:
#0 CD_seed CD_1 CD_2 CD_seed | CD_3 | #0 inf
CD_seed, CD_1, CD_2, CD_3分别代表seed,P1,P2,P3与对应分辨率gt的CD值。只有P3差的比较多,所以请问您是否修改过第三个Upsampling Block的代码?或者,出错的三类的数据存在问题(我在我现在使用的数据集上复现过snowflakenet和seedformer)?
如果没有上述问题,您也可以尝试重新训练,可以参考提供的log。
感谢您快速而准确的回复:) 我之前也跑过Seedformer,发现也是复现不出他论文的精度,自己训的话会差一些结果,当时问了他们也没搞明白为什么? 我觉得可能是不是我下载的PCN数据集有问题,所以都没复现出开源权重的精度,我再去检查一下本地的数据集. 我同意你的观点,Upsample Transformer视乎不是一个可以稳定训练的网络,至少在Seedformer开源出来的代码来看,他是魔改的SnowflakeNet,但是训的并不稳定. 有没有可能是默认的训练Lr=0.001太大了,我注意到pointr用的是0.0005/0.0001?
再次感谢您的回复, 祝您新年快乐~
hello, 训练的一些设定还是沿用SeedFormer的,我们没有做什么调整。
请问,无法在PCN数据集上复现的问题您解决了吗?
另外,我们更新了使用Deconvolution的seed generator,感兴趣的话,您可以尝试下。我认为最终精度差不多,训练也会稳定点。
Hello, 可以参考下这个issue解决Nan的问题,如果有效的话,SeedFormer遇到的问题应该也能解决:
https://github.com/EasyRy/CRA-PCN/issues/5#issuecomment-1997685713
Close this issue since no more responses. If you have more problems, feel free to reopen it.