NetEase-GameAI / Face2FaceRHO

The Official PyTorch Implementation for Face2Face^ρ (ECCV2022)
BSD 3-Clause "New" or "Revised" License
213 stars 35 forks source link

模型推理耗时较长? #19

Closed shuishiwojiade closed 1 year ago

shuishiwojiade commented 1 year ago

感谢你的开源。 我在P40显卡上运行单张图片的重演测试,只记录了驱动图片的计算耗时,如下所示: -> 1.1 驱动图片Fitting时的DECA数据读入耗时: 1.7801 second -> 1. 驱动图片总的Fitting耗时: 1.8205 second -> 2.1 Motion Field的计算耗时: 0.1119 second -> 3.3 rendering_net耗时: 0.3678 second -> 3. reenactment总耗时: 0.4834 second 驱动图片相关计算的总耗时:1.8205 + 0.1119 + 0.3678 + 0.4834 = 2.7836秒 请问这个是什么原因呢,除Fitting部分外的其他代码和论文中一致么?

NetEase-GameAI commented 1 year ago

1.除fitting部分跟论文里面的描述是一样的 2.推理部分耗时仅包括face2face_rho_model里面的reenactment过程,其他的部分都可以离线算好 3.时间测试需要使用半精度模式 4.测试时不要仅测一次,而是要多次的平均(最好前面加一个warm up的过程),另外要加上torch.cuda.synchronize() 5.P40我没有测过应该是比2080Ti要慢一些,但绝对不会慢这么多

shuishiwojiade commented 1 year ago
  1. 已按照你的建议修改了代码,只计算了reenactment的平均耗时,warm up 100次,耗时测试900次,平均后47毫秒(FP16),后续有RTX2080TI显卡后我再试试。

  2. 请问你说的这个方案怎么用在实时重演应用上啊? “推理部分耗时仅包括face2face_rho_model里面的reenactment过程,其他的部分都可以离线算好” 用一个进程做Fitting并保存结果,用另一个进程读结果后调用face2face_rho_model里的reenactment么?

NetEase-GameAI commented 1 year ago

哦哦 fitting部分在推理的时候是要做的,我前面的意思是因为我这个fitting的过程用的是DECA的方法,不是我们论文里面真正用的方法,所以速度会比较慢。您说的那种策略当然可以,但我们实际部署的时候还是串行的来的