yyk-wew / F3Net

Pytorch implementation of F3Net (ECCV 2020 F3Net: Frequency in Face Forgery Network)
148 stars 17 forks source link

About testing! #5

Open dandelion915 opened 3 years ago

dandelion915 commented 3 years ago

谢谢你复现的代码!我有一些问题想请教一下:每个视频我提取了前300帧用作训练,在设置batchsize=2时,运行到auc, r_acc, f_acc = evaluate(model, dataset_path, mode='valid')时,测试模型需要花费15分钟时间,并且会无报错地返回Process finished with exit code -1。请问你每次测试模型需要花多久的时间?

yyk-wew commented 3 years ago

你好,印象中我测试模型花费的时间在四到五分钟左右。 关于测试的函数,可以在 utils.py中对evaluate函数进行调整的。

https://github.com/yyk-wew/F3Net/blob/574667f94569287a21bf5ceb4fed63f61848d528/utils.py#L77-L97

在evaluate函数中每次会重新生成dataset和dataloader,通过frame_num参数可以控制每个id采样多少张图片进行测试,这里默认是50,如果想要提高总体测试速度可以减少采样个数。

关于无报错的返回信息我在自己运行的时候并未遇到类似的问题,根据你给出的信息只能猜测可能是由于测试的batch_size过大导致OOM,默认的测试batch_size大小(代码中为bz)为64,建议把参数调整过后再试一下。

dandelion915 commented 3 years ago

谢谢!已经可以很好地运行了,但是我的f_acc虽然能达到0.91,r_acc一直在0.4-0.6,您遇到过类似的情况吗?是否可以请教一下您在视频预处理中采取的方式(裁剪尺寸是否固定?尤其是有一些视频有多张人脸,可能导致人脸跟踪的id跳变)?

yyk-wew commented 3 years ago
  1. 关于fake acc和real acc差距较大,是存在这种情况的。本身FF++数据集就是长尾分布(fake:real=4:1),不做处理的话就会倾向于预测为fake。使用过采样或者欠采样类似的手段可以一定程度解决这个问题,其他论文也有对real样本做增强来获得更多样本达到数据均衡的做法。 并且,我个人认为在这个场景下,本身real的预测难度就是高于fake的,fake图像有固定的瑕疵作为可学习的识别模式,但real样本相较而言没有固定的特征可供捕捉。所以real的预测准确度略低我认为也属于正常现象。
  2. 预处理我用的是dlib得到人脸部分的bounding box,放缩1.3倍之后将该区域裁剪出来。如你所说,确实会有人脸跟踪的id跳变这种情况(印象里有一个视频背后的海报上有一个很清晰的人脸,dlib就会把那个脸框出来)。其他论文里提到的解决方案有二,一是手动筛查,二是用tracking的方法去框人脸,我认为可能比逐帧框更可靠。 实际上我观察dlib框脸的结果,id跳变出现的次数还是相当少的,应该不会对最终结果产生大的影响。
dandelion915 commented 3 years ago

再此感谢您及时的回复!那请问您0.91的准确率是指平均acc还是f_acc?程序里应该也没有做真实样本的增强吧?

yyk-wew commented 3 years ago
  1. 平均acc
  2. report的结果对真假样本同时做了flip的增强,没有单独对真实样本做增强。
ss880426 commented 2 years ago

Excuse me, is 0.91 acc or auc? Can acc be provided if 0.91 is auc? Because I see only auc in github My average acc in test is only 0.78, is this normal?