DefTruth / RVM-Inference

🔥Robust Video Matting C++ inference toolkit with ONNXRuntime、MNN、NCNN and TNN, via lite.ai.toolkit.
GNU General Public License v3.0
116 stars 27 forks source link

我尝试用你的提供的代码转onnx时碰到了TypeError: upsample_bilinear2d() received an invalid combination of arguments #17

Open Sourishlemon opened 2 years ago

Sourishlemon commented 2 years ago

这是我的model的forward QQ图片20220217173302 这是报错 CI4BHW JTC5 XECR%Q QGKM 我是这样运行的 python Exporter.py --model-variant mobilenetv3 --precision float32 --opset 13 --device cpu --output D:\下载\test.onnx

DefTruth commented 2 years ago

可以看一下这个issue:

你这里看起来像是downsample_ratio的数据类型不对。

Sourishlemon commented 2 years ago

L(KSE%A5SY_) 9Z2%PCUB70 我尝试了改了下model里的downsample_ratio=0.25还尝试了把w,h设置为1920,1080都不行。 YTK@PE{A9D{KYNRIAG%OXXW 我打印了x为 F0TR0YJOGO2UIW U78KQR`E 为什么调用 x = F.interpolate函数时,格式就错了呢

DefTruth commented 2 years ago

你看看upsample_bilnear2d对于scale_factor的要求吧,需要是 float元组或float,不是Tensor

Sourishlemon commented 2 years ago

感谢,成功转成openvino了,就是不知道怎么推理测试,网上例子都是针对图片的,我要输入的是视频该怎么做呢

DefTruth commented 2 years ago

可以参考我写的一个动态onnx推理的python版本,在我fork的分支里的inference_onnx.py(可以推理视频):

以及我在RVM里的PR:

我这个仓库的C++ API有推理视频的接口啊,你看下README.md

Sourishlemon commented 2 years ago

YD%IV5K6$K9BRG$KXGHY3B8 我尝试用生成的IR文件用openvino推理部署,但是遇到了问题,我不知道为什么输入的大小要求是rl1的1,16,135,240,而不是src的1,3,720,1280,该怎么解决呢

DefTruth commented 2 years ago

请看以下这个issue中的讨论,已经有说明:

至于理解为什么这样做,可能需要你看一下RVM的论文,以及它的pytorch源码进行理解。

Sourishlemon commented 2 years ago

image 老哥根据你的代码,我该成功了,但是不知道为什么效果很差 image

DefTruth commented 2 years ago

这我就不太清楚了,openvino我也没玩过

DefTruth commented 2 years ago

你的数据预处理出错了。为啥是减去这些均值呢?RVM的源码没有啊。它的预处理是:

transform = transforms.Compose([
            transforms.Resize(input_resize[::-1]),
            transforms.ToTensor()
        ])

transforms.ToTensor()里面做了归一化,x=x/255.

Sourishlemon commented 2 years ago

老哥我将自己导出的onnx用你的inference_onnx.py将输入改成设置的静态rlx发现运行的结果和转成openvino的一样,效果很差说明是我的onnx转的有问题但是我model也改了,export也改了还有哪边是我没注意到的吗 image image

DefTruth commented 2 years ago

你要不考虑直接用RVM官方提供的onnx吧,然后用我写的inference_onnx.py来推理,效果应该是没问题的。openvino我是真不了解,用的太少了。

Sourishlemon commented 2 years ago

老哥你有试过按静态输入转成的onnx的效果吗,就是像我上面那样,我想知道是不是就我这样,可否麻烦你测试下,磕头

DefTruth commented 2 years ago

我没有保留我转的静态onnx,我拿来转静态的MNN和TNN文件后就删掉了。ONNXRuntime版本的我是拿动态的来推的。过去大半年啦.....

Sourishlemon commented 2 years ago

不好意思,感谢老哥了

DefTruth commented 2 years ago

鉴于问这个问题的人比较多,我写了一份详细的知乎教程,请参考: