MaskRelation
MaskRelation copied to clipboard
关于训练时验证集性能不佳以及参数设定的问题
您好,在跑训练代码训练模型时,我遇到了一些问题,希望能得到您的帮助,非常感谢!
在训练过程中,我发现训练集的ACC比较稳定的提升,但是验证集的Acc一直在50左右波动,AUC则是波动剧烈,在57-90之间波动,
部分训练结果如下:
epoch16: * Acc:52.410 Auc:84.277 Pre:52.157 Rec:100.000 F1:68.557
epoch17:* Acc:52.259 Auc:64.254 Pre:52.259 Rec:100.000 F1:68.645
epoch18: * Acc:48.720 Auc:57.736 Pre:48.681 Rec:100.000 F1:65.484
epoch19: * Acc:49.699 Auc:79.181 Pre:49.047 Rec:100.000 F1:65.814
epoch20: * Acc:50.452 Auc:83.204 Pre:50.152 Rec:100.000 F1:66.801
考虑到硬件限制,我使用的显卡都是24G内存的。在尝试使用config.py文件中为r3d设定的原始batchsize值(40)时,我遇到了cuda内存超出的问题。
因此,我将batchsize值调整为8,同时学习率也相应地调整为原来的五分之一,即:
self.lr = 4e-5 # 原始值是2e-4
self.warmup_lr = 2e-7 # 原始值是1e-6
在训练时,我使用了总共4块显卡,并且其他参数均保持默认设置。预训练模型是从https://download.pytorch.org/models/mc3_18-a90a0ba3.pth下载的,而训练与验证数据集都是完整的faceforensics++训练与验证集。
想请问一下可能导致上述训练时验证集ACC上不去,AUC剧烈波动的原因,非常感谢!
此外,我注意到原始代码中的参数与Masked Relation Learning for DeepFake Detection文章中所提及的参数存在差异。 原始代码中,初始学习速率为2e-4,batchsize为40,epoch为100,采用warm up以及cosine策略。 文章中提到的初始学习速率为1e-4,batchsize为30,epoch为30,每5个epoch学习率变为原来的2分之一。 因此,我还有一个问题:如果我想在faceforensics++数据集上复现文章中的结果,我是否应该将这些参数调整为与文章一致? 同时,文章中的batchsize值是指单GPU的batchsize还是多个GPU的batchsize总和?如果是单GPU的batchsize为30,那么单GPU的内存需求似乎会非常高,接近50G。
期待您的回复,非常感谢!
您好,我在训练过程中也遇到了这种现象(训练时训练集上ACC高,验证集上只有50左右),请问您现在解决了吗,可能是什么原因引起的?谢谢!
您好,我在训练过程中也遇到了这种现象(训练时训练集上ACC高,验证集上只有50左右),请问您现在解决了吗,可能是什么原因引起的?
我还没有解决,后来给作者发了邮件但是还没有回复,暂时这个部分搁置了
您好,我在训练过程中也遇到了这种现象(训练时训练集上ACC高,验证集上只有50左右),请问您现在解决了吗,可能是什么原因引起的?
我还没有解决,后来给作者发了邮件但是还没有回复,暂时这个部分搁置了
您好,请问您提取视频帧的时候是提取了每个视频的所有视频帧吗?
您好,我在训练过程中也遇到了这种现象(训练时训练集上ACC高,验证集上只有50左右),请问您现在解决了吗,可能是什么原因引起的?
我还没有解决,后来给作者发了邮件但是还没有回复,暂时这个部分搁置了
您好,请问您提取视频帧的时候是提取了每个视频的所有视频帧吗?
是的,我提取了所有视频帧(针对部分视频检测有错误的情况,一些视频会选择最长正确区间)
出现CUDA Out of Memory很可能因为没有启用混合精度训练模式,单显卡混合精度训练的指令:
python train_ffpp.py --amp --gpu 0
经实验验证,batchsize=30,混合精度训练需要占用24GB显存,您的硬件符合要求,建议您使用混合精度训练模型。
训练参数以论文的Implementation Details(IV.A.2))为准,batchsize为30,每5个epoch学习率变为原来的1/2。代码实际没有使用warm up以及cosine策略,学习率调整策略使用了StepLR方法,
scheduler = optim.lr_scheduler.StepLR(opt, step_size=config.scheduler_step, gamma=config.scheduler_gamma)
其他实验参数按照论文所述配置即可。
您好,我在训练过程中也遇到了这种现象(训练时训练集上ACC高,验证集上只有50左右),请问您现在解决了吗,可能是什么原因引起的?
我还没有解决,后来给作者发了邮件但是还没有回复,暂时这个部分搁置了
您好,请问您提取视频帧的时候是提取了每个视频的所有视频帧吗?
是的,我提取了所有视频帧(针对部分视频检测有错误的情况,一些视频会选择最长正确区间)
Batchsize过小容易影响模型的准确度,建议您按照上述方法使用混合精度amp训练模型。