关于RIFE从v3.8到v4.26版本演进的疑问:性能提升的关键因素
首先感谢作者对社区的贡献,对RIFE带来了持续的改进。在观察RIFE从v3.8到v4.26的演进过程中,我发现了一些很有趣的现象:
- 质量提升: LPIPS指标有显著提高(成倍提升) 实际应用中的视觉质量明显提升 插帧结果更加稳定
- 值得关注的现象: 核心架构(由粗到细的金字塔结构)基本保持不变 模型参数量实际减少了 尽管架构更简单,性能却大幅提升
这造成了一个很有趣的现象:
更简单的模型 ➡️ 更好的效果 相同的核心设计 ➡️ LPIPS指标成倍提升
因此想请教以下几点:
- 在这个演进过程中的关键设计原则或决策
- 在减少参数的同时提升质量的关键因素
- 您认为对于提升帧插值质量最重要的要素是什么
您的见解将对从事类似研究的社区很有帮助。
我能想到的一些吧
- 关注训练和推理的 gap,早期的训练使用了不充足的尺度增广,导致在推理大运动场景会出现问题
- 以优化 lpips 为核心,而不看 psnr 指标
- 投入更多的训练时间
- 结构上去掉了 refine,增加了 warped feature
我觉得只要围绕 lpips 指标,并且有一些 hard case 辅助迭代模型,其实做的事情都是小修小改,慢慢累积起来就好了很多 还有一些可以参考 https://zhuanlan.zhihu.com/p/721430631
感谢您的回复,我现在想进一步追问:
- 具体而言,hard case是如何辅助迭代模型的? 是通过将hard case与bad case调整损失函数及训练数据集,还是使用hard case对模型进行微调?
- “投入更多的训练时间”是指训练1000个epoch甚至更多epoch吗?
- 尺度增广指的是在获取图像时进行增广吗? 例如,在训练时进行1.5x、2x、4x的随机放大,是在dataset返回数据时做随机放大(即训练patch动态改变),还是在getimg或__getitem__之前进行随机放大?但训练时都是使用384x384的patch。
- 使用SSIM Loss以及1e-5 * Consistency Loss的具体作用是什么? 这些损失的权重相对于主要的0.1 * L1 Loss + VGG Loss要小很多。
- 您提到不能太早扩数据量,具体来说应该在什么时候扩数据量?
- 关于VGG Loss的一些调优:
比如:
weights = [1.0 / 32, 1.0 / 16, 1.0 / 8, 1.0 / 4, 1.0]这样做相比于:weights = [1.0 / 2.6, 1.0 / 4.8, 1.0 / 3.7, 1.0 / 5.6, 10 / 1.5]有哪些优势?
感谢您的解答!
- 每次发模型前,肉眼观察几十个 hard case or bad case 是不是有提升,不涉及改训练集
- 是的
- 训练时是相同大小 patch,只是从不同增广的图中裁剪出来;动态 patch 我想也可以,但是写起来比较繁琐一点
- SSIM 看起来会让所有指标略好一点,所以有的时候保留;后一项是我观察到光流没有正则化时,在一些动漫场景会出现奇怪 artifacts,所以稍微处理了一下;这两项不要紧
- 至少对于 rife 这种模型,我观察扩数据量的增益不明显,我的意思是不要太多把精力花在这上边(如果你只有一个人),因为洗数据也很花时间
- 这个是从别人那抄的参数,可能他们基于某些统计方法平衡的系数,我不觉得会有很大区别,后者就是深层权重稍大了一点
感谢您的解答,我现在有以下进一步的问题想向您请教:
仅训练一个简单的两帧插入一帧的插帧模型,不使用timestep的情况下,
- 在使用如 Vimeo-Septuplet、SportSLoMo 或 Adobe240fps 等包含连续帧的数据集时,应该选择连续的三帧、左右间隔0-1帧、左右间隔0-2帧,还是随机选择帧?
- 推荐使用 Vimeo-Triplet、Vimeo-Septuplet中的哪个,还是两者兼用?
- 在训练过程中,Vimeo-Triplet、Vimeo-Septuplet、Adobe240fps、ATD-12K、SportSLoMo 这些数据集的重要性如何,也就是以哪个数据集为主?
感谢您的解答!
- 建议对于帧率比较低的(~30fps) 选连续三帧,帧率高的选间隔大一点
- 只用 Vimeo-Septuplet,它包含 Vimeo-Triplet
- Vimeo-Septuplet 是主要的,其它可用可不用,我没有做出很明显的差异
我能想到的一些吧
- 关注训练和推理的 gap,早期的训练使用了不充足的尺度增广,导致在推理大运动场景会出现问题
- 以优化 lpips 为核心,而不看 psnr 指标
- 投入更多的训练时间
- 结构上去掉了 refine,增加了 warped feature
我觉得只要围绕 lpips 指标,并且有一些 hard case 辅助迭代模型,其实做的事情都是小修小改,慢慢累积起来就好了很多 还有一些可以参考 https://zhuanlan.zhihu.com/p/721430631
@hzwer 您好,想请教一下关于第4点结构上的优化,请问加入warped feature对于效果的提升很明显吗?因为加入warped feature map会引入更多的gridsmaple算子,对实时性高的应用来说不太友好,这部分带来的效果提升主要是哪方面呢?谢谢~
@Qjrun Hi, 感觉上是模型的感受野会更大。可能可以用多次图片上 warp 来替代。