vita-epfl / DePOSit

[ICRA 2023] Official implementation of "A generic diffusion-based approach for 3D human pose prediction in the wild".
GNU Affero General Public License v3.0
49 stars 14 forks source link

Training on AMASS dataset #8

Open CaiWanglong opened 4 months ago

CaiWanglong commented 4 months ago

Hello, we are very interested in your work, and we would like to replicate your results. On the Human3.6M dataset, we trained and evaluated the resulting model, achieving a prediction accuracy similar to that of the paper. However, on the AMASS dataset, the model we trained cannot reach the accuracy of the paper, and the gap is large. Our training parameters follow your code exactly. The final evaluation results are as follows: Loss of training on AMASS datasets: loss FDE on AMASS: image FDE on 3DPW: image We suspect it may be due to hyperparameter Settings or accidental problems. Can you provide training hyperparameters and chackpoint on AMASS and 3DPW datasets? It would be better if some suggestions could be made for our restoration work.

noshaba commented 3 months ago

Hi!

I haven't run the code myself but could it be that the issue is in the AMASS data loader?

In lines 119 to 122 in the utils/amass_3dpw.py file it says if split == 2: valid_frames = np.arange(0, fn - seq_len + 1, skip_rate) else: valid_frames = np.arange(0, fn - seq_len + 1, skip_rate)

So essentially for the same for every split type. But for the other dataset it says:

if split == 2: valid_frames = np.arange(0, fn - seq_len + 1) else: valid_frames = np.arange(0, fn - seq_len + 1, skip_rate)

So no skipping in the test dataset. Could that be the problem maybe?

CaiWanglong commented 2 months ago

Hi! 你好!

I haven't run the code myself but could it be that the issue is in the AMASS data loader?我自己没有运行过代码,但问题是否出在 AMASS 数据加载器中?

In lines 119 to 122 in the utils/amass_3dpw.py file it says在 utils/amass_3dpw.py 文件的第 119 至 122 行中,它表示 if split == 2: valid_frames = np.arange(0, fn - seq_len + 1, skip_rate) else: valid_frames = np.arange(0, fn - seq_len + 1, skip_rate)

So essentially for the same for every split type. But for the other dataset it says:因此对于每种拆分类型来说基本上都是相同的。但对于其他数据集,它说:

if split == 2: valid_frames = np.arange(0, fn - seq_len + 1) else: valid_frames = np.arange(0, fn - seq_len + 1, skip_rate)

So no skipping in the test dataset. Could that be the problem maybe?所以测试数据集中没有跳过。这可能是问题所在吗?

Thank you for your suggestion. First, we tried to guarantee the same skip_rate, but got worse results. Second, we tried to run the code several times and got better results, so we assumed that it was due to chance that the first run had poor results. At the same time, we found that the number of layers mentioned in the paper is 12 layers. Similarly, layers=12 in the training code of H3.6M data set, while layers=4 in the training code of AMASS data set. Therefore, it is very likely that the layer setting problem led to our ability to reproduce results on H3.6M data set but poor results on AMASS data set. In this regard, we will try further.