wany0824 / UIA-ViT

29 stars 3 forks source link

About training #2

Open LonelyPlanetIoT opened 1 year ago

LonelyPlanetIoT commented 1 year ago

I find that the default framenum in train.py is set to train :20 val :10 test: 110 .It means per video only use 20 frames in training ?

wany0824 commented 1 year ago

Yes. I only use 20 frames per video for training.

LonelyPlanetIoT commented 1 year ago

Could I ask more details? What device do you use for this method? Sometimes the process is killed after Epoch 0.3 or 0.4 . I only have a single 3070 GPU.I kow it is small for this experiment so I set batchsize to 4 . Fogive my poor English, may I ask more questions if I met in Chinese?

wany0824 commented 1 year ago

如果没有任何报错就kill的话,我猜测是超过机器内存了。因为训练中每个iter会存储一部分patch embedding用来做分布估计。你batchsize越小,iterations会倍数增加,于是到0.5epoch之前储存的feat_tensorlist_fake就超过内存了。如果你的计算资源只能支持非常小的batchsize的话,所以我建议你修改feat_tensorlist_fake部分的代码,间隔几轮iteration再保存一部分样本。我未尝试过在一张卡运行且如此小的batchsize,希望这个回答对你有帮助。

wany0824 commented 1 year ago

I trained the model using four TITAN XP. And the batchsize is 96.

LonelyPlanetIoT commented 1 year ago

谢谢十分有帮助,我调小了模型大小调大了batchsize 代码顺利运行。可以问一下你们在测试中使用的DeepfakeDetection的画质是raw 、c23 还是?

wany0824 commented 1 year ago

DeepfakeDetection用的是raw

martin512512 commented 1 year ago

您好,结合原码算是彻底理解您的文章内容了。我在运行train.py中加载模型的时,打印“No pretrained weights exist or were found for this model. Using random initialization.”,并没有自动下载并加载预训练参数,请问是什么原因,谢谢!

wany0824 commented 1 year ago

您好,结合原码算是彻底理解您的文章内容了。我在运行train.py中加载模型的时,打印“No pretrained weights exist or were found for this model. Using random initialization.”,并没有自动下载并加载预训练参数,请问是什么原因,谢谢!

我运行的时候是可以自动从url下载预训练模型的。我觉得你可以从network/vit_base_feat_middle_gal_v2.py中的default_cfgs['vit_base_patch16_224']中的url直接下载模型放在本地,然后修改load_pretrained函数中state_dict的加载方式,应该可以快速解决加载预训练模型的问题。

martin512512 commented 1 year ago

您好,结合原码算是彻底理解您的文章内容了。我在运行train.py中加载模型的时,打印“No pretrained weights exist or were found for this model. Using random initialization.”,并没有自动下载并加载预训练参数,请问是什么原因,谢谢!

我运行的时候是可以自动从url下载预训练模型的。我觉得你可以从network/vit_base_feat_middle_gal_v2.py中的default_cfgs['vit_base_patch16_224']中的url直接下载模型放在本地,然后修改load_pretrained函数中state_dict的加载方式,应该可以快速解决加载预训练模型的问题。

谢谢解答

martin512512 commented 1 year ago

您好,结合原码算是彻底理解您的文章内容了。我在运行train.py中加载模型的时,打印“No pretrained weights exist or were found for this model. Using random initialization.”,并没有自动下载并加载预训练参数,请问是什么原因,谢谢!

我运行的时候是可以自动从url下载预训练模型的。我觉得你可以从network/vit_base_feat_middle_gal_v2.py中的default_cfgs['vit_base_patch16_224']中的url直接下载模型放在本地,然后修改load_pretrained函数中state_dict的加载方式,应该可以快速解决加载预训练模型的问题。

找到问题了。network/vit_base_feat_middle_gal_v2.py,line 344 ,应当是model.pretrained_cfg,不是model.default_cfg

LonelyPlanetIoT commented 1 year ago

您好,结合原码算是彻底理解您的文章内容了。我在运行train.py中加载模型的时,打印“No pretrained weights exist or were found for this model. Using random initialization.”,并没有自动下载并加载预训练参数,请问是什么原因,谢谢!

我运行的时候是可以自动从url下载预训练模型的。我觉得你可以从network/vit_base_feat_middle_gal_v2.py中的default_cfgs['vit_base_patch16_224']中的url直接下载模型放在本地,然后修改load_pretrained函数中state_dict的加载方式,应该可以快速解决加载预训练模型的问题。

找到问题了。network/vit_base_feat_middle_gal_v2.py,line 344 ,应当是model.pretrained_cfg,不是model.default_cfg 谢谢,这条回复对我也有帮助,但我关于这篇论文的训练还有些疑惑,train.py 中 lines 68 niter 的help 写的是 numbers of epoch to train for first stage. 我执行完代码,发现也就运行了niter 数量的epoch,是只需要训练这几个epoch还是我的运行有问题还有第二个阶段需要执行? 以及一些关于数据预处理的小困惑,我发现这个方向 每篇文章提取人脸的方式不尽相同,例如dlib,MTCNN 截取人脸后设置的margin 也不一样,这些会对最后的结果有很大的影响吗?

LonelyPlanetIoT commented 1 year ago

很抱歉继续打扰您,原谅我在该方向上浅薄的积累。我可以知道更多关于cross-dataset Experiment 的操作细节吗? (1) 在验证模型在不同数据集上的效果时,是否还是采用train.json 中划分的FF++ 的视频进行训练。或是将所有FF++视频都作为训练集。 Cross Manipulation Experiment中也有同样的困惑,例如是使用DF 中全部1000条视频进行测试,其他伪造方法的全部视频训练,还是依然按照json 文件的划分进行实验? (2)使用 celeb-DF进行测试时,是仅仅测试celeb DF 提供的 List_of_testing_videos.txt 中的视频,还是对Celeb real Celeb-synthesis Youtube-real 中全部视频进行测试?

huanhuanyuan7 commented 1 year ago

很抱歉继续打扰您,原谅我在该方向上浅薄的积累。我可以知道更多关于cross-dataset Experiment 的操作细节吗? (1) 在验证模型在不同数据集上的效果时,是否还是采用train.json 中划分的FF++ 的视频进行训练。或是将所有FF++视频都作为训练集。 Cross Manipulation Experiment中也有同样的困惑,例如是使用DF 中全部1000条视频进行测试,其他伪造方法的全部视频训练,还是依然按照json 文件的划分进行实验? (2)使用 celeb-DF进行测试时,是仅仅测试celeb DF 提供的 List_of_testing_videos.txt 中的视频,还是对Celeb real Celeb-synthesis Youtube-real 中全部视频进行测试?

嗨,你好!我现在也是在尝试复现代码,有几个问题想请教一下您: 1、数据集的具体结构是怎么组织的呀,尤其在看到faceforensics_dataset_stand.py的第43行,我没太看懂我应该怎么组织FF++的子目录结构 2、./dataset的trian.json test.json valid.json里面只是一部分数据,其作用是什么呢?是只在train.json的360个上面训练嘛,比如faceforensics_dataset_stand.py第30行imgsfolderPath = get_datalist_stand(datapath) ,其中imgsfolderpath有1440个元素,比如前四个:['071 0','054 0','071_054 1','054_071 1']前两个0代表用071和054的真脸,后两个1代表假,但071_054和054_071代表啥意思呢? 敬请您指导一下,非常感谢呢!