frederickszk
frederickszk
1. 是的,paper上提供的参数已经是差不多快两年前的版本了,现在库里的参数都是更新过后的。此外当时的实验都是用TensorFlow2.0做的,后面再这个库里更新成PyTorch版本了,两个环境下对网络的实现有出入,并且甚至不同版本的PyTorch训练效果都有出入,所以lr和epoch可以根据情况适当调整。 > 对于paper中报告的性能相关的更多说明可以看https://github.com/frederickszk/LRNet/issues/15#issuecomment-1114013545 里边的Q3,简要来说paper中的FF++当时是只指代单一DF数据集的,所以性能都是在DF上的数据。不过最近正在陆续更新在FF++全集上训练的模型,所以对应的lr、epoch等也会有变。 3. F2F的链接我测试过了,提取码应该是对的,试试看手动输入提取码,然后注意不要有空格就行~
为了平衡训练集中的真假样本比例,不然的话假样本会是真样本的4倍,对训练和性能有影响。(目前看到的绝大部分工作对FF++全集都是这样处理的) 当然在test/evaluate的时候我都只读入了一次origin的数据集,保证公平评估性能
你好你好,我也看到你前面问的几个问题啦,正好一起解答一下: 1. 我刚刚自己测试了一下,sample_fake.mp4这个样本我自己运行是能正确输出的,输出后应该会打印出“已保存”的提示: >  你可以尝试在extract_landmark.py的第59行那里打个断点,debug一下,看看是不是最后一步用np.savetxt()的时候报的错,如果是的话可能是numpy版本需要更新一下。如果不是的话就逐步往上排查一下。 2. FF++数据集我有提取好特征点的版本,链接在`training\datasets`文件夹下,有提供百度网盘链接。 3. 关于数据集的处理,最开始我是用extract_landmark.py提取每个视频的特征点这么做的。不过后来发现Dlib太慢,而且效果也一般般,后来我就换了OpenFace这个工具包(链接可以参考`.calibrator`文件夹下的),快速的提取出大量视频中的特征点,然后用`.calibrator\utils.py`这个代码进行批量处理。如果你是只用FF++数据集的,推荐你直接用问题2中的那部分处理好的。如果你有自已另外大批量的数据要处理,推荐用OpenFace这套做法,效率会高很多。
不客气! > 59行的那np.savetxt()有个警告,应为类型 'int',但实际为 'ndarray',可能是这个的问题吧 我似乎有印象之前碰到过这个问题,推测是numpy版本变了以后改过这个函数,所以可能报错了。 你试试看直接运行能不能保存,反正这里`raw_data`应该是个(371x136)的ndarray矩阵,设法直接存入txt就行。
可能不太正常,我最近测试过,应该目前提供的模型参数对DF数据集鉴定准确率能到100%的,也就是正常来说200个DF数据集中对应的样本都应该被辨别出来为假才对。 如果你用的是tensorflow版本的模型,就用`.\demo\model_weights\ff`或者`.\training\weights\tf`下的参数,这两个应该性能接近。
tensorflow的版本后续就不继续更新啦,因为tf没办法定制做一些层,所以模型的性能很难提升。 demo里边我后续也准备往PyTorch的版本升级,前面的提取特征点这部分不动,把网络替换成PyTorch版本的。
Thanks for your report! You can email [email protected] with your testing samples attached if it is convenient. I will solve this bug as soon as possible.
> > @crankyz hava you solved it ? > > Nope, just sended videos. Apologize for my delay! I find something wrong with my mailbox. It may block some emails...
现在最新版本的dataset统一都是使用OpenFace提取的基础landmark,然后使用landmark-calibration代码统一处理得到的。 几种方法的区别在于,OpenFace适合批量处理数据集,而BlazeFace(复杂场景下可替换为RetinaFace来提高人脸检测成功率)适合在代码中运行。 此外,根据我们最近的实验结果,这三种方式以及Dlib提取出的landmark只要经过calibration,最后训练的效果都类似,而且可以混用。因此在demo中提供了几种不同的方案。
我最近测试过在FS上的效果,用openFace的train,再用FAN提取的特征点测,AUC也在99%左右。但我使用的是默认的blazeFace,因为FF++数据集基本都是正面人脸,能正常检测到,理论上retinaFace的提取效果应该类似,因为retinaFace只是人脸检测器,后面检测特征点的部分用的还是FAN。 性能有出入的原因可能有:1. 可能是其它几个子数据集(比如NT)用不同的检测器+标定后偏移会大一些,干扰FF++整体的效果。我后续有时间再测试一下FF++上完整的性能。2. 可能是我目前公布的参数在训练时还用了一些代码中未更新的数据增强技巧,所以report效果会好一些,但直接用当前版本的代码训练可能不能完全达到我发布的模型的效果。后面文章更新以后我会再同步更新这部分代码~