diff --git a/README.md b/README.md index bba280f986..38609fb43e 100644 --- a/README.md +++ b/README.md @@ -117,9 +117,9 @@ MIVisionX provides you with tools for accomplishing your tasks throughout the wh ### Hardware -* **CPU**: [64-bit SSE4.2 or later](https://github.com/RadeonOpenCompute/ROCm#hardware-and-software-support) -* **GPU**: [GFX7 or later](https://github.com/RadeonOpenCompute/ROCm#hardware-and-software-support) [optional] -* **APU**: [Carrizo or later](https://github.com/RadeonOpenCompute/ROCm#hardware-and-software-support) [optional] +* **CPU**: [AMD64](https://docs.amd.com/bundle/Hardware_and_Software_Reference_Guide/page/Hardware_and_Software_Support.html) +* **GPU**: [AMD Radeon™ Graphics](https://docs.amd.com/bundle/Hardware_and_Software_Reference_Guide/page/Hardware_and_Software_Support.html) [optional] +* **APU**: [AMD Radeon™ `Mobile`/`Embedded`](https://docs.amd.com/bundle/Hardware_and_Software_Reference_Guide/page/Hardware_and_Software_Support.html) [optional] **Note:** Some modules in MIVisionX can be built for `CPU ONLY`. To take advantage of `Advanced Features And Modules` we recommend using `AMD GPUs` or `AMD APUs`. diff --git a/amd_openvx/README.md b/amd_openvx/README.md index af38d27e2f..1247a060ca 100644 --- a/amd_openvx/README.md +++ b/amd_openvx/README.md @@ -1,68 +1,142 @@

-# AMD OpenVX +# Khronos OpenVX API - Current Version `1.3` -* The Khronos OpenVX API offers a set of optimized primitives for low-level image processing, computer vision, and neural net operators. The API provides a simple method to write optimized code that is portable across multiple hardware vendors and platforms. +* Khronos [OpenVX](https://www.khronos.org/openvx/) API offers a set of optimized primitives for low-level image processing, computer vision, and neural net operators. The API provides a simple method to write optimized code that is portable across multiple hardware vendors and platforms. * OpenVX allows for resource and execution abstractions, which enable hardware vendors to optimize their implementation for their platform. Performance portability across CPUs, GPUs, and special-function hardware are one of the design goals of the OpenVX specification. * OpenVX is used to build, verify, and coordinate computer vision and neural network graph executions. The graph abstraction enables OpenVX implementation to optimize execution for the underlying hardware. Using optimized OpenVX conformant implementation, software developers can spend more time on algorithmic innovations without worrying about the performance and portability of their applications. +

+ * The standard defines graph conventions and execution semantics to address the needs of the developers. The advantage of the graphical interface is the ability of the underlying conformant implementation to optimize the whole graph pipeline instead of specific functions. -* OpenVX specification also defines the VXU or the immediate function library. VXU operators allow developers to use all the OpenVX operators as a directly callable C function without creating a graph first. Applications built using the VXU library do not benefit from the optimizations enabled by graph execution. The VXU library can be the simplest way to use OpenVX and is the first step in porting existing vision applications. +* OpenVX specification also defines the VXU or the immediate function library. VXU operators allow developers to use all the OpenVX operators as a directly callable C function without creating a graph first. -* AMD OpenVX is a highly optimized conformant open-source implementation of the [Khronos OpenVX 1.3](https://www.khronos.org/registry/OpenVX/specs/1.3/html/OpenVX_Specification_1_3.html) computer vision specification. It allows for rapid prototyping as well as fast execution on a wide range of computer hardware, including small embedded x86 CPUs and large workstation discrete GPUs. +* Applications built using the VXU library do not benefit from the optimizations enabled by graph execution. The VXU library can be the simplest way to use OpenVX and is the first step in porting existing vision applications. + +# AMD OpenVX + +* AMD OpenVX is a highly optimized conformant open-source implementation of the [Khronos OpenVX 1.3](https://www.khronos.org/registry/OpenVX/specs/1.3/html/OpenVX_Specification_1_3.html) computer vision specification. It allows for rapid prototyping as well as fast execution on a wide range of computer hardware, including small embedded `AMD64` CPUs and large workstation discrete GPUs. ## AMD OpenVX - Vision Feature Set Conformant Implementation -The Vision Conformance Feature Set includes all the functions and objects in the Base Feature Set, plus the vision data objects and vision functions. +The Vision Conformance Feature Set includes all the functions and objects in the `Base Feature Set`, plus the vision data objects and vision functions. ### The Base Feature Set The purpose is to define a minimal subset of OpenVX features that enable the construction and execution of OpenVX graphs, but it does not contain any specific vision-processing operations. -**Basic framework objects** -| | | | | -|-------------|-------------|-------------|-------------| -| [vx_reference](https://www.khronos.org/registry/OpenVX/specs/1.3/html/OpenVX_Specification_1_3.html#_vx_reference) | [vx_context](https://www.khronos.org/registry/OpenVX/specs/1.3/html/OpenVX_Specification_1_3.html#_vx_context) | [vx_graph](https://www.khronos.org/registry/OpenVX/specs/1.3/html/OpenVX_Specification_1_3.html#_vx_graph) | [vx_kernel](https://www.khronos.org/registry/OpenVX/specs/1.3/html/OpenVX_Specification_1_3.html#_vx_kernel) | -| [vx_node](https://www.khronos.org/registry/OpenVX/specs/1.3/html/OpenVX_Specification_1_3.html#_vx_node) | [vx_parameter](https://www.khronos.org/registry/OpenVX/specs/1.3/html/OpenVX_Specification_1_3.html#_vx_parameter) | [vx_meta_format](https://www.khronos.org/registry/OpenVX/specs/1.3/html/OpenVX_Specification_1_3.html#_vx_meta_format) | [vx_delay](https://www.khronos.org/registry/OpenVX/specs/1.3/html/OpenVX_Specification_1_3.html#_vx_delay) | +**Basic Framework Objects** + + + + + + + + + + + + + +
vx_referencevx_contextvx_graphvx_kernel
vx_nodevx_parametervx_meta_formatvx_delay
+ +**Note:** Details about [Framework Objects](https://www.khronos.org/registry/OpenVX/specs/1.3/html/OpenVX_Specification_1_3.html#sec_framework_objects) ### The Vision Conformance Feature Set To provide a basic set of vision processing functions. This set of functions is roughly equivalent to the set of functions available in version 1.1 of the OpenVX specification. In addition to the framework objects included in the Base Feature Set, the Vision Conformance Feature Set includes a set of data objects that the Vision functions operate upon and produce. -**Vision Conformance required data objects** -| | | | | -|-------------|-------------|-------------|-------------| -| vx_array | vx_convolution | vx_distribution | vx_image | -| vx_lut | vx_matrix | vx_pyramid | vx_remap | -| vx_scalar | vx_threshold | vx_object_array| | - -**Vision Conformance required functions** -| | | | | | | -|-------------|-------------|-------------|-------------|-------------|-------------| -| AbsDiff | Add | And | Box3x3 | CannyEdgeDetector | ChannelCombine | -| ChannelExtract | ColorConvert | ConvertDepth | Convolve | Dilate3x3 | EqualizeHist | -| Erode3x3 | FastCorners | Gaussian3x3 | GaussianPyramid | HarrisCorners | HalfScaleGaussian | -| Histogram | IntegralImage | LaplacianPyramid | LaplacianReconstruct | Magnitude | MeanStdDev | -| Median3x3 | MinMaxLoc | Multiply | NonLinearFilter | Not | OpticalFlowPyrLK | -| Or | Phase | Remap | ScaleImage | Sobel3x3 | Subtract | -| TableLookup | Threshold | WarpAffine | WarpPerspective | Xor | WeightedAverage | - -The amd_openvx project consists of the following components: - -* [OpenVX](openvx/README.md): AMD OpenVX library - -The OpenVX framework provides a mechanism to add new vision functions to OpenVX by 3rd party vendors. Look into amd_openvx_extensions for additional OpenVX modules and utilities. - -* **vx_loomsl**: Radeon LOOM stitching library for live 360-degree video applications -* **vx_nn**: OpenVX neural network module that was built on top of [MIOpen](https://github.com/ROCmSoftwarePlatform/MIOpen) -* **vx_opencv**: OpenVX module that implemented a mechanism to access OpenCV functionality as OpenVX kernels -* **vx_rpp**: OpenVX extension providing an interface to some of the Radeon Performance Primitives ([RPP](https://github.com/GPUOpen-ProfessionalCompute-Libraries/rpp)) functions. This extension is used to enable [rocAL](../rocAL/README.md) to perform image augmentation. -* **vx_winml**: OpenVX module that implemented a mechanism to access Windows Machine Learning(WinML) functionality as OpenVX kernels - -## Features +**Vision Conformance Data Objects** + + + + + + + + + + + + + + + + + + + +
vx_arrayvx_convolutionvx_distributionvx_image
vx_lutvx_matrixvx_pyramidvx_remap
vx_scalarvx_thresholdvx_object_array 
+ +**NOTE:** Details about [Data Objects](https://www.khronos.org/registry/OpenVX/specs/1.3/html/OpenVX_Specification_1_3.html#sec_data_objects) + +**Vision Conformance Functions** + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AbsDiffAddAndBox3x3CannyEdgeDetectorChannelCombine
ChannelExtractColorConvertConvertDepthConvolveDilate3x3EqualizeHist
Erode3x3FastCornersGaussian3x3GaussianPyramidHarrisCornersHalfScaleGaussian
HistogramIntegralImageLaplacianPyramidLaplacianReconstructMagnitudeMeanStdDev
Median3x3MinMaxLocMultiplyNonLinearFilterNotOpticalFlowPyrLK
OrPhaseRemapScaleImageSobel3x3Subtract
TableLookupThresholdWarpAffineWarpPerspectiveWeightedAverageXor
+ +**Note:** Details about [Functions](https://www.khronos.org/registry/OpenVX/specs/1.3/html/OpenVX_Specification_1_3.html#group_vision_functions) + +## AMD OpenVX - Features * The code is highly optimized for both x86 CPU and OpenCL/HIP for GPU * Supported hardware spans the range from low power embedded APUs, laptops, desktops, and workstation graphics @@ -70,12 +144,23 @@ The OpenVX framework provides a mechanism to add new vision functions to OpenVX * Includes a “graph optimizer” that looks at the entire processing pipeline and removes/replaces/merges functions to improve performance and minimize bandwidth at runtime * Scripting support with [RunVX](../utilities/runvx/README.md) allows for rapid prototyping, without re-compiling at production performance levels +**NOTE:** The amd_openvx project consists of the following components: + * [OpenVX](openvx/README.md): AMD OpenVX library + +**NOTE:** The OpenVX framework provides a mechanism to add new vision functions to OpenVX by 3rd party vendors. Look into amd_openvx_extensions for additional OpenVX modules and utilities. + * **vx_loomsl**: Radeon LOOM stitching library for live 360-degree video applications + * **vx_nn**: OpenVX neural network module that was built on top of [MIOpen](https://github.com/ROCmSoftwarePlatform/MIOpen) + * **vx_opencv**: OpenVX module that implemented a mechanism to access OpenCV functionality as OpenVX kernels + * **vx_rpp**: OpenVX extension providing an interface to some of the Radeon Performance Primitives ([RPP](https://github.com/GPUOpen-ProfessionalCompute-Libraries/rpp)) functions. This extension is used to enable [rocAL](../rocAL/README.md) to perform image augmentation. + * **vx_winml**: OpenVX module that implemented a mechanism to access Windows Machine Learning(WinML) functionality as OpenVX kernels + ## Pre-requisites -* CPU: 64-bit SSE4.2 or above -* GPU: Radeon Professional Graphics Cards or Vega Family of Products (16GB required for vx_loomsl and vx_nn libraries) +* **CPU**: [AMD64](https://docs.amd.com/bundle/Hardware_and_Software_Reference_Guide/page/Hardware_and_Software_Support.html) +* **GPU**: [AMD Radeon™ Graphics](https://docs.amd.com/bundle/Hardware_and_Software_Reference_Guide/page/Hardware_and_Software_Support.html) [optional] + Windows: install the latest drivers and OpenCL SDK [download](https://github.com/GPUOpen-LibrariesAndSDKs/OCL-SDK/releases) + Linux: install [ROCm](https://rocm.github.io/ROCmInstall.html) +* **APU**: [AMD Radeon™ `Mobile`/`Embedded`](https://docs.amd.com/bundle/Hardware_and_Software_Reference_Guide/page/Hardware_and_Software_Support.html) [optional] ## Build Instructions diff --git a/docs/images/openvx_software_layers.png b/docs/images/openvx_software_layers.png new file mode 100644 index 0000000000..b3005fd252 Binary files /dev/null and b/docs/images/openvx_software_layers.png differ diff --git a/utilities/runvx/README.md b/utilities/runvx/README.md index fc2e9c355a..a792a350cf 100644 --- a/utilities/runvx/README.md +++ b/utilities/runvx/README.md @@ -6,12 +6,12 @@ If available, this project uses OpenCV for camera capture and image display. ## Prerequisites -* **CPU**: 64-bit SSE4.2 or above -* **GPU**: GFX7 or later [optional] +* **CPU**: AMD64 +* **GPU**: AMD Radeon™ Graphics [optional] * Windows: install the latest drivers and OpenCL SDK download [optional] * Linux: install ROCm [optional] * OpenCV `3.4+` [optional] - + Set `OpenCV_DIR` environment variable to `OpenCV/build` folder + + `Windows`:Set `OpenCV_DIR` environment variable to `OpenCV/build` folder * Install `libssl-dev` on Linux [optional] ## RunVX Usage and GDF Syntax