yuangan / EAT_code

Official code for ICCV 2023 paper: "Efficient Emotional Adaptation for Audio-Driven Talking-Head Generation".
Other
275 stars 31 forks source link

No discriminator in the state-dict. Dicriminator will be randomly initialized load optimizer_a2kp failed, train it from scratch #25

Closed YZX-codesky closed 2 days ago

YZX-codesky commented 7 months ago

作者你好,非常感谢你优秀的工作,我在使用./ckpt/qvt_img_pca_sync_4_01_11_304.pth.tar对第二阶段进行训练的时候,出现了“No discriminator in the state-dict. Dicriminator will be randomly initialized load optimizer_a2kp failed, train it from scratch”的错误,但是我观察代码,在第一阶段训练的时候是有optimizer_a2kp 的pre-trained checkpoint的,为什么会出现这样的警告?请问是我的预训练检查点设置有问题吗?

yuangan commented 7 months ago

你好,这里的设置应该是为了兼容针对第一阶段的需要继续训练的情况,不会影响第二阶段的训练。a2kp的模型在emotion adaptation阶段因为加了一些EAM层,并只优化这些层,所以优化参数已经发生了改变,并不能用第一阶段的optimizer_a2kp,在这里是正常的。

YZX-codesky commented 7 months ago

你好,这里的设置应该是为了兼容针对第一阶段的需要继续训练的情况,不会影响第二阶段的训练。a2kp的模型在emotion adaptation阶段因为加了一些EAM层,并只优化这些层,所以优化参数已经发生了改变,并不能用第一阶段的optimizer_a2kp,在这里是正常的。

万分感谢你的耐心解答,关于数据中的x["mel"]和x["sync_mel"]有什么区别哇,为什么shape不一样,sync_mel是[1, 1, 80, 16],mel是[1, 5, 1, 80, 11],其中5表示的应该是同步步长吧,为什么mel里面就没有

yuangan commented 7 months ago

mel是语音的梅尔频谱,是网络的输入之一。sync_mel是用来计算sync loss的。sync_mel的形状原因可以查看wav2vec这篇论文及其代码。这个的实现可以参考这里的定义使用.

YZX-codesky commented 7 months ago

我根据代码观察,发现在提取mel时进行了裁剪,是不是每一个训练的视频数据都是裁剪成了时序长度为5的mel数据和imge数据,然后放入训练,实际训练的时候只是取了时序长度为5的视频长度部分,生成的generated["prediction"]也是5张图片,而并未使用整个视频。是这样吗? :pray:

yuangan commented 7 months ago

是的,因为用了wav2vec训出来的模型,为了计算sync_loss,需要一次生成5张图片,每张图片的生成又需要临近帧的特征,所以在这里提取mel时会有两重for循环。