hzwer / ECCV2022-RIFE

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

RIFE_trained_v6模型似乎无法与官方推理代码配合 #213

Closed 98mxr closed 2 years ago

98mxr commented 2 years ago

我将RIFE_trained_v6.zip里的train_log文件解压到rife目录中。并且复制了model文件夹下的IFNet和RIFE到train_log文件夹,并重命名为IFNet_HDv3和RIFE_HDv3。

在使用inference_video.py测试时提示如下错误

Loaded v3.x HD model. 0%| | 0/40 [00:00<?, ?it/s]Traceback (most recent call last): File "C:\Users\98mxr\Downloads\arXiv2020-RIFE\inference_video.py", line 253, in output = make_inference(I0, I1, 2*args.exp-1) if args.exp else [] File "C:\Users\98mxr\Downloads\arXiv2020-RIFE\inference_video.py", line 174, in make_inference middle = model.inference(I0, I1, args.scale) File "C:\Users\98mxr\Downloads\arXiv2020-RIFE\train_log\RIFE_HDv3.py", line 54, in inference flow, mask, merged, flow_teacher, merged_teacher, loss_distill = self.flownet(imgs, scale_list) File "C:\Users\98mxr\AppData\Local\Programs\Python\Python39\lib\site-packages\torch\nn\modules\module.py", line 1102, in _call_impl return forward_call(input, **kwargs) File "C:\Users\98mxr\Downloads\arXiv2020-RIFE\model\IFNet.py", line 81, in forward flow, mask = stu[i](torch.cat((img0, img1), 1), None, scale=scale[i]) TypeError: 'float' object is not subscriptable

根据 @YiWeiHuang-stack的指导,这是因为v6模型的--scale参数需要传入[4,2,1],但是现在inference_video.py限制了我这么做

能请调查下相关代码使得v6可以与官方推理代码配合吗

hzwer commented 2 years ago

为啥要这么做呢?https://github.com/hzwer/Practical-RIFE 和 RIFE 本来就是想分开维护的呀,不然都整理不过来了。

98mxr commented 2 years ago

我按照HDv3.8的样式修改了RIFE.py的scale相关代码,现在可以正常使用了

mikebilly commented 2 years ago

我将RIFE_trained_v6.zip里的train_log文件解压到rife目录中。并且复制了model文件夹下的IFNet和RIFE到train_log文件夹,并重命名为IFNet_HDv3和RIFE_HDv3。

在使用inference_video.py测试时提示如下错误

Loaded v3.x HD model. 0%| | 0/40 [00:00<?, ?it/s]Traceback (most recent call last): File "C:\Users\98mxr\Downloads\arXiv2020-RIFE\inference_video.py", line 253, in output = make_inference(I0, I1, 2*args.exp-1) if args.exp else [] File "C:\Users\98mxr\Downloads\arXiv2020-RIFE\inference_video.py", line 174, in make_inference middle = model.inference(I0, I1, args.scale) File "C:\Users\98mxr\Downloads\arXiv2020-RIFE\train_log\RIFE_HDv3.py", line 54, in inference flow, mask, merged, flow_teacher, merged_teacher, loss_distill = self.flownet(imgs, scale_list) File "C:\Users\98mxr\AppData\Local\Programs\Python\Python39\lib\site-packages\torch\nn\modules\module.py", line 1102, in _call_impl return forward_call(input, **kwargs) File "C:\Users\98mxr\Downloads\arXiv2020-RIFE\model\IFNet.py", line 81, in forward flow, mask = stu[i](torch.cat((img0, img1), 1), None, scale=scale[i]) TypeError: 'float' object is not subscriptable

根据 @YiWeiHuang-stack的指导,这是因为v6模型的--scale参数需要传入[4,2,1],但是现在inference_video.py限制了我这么做

能请调查下相关代码使得v6可以与官方推理代码配合吗

where did you get RIFE_trained_v6.zip?, and what version produces the best results (i suppose v2.3)

98mxr commented 2 years ago

我将RIFE_trained_v6.zip里的train_log文件解压到rife目录中。并且复制了model文件夹下的IFNet和RIFE到train_log文件夹,并重命名为IFNet_HDv3和RIFE_HDv3。 在使用 inference_video.py 测试时提示错误如下 加载 v3.x 高清模型。0%| | 0/40 [00:00<?, ?it/s]Traceback(最近一次通话最后):文件“C:\Users\98mxr\Downloads\arXiv2020-RIFE\inference_video.py”,第 253 行,输出 = make_inference (I0, I1, 2*args.exp-1) if args.exp else [] 文件“C:\Users\98mxr\Downloads\arXiv2020-RIFE\inference_video.py”,第 174 行,在 make_inference 中间 = 模型中。 inference(I0, I1, args.scale) 文件“C:\Users\98mxr\Downloads\arXiv2020-RIFE\train_log\RIFE_HDv3.py”,第 54 行,在推理流、掩码、合并、flow_teacher、merged_teacher、loss_distill = self .flownet(imgs, scale_list) 文件“C:\Users\98mxr\AppData\Local\Programs\Python\Python39\lib\site-packages\torch\nn\modules\module.py”,第 1102 行,在 _call_impl 中返回 forward_call (input, **kwargs) 文件“C:\Users\98mxr\Downloads\arXiv2020-RIFE\model\IFNet.py”,第 81 行, 可知@YiWeiHuang-stack的指导是因为需要参数,但是现在[4,2,1] inference.py限制了我的模型 可以请配合代码与下相关代码v6官方推理吗

你从哪里得到 RIFE_trained_v6.zip?,什么版本产生最好的结果(我想是 v2.3)

RIFE_trained_v6 and RIFE_m_train_log are models proposed in RIFE 6th and 7th edition papers. If you don't consider x3 or x5, then HDv2.3 can still get the best visual quality. But I think RIFE_m is useful when x5's anime vfi, especially when it's used like HDv4.0's "fast mode".