DefTruth

Results 256 comments of DefTruth

可以参考以下这段逻辑,我在lite里面增加了一些辅助函数,但还没合并进主分支,你可以参考下: ```c++ void lite::utils::swap_background(const cv::Mat &fgr_mat, const cv::Mat &pha_mat, const cv::Mat &bgr_mat, cv::Mat &out_mat, bool fgr_is_already_mul_pha) { // user-friendly method for background swap. if (fgr_mat.empty() || pha_mat.empty() || bgr_mat.empty()) return;...

可以支持GPU的,你可以参考[Windows CUDA 11.1 配置 lite.ai.toolkit](https://github.com/DefTruth/lite.ai.toolkit/issues/207) 进行编译。编译完之后把所有动态库拷贝到exe所在的文件夹。

提示的是找不到onnxruntime的库

你的rxi没有根据最新帧推理的结果更新啊,每次都是随机的值,而且一开始不应该是随机初始化,而是初始化为0. 可以参考我写的一个动态onnx推理的python版本,在我fork的分支里的inference_onnx.py: * https://github.com/DefTruth/RobustVideoMatting/blob/onnx/inference_onnx.py 以及我在RVM里的PR: * https://github.com/PeterL1n/RobustVideoMatting/pull/27

补充一下,你这里的数据预处理需要和RVM的源码一致。它的预处理是: ```python transform = transforms.Compose([ transforms.Resize(input_resize[::-1]), transforms.ToTensor() ]) ``` transforms.ToTensor()里面做了归一化,x=x/255.

鉴于问这个问题的人比较多,我写了一份详细的知乎教程,请参考: * [🔧填坑: RobustVideoMatting(5k+🔥 star)视频抠图静态ONNX模型转换](https://zhuanlan.zhihu.com/p/459088407)

有两个方法: * 1. 次优的方案。通过摄像头采集逐帧采集视频,并实时地调用图片抠图接口rvm->detect()方法进行抠图,参数和结果含义请参考文档说明。因为没有利用到RobustVideoMatting论文中提到的视频流上下文隐向量信息,所以是次优方案。目前rvm->detect_video()接口只能跑离线视频。 * 2. 最优方案。修改[rvm.h](https://github.com/DefTruth/lite.ai.toolkit/blob/main/lite/ort/cv/rvm.h)和[rvm.cpp](https://github.com/DefTruth/lite.ai.toolkit/blob/main/lite/ort/cv/rvm.cpp)源码,根据你的需求,增加一个detect_capture()方法,具体实现可以参考detect_video(),逻辑基本是类似的。然后重新编译lite.ai.toolkit,并调用你实现的方法。

这是ffmepg的链接的问题,如果要编解码的mp4的话,就要用到。之前已经解决过一次了,不知道为啥你的还是跑不了...如果是M1的话,目前确实是不支持的。你这里提示是是找不到ffmpeg的库,可以用 otool -L lite_rvm 、otool -L libopencv_videoio.dylib、otool -L libavformat.58.dylib 查一下库的依赖关系。相关的issue可参考: * https://github.com/DefTruth/lite.ai.toolkit/issues/203

因为我已经将ffmpeg打包进lite.ai.toolkit了,所以哪怕你的系统没有安装ffmpeg,应该也是可以运行的。我的log是这样的,卸载掉系统安装的ffmpeg,也是可以正常运行: 至于如何打包ffmpeg,你可以看我写的一篇文章: * [🤓opencv+ffmpeg编译打包全解指南](https://zhuanlan.zhihu.com/p/472115312)