Fictionarry / TalkingGaussian

[ECCV'24] TalkingGaussian: Structure-Persistent 3D Talking Head Synthesis via Gaussian Splatting
https://fictionarry.github.io/TalkingGaussian/
261 stars 33 forks source link

train_face.py训练后期报错:Given input size: (192x2x2). Calculated output size: (192x0x0). Output size is too small #26

Open SherlockSunset opened 3 months ago

SherlockSunset commented 3 months ago

你好,感谢开源。我这边在训练custom data的时候,train_face到后期报错如下talkingGaussian/lib/python3.10/site-packages/torch/nn/functional.py", line 782, in _max_pool2d return torch.max_pool2d(input, kernel_size, stride, padding, dilation, ceil_mode) RuntimeError: Given input size: (192x2x2). Calculated output size: (192x0x0). Output size is too small。 能烦请帮忙看看原因吗?感谢感谢。 企业微信截图_17230830472440

Fictionarry commented 3 months ago

看起来像是所用的数据里有时唇部范围太小了,可以参考这个解决方案 https://github.com/Fictionarry/ER-NeRF/commit/3dc34397579df2c383c766768934d3f21a68476f ,把唇部区域图像padding一下。其中rgb对应line 394的gt_image.....*2-1, rgb_pred对应image_t.....*2-1

SherlockSunset commented 3 months ago

好的,我这边试试。

SherlockSunset commented 3 months ago

另外我这边在训练测试的时候,发现有下面一些问题:

  1. 做推理的时候一方面有脖子断裂的现象,另外一方面就是嘴部比较模糊,这两种现象一般是由于什么原因导致的呢?是数据质量不够好吗?如下面康辉这个例子: 企业微信截图_17231860978751

  2. 有些数据的train_face.py训练的时候卡住,训练几乎暂停,如下面这个例子 image

Fictionarry commented 3 months ago

另外我这边在训练测试的时候,发现有下面一些问题:

  1. 做推理的时候一方面有脖子断裂的现象,另外一方面就是嘴部比较模糊,这两种现象一般是由于什么原因导致的呢?是数据质量不够好吗?如下面康辉这个例子:
  2. 有些数据的train_face.py训练的时候卡住,训练几乎暂停,如下面这个例子
  1. 我们自己训中文或者英文的例子的时候没怎么见过模糊的情况,大概率是跟素材有关。脖子应该是预处理的时候parsing模型分割不准的问题,现在的预处理流程是把身体和背景(预处理后产生的torso文件夹和bc图像)分开存储,所以会导致重新组合的时候并不完全匹配,显现出parsing的分割错误,简单的解决方法是在对每帧进行预处理的时候把除头部以外的其余部分都存成一个图像当作逐帧的背景

  2. 这个是在采样眨眼的帧,卡住说明眨眼的帧太少了,把au_lb调低一点,例如在这一行把0.5调成1或者更大 https://github.com/Fictionarry/TalkingGaussian/blob/5acdaaa4508ccbeefc29673abc540430fe077c1e/train_face.py#L109

SherlockSunset commented 3 months ago

好的,多谢回复,我这边去改了测试一下。

  1. 以我的理解的话,talkingGaussian这边预处理做了parsing之后,有用到的训练数据应该主要是脸和嘴部,所以身体部分在整个训练过程中应该是不起作用的是吗?
  2. 做推理的时候,talkingGaussian和ER-NERF这类基于nerf的方案一样,合成的人物头部还是有些抖动,这是因为本身方案的局限性如人的头部gaussian和声音特征有所耦合导致的吗,还是其他原因呢?
Fictionarry commented 3 months ago

好的,多谢回复,我这边去改了测试一下。

  1. 以我的理解的话,talkingGaussian这边预处理做了parsing之后,有用到的训练数据应该主要是脸和嘴部,所以身体部分在整个训练过程中应该是不起作用的是吗?
  2. 做推理的时候,talkingGaussian和ER-NERF这类基于nerf的方案一样,合成的人物头部还是有些抖动,这是因为本身方案的局限性如人的头部gaussian和声音特征有所耦合导致的吗,还是其他原因呢?
  1. 是的,身体不参与训练
  2. 头部的抖动主要是头部pose tracking那一步造成的。此外像ER-NeRF这种直成逐像素预测RGB的方法由于自由度更大,可能会造成更严重的抖动,这一部分原因可以被TalkingGaussian这样基于变形的方法所缓解,但是归根结底的原因还是预处理阶段头部pose估计不准确,使用NeRF或者GS都对这一点起不到直接的影响,除非加入对pose的同步优化之类的技术,但这又属于新的工作了,目前我们还没试图解决这个问题。SyncTalk有对pose估计做一些工作来优化抖动,可以看看是否有效
SherlockSunset commented 3 months ago

好的多谢,我这边在训练长头发的人物的时候,发现audio attention和emotion attention很容易拟合到头发上去,导致最后语音和嘴型完全对不上,这个是talkingGaussian本身存在的局限还是说我这边训练的有些问题呢? 训练截图

SherlockSunset commented 3 months ago

好的多谢,我这边在训练长头发的人物的时候,发现audio attention和emotion attention很容易拟合到头发上去,导致最后语音和嘴型完全对不上,这个是talkingGaussian本身存在的局限还是说我这边训练的有些问题呢? 训练截图

另外就是我发现训带眼镜的人物的时候,audio attention也容易拟合到眼镜上去,导致合成的视频眼镜一动一动的。