|
在虚幻中使用微软的ONNXRuntime高效(CUDA)的运行RobustVideoMatting(字节跳动的AI扣像模型) GitHub - PeterL1n/RobustVideoMatting: Robust Video Matting in PyTorch, TensorFlow, TensorFlow.js, ONNX, CoreML! https://github.com/microsoft/onnxruntime
未完待续
未经许可禁止转载
下面的内容是之前开发中记录的零碎,待整理
相关插件
虚幻5自带插件NNI ![[NNI.png]] ONNXRuntime模块(插件的核心):基于微软ONNXRuntime源代码在虚幻中创建的模块 这种方式需要对原始ONNXRuntime源代码做修改,还要自行处理库的依赖 为什么要这么做呢?
商城中的第三方插件NNEngine ![[NNEngine.png]] OnnxRuntimeNNEngine模块(插件的核心):基于微软ONNXRuntime预编译的库 ONNXRuntime库的升级非常方便
硬件加速
DirectML 只能用于Dirext12
CreateTensorValueFromExistingD3DResource Texture <===> Tensor 有现成的参考,比较方便
https://github.com/PicaroonX/OnnxRuntimeDirectMLEPSample
CUDA 只能用于Nvidia显卡
1、创建CUDA版本的Input & Output Tensors
ONNXRuntime CUDA Tensors
===========================================
Input Tensor
2、通过ComputerShader将Picture(DX Texture)转换成符合AI模型需要的Input Tensor(DX Resource)
This shader converts a DX texture (BGRA/BGRX/RGBA/GRAY) into NCHW FLOAT Tensor with channel order RGB/BGR/GRAY
https://github.com/microsoft/onnxruntime/blob/main/winml/lib/Api.Image/shaders/SurfaceToTensorFloat.hlsl
3、通过cuMemcpy将DX Resource版的Tensor Data复制到CUDA Input Tensor中
=========================================== Run(Model)
===========================================
处理结果,执行与Input Tensor相反的过程 TensorRT |
|