frederickszk / LRNet

Landmark Recurrent Network: An efficient and robust framework for Deepfakes detection
MIT License
90 stars 13 forks source link

The performance problem after adding other FF++ fake dataset. #18

Open frederickszk opened 2 years ago

frederickszk commented 2 years ago

@meihsuan0301 原来commit引用会把原来的问题关掉 😢 原回答在这里: https://github.com/frederickszk/LRNet/issues/17#issuecomment-1116035941 我新开了一个issue,如果有相关问题欢迎继续在这儿留言~ 😄

meihsuan0301 commented 2 years ago

嗨你好,對於實驗我目前還是沒辦法重現出來,而且很疑惑的是用同一堆landmark在tf和torch兩個版本丄結果差異很大。 torch image tf image 而這只是之前針對DF、Real資料的結果。 而我自己練得torch結果如我之前所說AUC也難有一個好的結果,很疑惑這個差異點,目前已經排除model重現的問題因為你的c23資料集我確實可以獲得你所提供的結果,但換到我自己弄得landmark資料集就不行了。 關於tf、torch版本的差異目前好奇是不是你前後練的landmark有什麼改動嗎?我目前用的landmark是之前demo裡的code,這會有差嗎?可能導致我torch練不起來嗎? 不好意思,一直詢問你,感謝你的耐心回答。

frederickszk commented 2 years ago

你好你好,我分成两部分来解答~

  1. 关于tf和torch版本差异:tf版本和torch版本可能在网络的核心层(GRU网络)的实现上有区别,甚至不同版本的tf和torch也会对超参数的选择有影响,所以可以试着调整超参,尤其是学习率。torch版本比起tf来说是优化过的,效果应该更好(尤其对g1的提升非常明显)。目前公开的版本中多的是: https://github.com/frederickszk/LRNet/blob/49c144ec720f6f5e370a47a28f2a62921966c22f/training/utils/model.py#L31 是我自己定制的一个dropout层,也可以调整这个概率(设置为0表示禁用,就和tf的版本结构上完全一样了),看看效果。 但从我自己的实验结果来看,同样的landmark在两个版本不应该差异太大,尤其是DF和real在我这边测试来看是最好训练的数据集,都可以很容易的收敛。所以我推测大概率还是数据处理或者数据读入这块有小问题。

  2. 关于目前我提供的代码所使用的landmark,我目前.\training\文件夹下的都是用OpenFace这个工具包提取+标定的,包括提供的数据集以及对应数据训出来的参数。而demo里边的landmark是用的Dlib,具体细节可以参考这个回答:https://github.com/frederickszk/LRNet/issues/14#issuecomment-1112945713 。但是根据我早期的实验,Dlib提取的特征点拿来训也是能收敛的,并且加了标定模块后,Dlib训的模型用OpenFace测,或者反过来,OpenFace训的模型用Dlib测,效果都不会下降很多(paper中也展示了混淆矩阵的那个)。 因此我推测还是很有可能是Dlib版本或者其它原因导致第一步提取landmark的过程中出了什么问题,属于预处理环节的问题。如果实在不行的话可以试着我上面回答中提到的那个工具包,有可视化,鲁棒性更好,重新提取一遍DF数据集大概也就几个小时。