zhenhuat / STCFormer

(CVPR2023)3D Human Pose Estimation with Spatio-Temporal Criss-cross Attention
85 stars 5 forks source link

难易复现论文结果,方便提供对应的详细参数吗? #2

Closed yhl2018 closed 1 year ago

yhl2018 commented 1 year ago

你好,按照你提供的训练脚本:python run_stc.py -f 27 -b 128 --train 1 --layers 6 -s 9,训练出的模型有些问题,训练结果为: 2023/08/10 12:51:16 epoch: 2, lr: 0.0009600, loss: 0.0369, p1: 48.94, p2: 36.62 2023/08/10 13:22:25 epoch: 3, lr: 0.0009216, loss: 0.0316, p1: 46.50, p2: 35.82 2023/08/10 13:53:36 epoch: 4, lr: 0.0008847, loss: 0.0286, p1: 46.45, p2: 35.38 2023/08/10 14:24:49 epoch: 5, lr: 0.0008493, loss: 0.0266, p1: 47.20, p2: 35.70 2023/08/10 14:55:51 epoch: 6, lr: 0.0008154, loss: 0.0251, p1: 46.23, p2: 34.75 2023/08/10 15:26:56 epoch: 7, lr: 0.0007828, loss: 0.0240, p1: 45.34, p2: 34.90 2023/08/10 15:57:58 epoch: 8, lr: 0.0007514, loss: 0.0230, p1: 45.24, p2: 34.78 2023/08/10 16:42:51 epoch: 9, lr: 0.0007214, loss: 0.0223, p1: 45.56, p2: 34.96 2023/08/10 17:14:10 epoch: 10, lr: 0.0006925, loss: 0.0216, p1: 46.46, p2: 34.99 2023/08/10 17:45:28 epoch: 11, lr: 0.0006648, loss: 0.0210, p1: 45.84, p2: 35.18 2023/08/10 18:16:47 epoch: 12, lr: 0.0006382, loss: 0.0205, p1: 46.81, p2: 35.02 2023/08/10 18:47:58 epoch: 13, lr: 0.0006127, loss: 0.0201, p1: 46.30, p2: 34.85

python run_stc.py -f 81-b 128 --train 1 --layers 6 -s 9 2023/08/10 21:06:24 epoch: 1, lr: 0.0010000, loss: 0.0788, p1: 50.18, p2: 39.26 2023/08/10 22:22:16 epoch: 2, lr: 0.0009600, loss: 0.0393, p1: 46.84, p2: 36.61 2023/08/10 23:38:09 epoch: 3, lr: 0.0009216, loss: 0.0331, p1: 45.97, p2: 35.37 2023/08/11 00:54:04 epoch: 4, lr: 0.0008847, loss: 0.0298, p1: 45.23, p2: 35.14 2023/08/11 02:09:55 epoch: 5, lr: 0.0008493, loss: 0.0275, p1: 44.11, p2: 34.80 2023/08/11 03:25:47 epoch: 6, lr: 0.0008154, loss: 0.0259, p1: 44.48, p2: 34.46 2023/08/11 04:41:38 epoch: 7, lr: 0.0007828, loss: 0.0246, p1: 43.90, p2: 34.36 2023/08/11 05:57:30 epoch: 8, lr: 0.0007514, loss: 0.0236, p1: 45.46, p2: 34.39 2023/08/11 07:13:20 epoch: 9, lr: 0.0007214, loss: 0.0228, p1: 45.18, p2: 34.24

和你代码中给的预训练模型差异比较大,请指教?

zhenhuat commented 1 year ago

您好,您可以先检查一下 tds参数是否设置为3,如果还有问题我再尝试

---原始邮件--- 发件人: @.> 发送时间: 2023年8月11日(周五) 上午8:12 收件人: @.>; 抄送: @.***>; 主题: [zhenhuat/STCFormer] 难易复现论文结果,方便提供对应的详细参数吗? (Issue #2)

你好,按照你提供的训练脚本:python run_stc.py -f 27 -b 128 --train 1 --layers 6 -s 9,训练出的模型有些问题,训练结果为: 2023/08/10 12:51:16 epoch: 2, lr: 0.0009600, loss: 0.0369, p1: 48.94, p2: 36.62 2023/08/10 13:22:25 epoch: 3, lr: 0.0009216, loss: 0.0316, p1: 46.50, p2: 35.82 2023/08/10 13:53:36 epoch: 4, lr: 0.0008847, loss: 0.0286, p1: 46.45, p2: 35.38 2023/08/10 14:24:49 epoch: 5, lr: 0.0008493, loss: 0.0266, p1: 47.20, p2: 35.70 2023/08/10 14:55:51 epoch: 6, lr: 0.0008154, loss: 0.0251, p1: 46.23, p2: 34.75 2023/08/10 15:26:56 epoch: 7, lr: 0.0007828, loss: 0.0240, p1: 45.34, p2: 34.90 2023/08/10 15:57:58 epoch: 8, lr: 0.0007514, loss: 0.0230, p1: 45.24, p2: 34.78 2023/08/10 16:42:51 epoch: 9, lr: 0.0007214, loss: 0.0223, p1: 45.56, p2: 34.96 2023/08/10 17:14:10 epoch: 10, lr: 0.0006925, loss: 0.0216, p1: 46.46, p2: 34.99 2023/08/10 17:45:28 epoch: 11, lr: 0.0006648, loss: 0.0210, p1: 45.84, p2: 35.18 2023/08/10 18:16:47 epoch: 12, lr: 0.0006382, loss: 0.0205, p1: 46.81, p2: 35.02 2023/08/10 18:47:58 epoch: 13, lr: 0.0006127, loss: 0.0201, p1: 46.30, p2: 34.85

python run_stc.py -f 81-b 128 --train 1 --layers 6 -s 9 2023/08/10 21:06:24 epoch: 1, lr: 0.0010000, loss: 0.0788, p1: 50.18, p2: 39.26 2023/08/10 22:22:16 epoch: 2, lr: 0.0009600, loss: 0.0393, p1: 46.84, p2: 36.61 2023/08/10 23:38:09 epoch: 3, lr: 0.0009216, loss: 0.0331, p1: 45.97, p2: 35.37 2023/08/11 00:54:04 epoch: 4, lr: 0.0008847, loss: 0.0298, p1: 45.23, p2: 35.14 2023/08/11 02:09:55 epoch: 5, lr: 0.0008493, loss: 0.0275, p1: 44.11, p2: 34.80 2023/08/11 03:25:47 epoch: 6, lr: 0.0008154, loss: 0.0259, p1: 44.48, p2: 34.46 2023/08/11 04:41:38 epoch: 7, lr: 0.0007828, loss: 0.0246, p1: 43.90, p2: 34.36 2023/08/11 05:57:30 epoch: 8, lr: 0.0007514, loss: 0.0236, p1: 45.46, p2: 34.39 2023/08/11 07:13:20 epoch: 9, lr: 0.0007214, loss: 0.0228, p1: 45.18, p2: 34.24

和你代码中给的预训练模型差异比较大,请指教?

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you are subscribed to this thread.Message ID: @.***>

yhl2018 commented 1 year ago

你好,我使用的便是:opt.py 里的默认参数,tds:默认为3

zhenhuat commented 1 year ago

哈喽,我昨晚修正了一个generator_tds.py里的一个bug,它会导致训练时读入的帧数不正确,具体是在get_batch函数下面改了几句 if self.chunk_length == 1: start_2d = start_3d - self.pad self.tds - self.causal_shift end_2d = end_3d + self.pad self.tds - self.causal_shift else: mid = end_3d - self.pad start_2d = mid - self.pad self.tds - self.causal_shift-1 end_2d = mid + self.pad self.tds - self.causal_shift 另外,修正之后的运行脚本为

  1. 运行 python run_stc.py -f 27 -b 128 --train 1 --layers 6 -s 9 的结果是 44.58 image

  2. 运行 python run_stc.py -f 27 -b 128 --train 1 --layers 6 -s 3 的结果是 43.79 image

  3. 运行 python run_stc.py -f 81 -b 81 --train 1 --layers 6 -s 9 的结果是 41.71 (2023.0208的结果) image (2023.0812的结果,因为时间关系只跑了两个epoch,和之前是一致的) image

麻烦您重新尝试一下,如果还有问题可以继续反馈。

yhl2018 commented 1 year ago

好的,多谢了,我按照你讲的重新测试一下,感谢

yhl2018 commented 1 year ago

你好,你刚修改的这个脚本generator_tds.py, self.chunk_length没有定义。你上传的代码 稍微在修改一下

yhl2018 commented 1 year ago

你好,对于你上述跑的过程还有一点疑问,是不是你本地代码和github上的代码有些许的不同?: 1、运行 python run_stc.py -f 27 -b 128 --train 1 --layers 6 -s 9 的结果咱们基本相符 1691916070769 2、运行 python run_stc.py -f 27 -b 128 --train 1 --layers 6 -s 3 的结果是你的第三个epoch就是: 43.79,而我这边跑出来第八个epoch才44.67: 1691916123079

zhenhuat commented 1 year ago

哈喽,我检查了一下,原先释放的模型和论文里对sep_s的权重是0.001,所以你跑出来的44.35和论文写的44.17已经很接近了,有可能是不同机器或者版本影响,引起的微小差异;我新跑的43.79是在 0.0001权重下的试验,所以您可以: (1)注释run.py里的 opt.manualSeed = 42 等句子,尝试不同的初始化结果; 或者(2)修改模型stcformer.py里的 x_s = att_s @ v_s + sep2_s + 0.001 * self.drop(sep_s),进一步在不同参数下调整sep_s的权重。 因为您的复现结果和论文已经趋于一致,时间原因近期我不再跟进这个问题了,望理解。

yhl2018 commented 1 year ago

好的谢谢

gtftyih commented 11 months ago

我也出现了这种情况,按照作者的设置,manualSeed=42,spe的权重设成0.0001,在frames=81帧时,最好的结果仅为42.98,远未达到作者展示的41.73(s=3和s=9都尝试过,性能变化不大)

zhenhuat commented 11 months ago

我也出现了这种情况,按照作者的设置,manualSeed=42,spe的权重设成0.0001,在frames=81帧时,最好的结果仅为42.98,远未达到作者展示的41.73(s=3和s=9都尝试过,性能变化不大)

请问你的27帧结果是ok的吗?

gtftyih commented 11 months ago

也不ok,仅在第5轮达到了44.53(s=3,总共训了8轮)Screenshot_20231122_000715.jpg

zhenhuat commented 11 months ago

也不ok,仅在第5轮达到了44.53(总共训了8轮)

27帧应该是合理的吧;81帧论文里的结果42.0,我当时是把81的估计结果(42.6mm)和27帧的估计结果(44.1mm)做emsamble得到的,就是加权求平均;这个项目里的41.73是后来重新训练时得到的,不需要emsamble。所以可能还是跟服务器、pytorch版本有关系。你可以先这样尝试(1)用emsamble看下结果,或者(2)用2080ti的服务器(3)用python3.8.12+torch1.8 的环境试试

gtftyih commented 11 months ago

好的,请问您获得41.71这个结果时使用的代码和现在提供的代码完全一致吗?

zhenhuat commented 11 months ago

好的,请问您获得41.71这个结果时使用的代码和现在提供的代码完全一致吗?

应该是的(我现在无法使用连到那台服务器了,不太敢确定),您可以直接加载预训练的模型试试

gtftyih commented 11 months ago

预训练模型的数值确实是准确的,那我再研究一下吧,多谢了

gtftyih commented 11 months ago

还有一点我不太明白的就是,我将spe权重调成0.001和0.0001之后再去测试,发现所得结果差距很小(分别为41.71和41.72),如果您在调整spe权重并重新训练之后发现模型获得了较大提升,那是否意味着您当时使用的spe权重有可能并非0.0001?🤔

zhenhuat commented 11 months ago

还有一点我不太明白的就是,我将spe权重调成0.001和0.0001之后再去测试,发现所得结果差距很小(分别为41.71和41.72),如果您在调整spe权重并重新训练之后发现模型获得了较大提升,那是否意味着您当时使用的spe权重有可能并非0.0001?🤔

之所以设置得很小是发现这个编码在Human3.6M上很不稳定,你可以试着删掉不用看看

gtftyih commented 11 months ago

好的,我再试试😂