AMD WinML Extension#
The AMD WinML (vx_winml) is an OpenVX module that implements a mechanism to access WinML functionality as OpenVX kernels. These kernels can be accessed from within OpenVX framework using OpenVX API call vxLoadKernels(context, “vx_winml”).
The WinML extension will allow developers to import a pre-trained ONNX model into an OpenVX graph and add hundreds of different pre & post-processing vision
/ generic
/ user-defined
functions, available in OpenVX and OpenCV interop, to the input and output of the neural net model. This will allow developers to build an end to end application for inference.
List of WinML-interop kernels#
The following is a list of WinML functions that have been included in the vx_winml module.
onnxToMivisionX com.winml.onnx_to_mivisionx
convertImageToTensor com.winml.convert_image_to_tensor
getTopKLabels com.winml.get_top_k_labels
NOTE: For the list of OpenVX API calls for WinML-interop refer include/vx_ext_winml.h
Build Instructions#
Pre-requisites#
Windows
10
/11
, version1809
or laterWindows SDK, build
17763
or laterVisual Studio 2019, version
16.11.5
or laterVisual Studio extension for C++/WinRT
Install the latest AMD drivers
Install OpenCL SDK
Install OpenCV 4.5.5
Set
OpenCV_DIR
environment variable toOpenCV/build
folderAdd
%OpenCV_DIR%\x64\vc14\bin
or%OpenCV_DIR%\x64\vc15\bin
to yourPATH
Build using Visual Studio 2019
on 64-bit Windows 10
/ 11
#
Use
amd_openvx_extensions/amd_winml.sln
to build for x64 platform
Utilities#
MIVisionX WinML Validate#
This utility can be used to test and verify the ONNX model on the Windows platform. If the ONNX model is supported by this utility, the amd_winml extension can import the ONNX model and add other OpenVX nodes for pre & post-processing in a single OpenVX graph to run efficient inference.
NOTE: Samples are available
Samples#
Samples to run inference on a single image and a live camera is provided in the samples folder.