yerfor / GeneFace

GeneFace: Generalized and High-Fidelity 3D Talking Face Synthesis; ICLR 2023; Official code
MIT License
2.43k stars 290 forks source link

自己训练的posnet,推理以后看landmark结果还可以,但是经过后续radnerf,radnerf_torso训练的模型进行推理生成的的视频嘴巴基本没有动。请问可能是哪里有问题? #236

Closed codersun123 closed 7 months ago

codersun123 commented 7 months ago

很棒的分享,我自己这边测试自己训练的posnet,推理以后看landmark结果还可以。 但是经过后续radnerf,radnerf_torso训练的模型进行推理生成的的视频嘴巴基本没有动。头部有移动。请问是最有可能哪里出错了?

https://github.com/yerfor/GeneFace/assets/16399737/25b901ab-e035-48ee-b620-e519fb11fa45

jinqiupeter commented 7 months ago

常见的两个问题可以排查一下:1).训练视频是不是25fps,2). postnet 有没有根据文档里面的tips来选择

codersun123 commented 7 months ago

常见的两个问题可以排查一下:1).训练视频是不是25fps,2). postnet 有没有根据文档里面的tips来选择

视频是25fps的,posnet的数据如下图1,2 2 1 我选用的是8000,tr/disc_pos_conf约0.44;tr/disc_neg_conf约0.56

这不是我第一个有此类问题的结果,我还有一个也有这样的问题 这个是landmark的结果

https://github.com/yerfor/GeneFace/assets/16399737/fbb6721a-35fe-48a2-ae82-e89b19ccb926

jinqiupeter commented 7 months ago

tr/disc_pos_conf约0.44;tr/disc_neg_conf约0.56 --- 这两个值相差太多了,要保证相差在十分位甚至百分位之间。可以再看看其它checkpoints,我选择过11000甚至13000都可以

codersun123 commented 7 months ago

tr/disc_pos_conf约0.44;tr/disc_neg_conf约0.56 --- 这两个值相差太多了,要保证相差在十分位甚至百分位之间。可以再看看其它checkpoints,我选择过11000甚至13000都可以

感谢帮助,我这边再试试

codersun123 commented 7 months ago

tr/disc_pos_conf约0.44;tr/disc_neg_conf约0.56 --- 这两个值相差太多了,要保证相差在十分位甚至百分位之间。可以再看看其它checkpoints,我选择过11000甚至13000都可以 重新跑了一下,选了10k的。 tag: tr/disc_neg_conf:0.4746;tr/disc_pos_conf:0.5197;结果还是一样。还有其它建议吗?

jinqiupeter commented 7 months ago

这个差距还是有点大。另一个方向是尝试放大人脸在视频中的比例。另外如果你的视频是用ffmpeg来resample或者crops的话,会有很大的数据丢失,要用专门的工具比如PR,达芬奇或者FinalCut

codersun123 commented 7 months ago

这个差距还是有点大。另一个方向是尝试放大人脸在视频中的比例。另外如果你的视频是用ffmpeg来resample或者crops的话,会有很大的数据丢失,要用专门的工具比如PR,达芬奇或者FinalCut

ori_imgs是我在整帧图像的基础上自己crop出来的,crop方式如下。后面我尝试使用工具裁切试试,感谢你的帮助。 eye_to_eye = eye_right - eye_left
x = eye_to_eye.copy() x /= np.hypot(x) x = np.hypot(eye_to_eye) 3 y = np.flipud(x) [-1, 1] c = lm_nose[3] quad = np.stack([c - x - y, c - x + y, c + x + y, c + x - y])
qsize = np.hypot(
x) * 2

codersun123 commented 7 months ago

这个差距还是有点大。另一个方向是尝试放大人脸在视频中的比例。另外如果你的视频是用ffmpeg来resample或者crops的话,会有很大的数据丢失,要用专门的工具比如PR,达芬奇或者FinalCut

使用剪映剪切了1:1的头像,结果还是差不多。是不是一定要把多训练几次posnet,直到符合要求为止?我最大的困惑是问什么嘴巴都是不张口闭口的基本上是一个状态,这和landmark的结果非常不吻合

jinqiupeter commented 7 months ago

应该还是原视频的问题。我也碰到过你说的情况,后来怀疑是我给的视频加了太重的磨皮滤镜,再换了一个没怎么磨皮的就好了