hahazh / OFR-BRN

Apache License 2.0
4 stars 0 forks source link

中间光流估计模块和代码问题 #4

Closed fzuqxt closed 8 months ago

fzuqxt commented 10 months ago

作者你好,有几个问题向请教您。 1、请问您用的IFNet估计中间双向光流的代码与IFNet原代码相比,去掉了time_step这一参数,请问是怎么估计出中间光流的呢? 2、OFR_BRN.py文件中116行代码outputs[-2]这一索引是否有错呢? 期待您的回复。

hahazh commented 10 months ago

你好,关于你的几个问题: 1.这个工作在21年就已经完成,所以使用的是IFnet的旧版本代码,旧版本的IFnet是不支持任意中间时刻的,因此并没有time_step这个参数。考虑到新版本IFnet支持了任意中间时刻,所以如果用新版本的代码重新训练,理论上这个时空超分也可以支持任意中间时刻。 2.outputs[-2]应该没有问题,您可以画图或者逐步debug,我们所需要的warp对象就是当前列表中倒数第二个,这确实有点绕。实际上,最早在组织这个代码时,我曾经多次写错顺序,这会导致重建出的结果不正常,有许多伪影,有时甚至不能收敛。

fzuqxt commented 10 months ago

好的,感谢您的回复!可以请教您旧版本IFNet估计中间流的流程吗,我不太理解的是没有传入对应想要估计时刻t的超参,是如何让其逼近估计的中间光流的,就比如您说旧版本只支持中间帧,但是我看代码中warped_img0 = flow_warp(x[:, :3], F1_large[:, :2].permute(0, 2, 3, 1)) warped_img1 = flow_warp(x[:, 3:], F1_large[:, 2:4].permute(0, 2, 3, 1))这两行还是无法理解。

hahazh commented 10 months ago

你好,能否估计任意中间时刻的光流完全取决于训练的过程。也就是说,如果你在训练时就使用了多个中间时刻t以及对应的中间帧作为监督,那么这个光流网络就有任意中间时刻的泛化能力。反之,如果你只用中间时刻监督,即使你改变了超参数t,也不能实现任意时刻的估计。关于中间时刻的调制问题,你可以参考下面两篇论文: Multiple Video Frame Interpolation via Enhanced Deformable Separable Convolution IFRNet: Intermediate Feature Refine Network for Efficient Frame Interpolation