ashawkey / RAD-NeRF

Real-time Neural Radiance Talking Portrait Synthesis via Audio-spatial Decomposition
MIT License
878 stars 153 forks source link

RAD-NeRF的输出拼接回身体的其他部分 #35

Closed Gpwner closed 1 year ago

Gpwner commented 1 year ago

RAD-NeRF输出了很好的上半身合成效果,但是当我把这个视频一帧一帧拼回其下半身时,发现拼接部分会拼不上了,会有细微的错位等问题。

请问关于这个问题,您有什么建议吗?是否可以在算法生成的时候添加一些控制参数,以达到离嘴部越远的地方与推理的输入帧相比变化越小,以达到拼接会下半身时自然一些。

yerfor commented 1 year ago

建议可以试试gt的torso

Gpwner commented 1 year ago

@yerfor 感谢支招,可能我表达得不是很清楚。我的本意是,假如我的原始视频(包括脚等部分)的分辨率为4k,从中截取512512包含头部+肩膀视频作为RAD-NeRF训练数据。训练好一个RAD-NeRF模型之后,选定某个wav+部分512512视频帧进行推理,再将推理结果拼接到4k视频帧去。我这里的问题出现在拼接回4k视频帧这个过程。

yerfor commented 1 year ago

或许我没有完全理解你的意思。我直觉上觉得可以仅推理head_nerf,上半身采用gt的torso_bg_img。这样转回4k后的torso部分应该和原始视频是完全一致的

kendo6666 commented 1 year ago

@yerfor 这样应该不可行。主要原因是torso_bg_img取决于face_parsing的结果,它的驱干和背景部份的识别通常不是想要的。表现出来就是长发的末端、手部等位置识别不佳。个人认为像你说的“仅推理head_nerf”,然后关闭头部的晃动,与orig_img拼接才能得到想要的效果。 顺便说一句,你的GeneFace表现也很出色,正在学习它的代码,不过建议渲染部份用torch-ngp重构就更棒了。

Erickrus commented 1 year ago

@yerfor 这样应该不可行。主要原因是torso_bg_img取决于face_parsing的结果,它的驱干和背景部份的识别通常不是想要的。表现出来就是长发的末端、手部等位置识别不佳。个人认为像你说的“仅推理head_nerf”,然后关闭头部的晃动,与orig_img拼接才能得到想要的效果。 顺便说一句,你的GeneFace表现也很出色,正在学习它的代码,不过建议渲染部份用torch-ngp重构就更棒了。

我遇到了同样的问题,头部图像 + orig_img 拼接时下巴运动的情况和原始视频中出现了不一致,部分情况下出现了双下巴的情况。我参考了deepfakelab里面的方法 ,但是pred_img 和 orig_img之间 存在形状差异,应该不适用。请问作者有什么建议么?

Gpwner commented 1 year ago

@yerfor 我尝试了你的说的方法,比如运行下边的命令:

python main.py data/Obama/ --workspace trial_Obama/ -O  --test --test_train --data_range 1380 1640 --aud pure_wav/TTS_eo.npy

但是还是会出现拼接不上的问题。

@kendo6666 请问是在哪里可以关闭头部晃动?

kendo6666 commented 1 year ago

@Gpwner 我也不知道,一个方法是使用data_range[0,1],关键看你能否接受这种说话时头部完全不动的状态。 所有的问题都继承于AD-NeRF的face parsing预处理,这个模型主要用于面部分区,使用它来区分torso是不合适的。

aishoot commented 10 months ago

所以大佬们这个问题解决了么?求方案