hzwer / ECCV2022-RIFE

ECCV2022 - Real-Time Intermediate Flow Estimation for Video Frame Interpolation
MIT License
4.49k stars 446 forks source link

使用X-TRAIN数据集训练RIFE #381

Open ZXMMD opened 1 week ago

ZXMMD commented 1 week ago

作者您好,请问您尝试过使用高分辨率数据集(比如X-TRAIN)训练RIFE吗?我在训练过程中遇到了一些问题。 实验设置如下:

  1. 构造三帧组。X-TRAIN数据集中一个视频有65帧(索引为0到64),可以构造不同时间间隔的三帧组:0,1,2; 0,2,4; 0,3,6; 0,4,8; 0,5,10; ...; 0,32,64; 使用训练集中4408个视频共构造了400多万个三帧组。中间帧为ground truth. 训练时每个epoch会从这400多万个三帧组中随机选择48768个三帧组。
  2. 数据预处理。随机裁剪至512x512.其他的数据增强方式和RIFE保持一致。
  3. 使用4个GPU。学习率,batch size等参数和RIFE保持一致。
  4. 没有加载RIFE的预训练模型。

首先是在训练大概1400 step后loss变为NAN:

image

我尝试将weight decay从1e-3增大到2e-3(没有修改学习率等其他参数),在训练大概5000 step后loss变为NaN:

image

尝试在IFNet中添加BN层(没有修改学习率等其他参数),训练大概40k step后loss猛增:

image

会不会是训练集的问题,三帧组包含多种时间间隔(比如0,1,2;0,32,64)。我现在在尝试将训练集换成时间间隔相等的三帧组(0,26,52;1,27,53;...;12,38,64)。请问作者有什么建议吗?

hzwer commented 1 week ago

你好,我建议:

  1. 将蒸馏 loss 调小,因为大图训练时,光流的数值范围变大了似乎会有问题
  2. 多种时间间隔本身不会有问题
  3. 因为初始时看起来 l1 loss 在正常下降,我估计只要调小一点学习率就不容易炸了
  4. 如果要面向高清场景,建议增加模型中的下采样次数,以适应更大的运动
hzwer commented 1 week ago

据 VFIMamba 说,这里需要课程学习 https://zhuanlan.zhihu.com/p/923110402