NNEngine - Neural Network Engine 1.5 适配UE5.3
By simply calling a few Blueprint nodes, you can load and run cutting-edge AI.
This plugin supports ONNX (Open Neural Network Exchange), which is an open-source machine learning model format widely used.
Many ML frameworks such as PyTorch and TensorFlow can export its model in ONNX format.
Many trained models are available on ONNX Model Zoo.
Performance is our first consideration.
This plugin supports model optimization at runtime and GPU accelerations on various hardware as well as this plugin itself is optimized.
Demo Project contains practical examples of
Human detection
Human pose estimation
Face detection
Facial landmark estimation
Eye tracking
using a single RGB camera.
Also, example projects for
Depth estimation using a monocular RGB camera
Arbitrary artistic style transfer
are available.
Prerequisite to use with CUDA and TensorRT
To use with CUDA and TensorRT, you need to install the following versions of CUDA, cuDNN, and TensorRT.
Windows:
The versions of cuDNN and TensorRT are different for RTX30** series and others. We only tested GTX1080Ti, RTX2070, RTX3060Ti and RTX3070. Others are not tested.
Versions for other than RTX30** series (RTX20**, GTX10**)
CUDA: 11.0.3
cuDNN: 8.0.2 (July 24th, 2020), for CUDA 11.0
TensorRT: 7.1.3.4 for CUDA 11.0
Versions for RTX30** series
CUDA: 11.0.3
cuDNN: 8.0.5 (November 9th, 2020), for CUDA 11.0
TensorRT: 7.2.2.3 for CUDA 11.0
Ubuntu:
CUDA: 11.4.2 for Linux x86_64 Ubuntu 18.04
cuDNN: 8.2.4 (September 2nd, 2021), for CUDA 11.4, Linux x86_64
TensorRT: 8.2.3.0 (8.2 GA Update 2) for Linux x86_64, CUDA 11.0-11.5
To use with TensorRT, it is recommended to add the following environment variables to cache TensorRT Engine:
"ORT_TENSORRT_ENGINE_CACHE_ENABLE" and set its value to "1".
"ORT_TENSORRT_CACHE_PATH" and set its value to any path where you want to save the cache, for example "C:\temp".
Change log
v1.4 (Mar 18, 2022)
- Update OnnxRuntime module
- Add an option to disable dependency on OpenCV.
v1.3 (Mar 4, 2022)
- Updated OnnxRuntime module
- Add a Blueprint callable function to construct "Onnx Tensor Info". Use this function to dynamically specify the shape of input/output tensors.
v1.2 (Feb 18, 2022)
- Updated TextureProcessing module
- Added a component to convert UTexture to float array. (`TextureProcessFloatComponent`)
- Added functions to create UTexture from arrays of byte or float.
- Fixed a bug that some UTexture cannot be processed by `TextureProcessComponent`.
- Now `BP_TextureProcessComponent` is deprecated. Use `TextureProcessComponent` instead.
- Updated CustomizedOpenCV module
- Removed OpenCV's `check` function to avoid conflict with UE4's `check` macro.
- Added example projects for
- Depth estimation using a monocular RGB camera
- Arbitrary artistic style transfer
v1.1 (Feb 11, 2022)
- Added support for Ubuntu 18.04.6 Desktop 64bit
- GPU accelerations by CUDA and TensorRT are supported.
- You need an NVIDIA GPU which supports CUDA, cuDNN, and TensorRT.
- You need to install CUDA ver 11.4.2, cuDNN ver 8.2.4, and TensorRT ver 8.2.3.0.
- DNN models which contain unsupported operators cannot be loaded when TensorRT is enabled.
See the official document for supported operators.
(NNEngine uses TensorRT 8.2 as backend on Linux)
- Tested environment:
- Unreal Engine: 4.26.2, 4.27.2
- Vulkan utils: 1.1.70+dfsg1-1ubuntu0.18.04.1
- .NET SDK: 6.0.101-1
- OS: Ubuntu 18.04.6 Desktop 64bit
- CPU: Intel i3-8350K
- GPU: NVIDIA GeForce GTX 1080 Ti
- Driver: 470.130.01
- CUDA: 11.4.2-1
- cuDNN: 8.2.4
- TensorRT: 8.2.3.0
- Added EXPERIMENTAL support for Android as target build
- Tested environment:
- Device: Xiaomi Redmi Note 9S
- Android version: 10 QKQ1.191215.002
- Note:
- You need to convert your model to ORT format.
See the official document for the details.
- There are some DNN models which cannot be loaded on Android.
- NNEngine uses ONNX Runtime Mobile ver 1.8.1 on Android.
- GPU acceleration by NNAPI is not tested yet.
技术细节
Features:
Loads ONNX models at runtime. Automatically optimizes the model when loaded.
Runs ONNX models.
(On Windows) Supports hardware acceleration by DirectML on DirectX 12 capable GPUs.
(On Windows and Ubuntu) Supports hardware acceleration by CUDA and TensorRT on supported NVIDIA GPUs.
(On Windows) Gets a list of GPU names available on the system.
Processes (resize, crop, rotate) UTexture and converts it to int8 array.
Code Modules:
OnnxRuntime (Runtime)
TextureProcessing (Runtime)
CustomizedOpenCV (Runtime)
DirectXUtility (Runtime)
Number of Blueprints: 3
Number of C++ Classes: 7+
Network Replicated: No
Supported Development Platforms: Windows 10 64bit, Ubuntu 18.04.6 Desktop 64bit
Supported Target Build Platforms: Windows 10 64bit, Ubuntu 18.04.6 Desktop 64bit
Documentation: Link
Example Project:
Human pose estimation and facial capture using a single RGB camera
Depth estimation using a monocular RGB camera
Arbitrary artistic style transfer
Important/Additional Notes:
Demo Project 1 is distributed as a C++ project. You need to install Visual Studio to compile it.
只需调用几个 Blueprint 节点,即可加载并运行最先进的人工智能。
该插件支持 ONNX(开放神经网络交换),这是一种广泛使用的开源机器学习模型格式。
PyTorch 和 TensorFlow 等许多 ML 框架都能以 ONNX 格式导出模型。
ONNX Model Zoo 上有许多训练有素的模型。
性能是我们的首要考虑因素。
该插件支持运行时模型优化和各种硬件上的 GPU 加速,而且插件本身也经过了优化。
演示项目包含以下实用示例
人体检测
人体姿态估计
人脸检测
面部地标估计
眼球跟踪
使用单个 RGB 摄像头
此外,还有以下示例项目
使用单目 RGB 摄像机进行深度估计
任意艺术风格转移
的示例项目。
使用 CUDA 和 TensorRT 的前提条件
要使用 CUDA 和 TensorRT,您需要安装以下版本的 CUDA、cuDNN 和 TensorRT。
Windows:
cuDNN 和 TensorRT 的版本因 RTX30** 系列和其他系列而异。我们只测试了 GTX1080Ti、RTX2070、RTX3060Ti 和 RTX3070。其他版本未进行测试。
RTX30** 系列(RTX20**、GTX10**)以外的版本
CUDA:11.0.3
cuDNN:8.0.2(2020 年 7 月 24 日),适用于 CUDA 11.0
TensorRT:7.1.3.4,用于 CUDA 11.0
RTX30** 系列版本
CUDA:11.0.3
cuDNN:8.0.5(2020 年 11 月 9 日),用于 CUDA 11.0
TensorRT:7.2.2.3,用于 CUDA 11.0
乌班图
CUDA:11.4.2,适用于 Linux x86_64 Ubuntu 18.04
cuDNN:8.2.4(2021 年 9 月 2 日),适用于 CUDA 11.4、Linux x86_64
TensorRT:8.2.3.0(8.2 GA Update 2),适用于 Linux x86_64、CUDA 11.0-11.5
要与 TensorRT 配合使用,建议在缓存 TensorRT 引擎时添加以下环境变量:
"ORT_TENSORRT_ENGINE_CACHE_ENABLE" 并将其值设为 "1"。
"ORT_TENSORRT_CACHE_PATH",将其值设为要保存缓存的任意路径,例如 "C:\temp"。
更改日志
v1.4 (2022 年 3 月 18 日)
- 更新 OnnxRuntime 模块
- 添加禁用 OpenCV 依赖的选项。
v1.3 (2022 年 3 月 4 日)
- 更新 OnnxRuntime 模块
- 添加蓝图可调用函数以构建 "Onnx 张量信息"。使用该函数可动态指定输入/输出张量的形状。
v1.2 (2022 年 2 月 18 日)
- 更新了纹理处理模块
- 添加了将 UTexture 转换为浮点数组的组件。(`TextureProcessFloatComponent`)
- 添加了从字节或浮点数组创建 UTexture 的函数。
- 修复了 `TextureProcessComponent` 无法处理某些 UTexture 的错误。
- 现在 `BP_TextureProcessComponent` 已被弃用。请使用 `TextureProcessComponent` 代替。
- 更新了 CustomizedOpenCV 模块
- 删除了 OpenCV 的 `check` 函数,以避免与 UE4 的 `check` 宏冲突。
- 添加了以下示例项目
- 使用单目 RGB 摄像机进行深度估计
- 任意艺术风格转移
v1.1 (2022 年 2 月 11 日)
- 新增对 Ubuntu 18.04.6 64 位桌面的支持
- 支持 CUDA 和 TensorRT 的 GPU 加速。
- 你需要一个支持 CUDA、cuDNN 和 TensorRT 的英伟达 GPU。
- 您需要安装 CUDA 11.4.2 版、cuDNN 8.2.4 版和 TensorRT 8.2.3.0 版。
- 启用 TensorRT 后,将无法加载包含不支持运算符的 DNN 模型。
有关支持的运算符,请参阅官方文档。
(NNEngine 在 Linux 上使用 TensorRT 8.2 作为后端)
- 测试环境:
- 虚幻引擎:4.26.2、4.27.2
- Vulkan 工具:1.1.70+dfsg1-1ubuntu0.18.04.1
- .NET SDK: 6.0.101-1
- 操作系统 Ubuntu 18.04.6 桌面 64 位
- CPU: 英特尔 i3-8350K
- 图形处理器: NVIDIA GeForce GTX 1080 Ti NVIDIA GeForce GTX 1080 Ti
- 驱动程序 470.130.01
- cuda: 11.4.2-1
- cuDNN: 8.2.4
- TensorRT: 8.2.3.0
- 添加了对 Android 作为目标构建的 EXPERIMENTAL 支持
- 测试环境:
- 设备: 小米红米 Note 9S
- 安卓版本:10 QKQ1.191215.002
- 请注意
- 您需要将您的机型转换为 ORT 格式。
详情请查看官方文档。
- 有些 DNN 模型无法在安卓系统上加载。
- NNEngine 在 Android 上使用 ONNX Runtime Mobile ver 1.8.1。
- 尚未测试 NNAPI 的 GPU 加速功能。
技术细节
技术细节
运行时加载 ONNX 模型。加载时自动优化模型。
运行 ONNX 模型。
(在 Windows 上)在支持 DirectX 12 的 GPU 上支持 DirectML 硬件加速。
(在 Windows 和 Ubuntu 上)在支持的英伟达™(NVIDIA®)图形处理器上支持 CUDA 和 TensorRT 硬件加速。
(在 Windows 上)获取系统上可用的 GPU 名称列表。
处理(调整大小、裁剪、旋转)UTexture 并将其转换为 int8 数组。
代码模块:
OnnxRuntime (运行时)
纹理处理(运行时)
自定义 OpenCV(运行时)
DirectXUtility (运行时)
蓝图数量 3
C++ 类的数量 7+
网络复制 无
支持的开发平台 Windows 10 64 位、Ubuntu 18.04.6 桌面 64 位
支持的目标构建平台 Windows 10 64 位、Ubuntu 18.04.6 桌面 64 位
文档 链接
示例项目:
人体姿态估计与面部捕捉
页:
[1]