How to run hardware accelerated image processing on the i.MX8 Plus NPU

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

How to run hardware accelerated image processing on the i.MX8 Plus NPU

1,384 Views
mz-fixposition
Contributor II

I found good documentation on how to deploy machine learning models on the i.MX (https://www.nxp.com/docs/en/user-guide/IMX-MACHINE-LEARNING-UG.pdf)

What I am interested in is how to run classical image processing algorithms with hardware acceleration. There are plenty of classical computer vision tasks that are highly concurrent and that benefit greatly from hw acceleration. To name some of them:

  • Image feature extraction (FAST, SIFT, SURF)
  • Feature descriptor matching
  • Lucas Kanade optical flow estimation

I was wondering if there is a way to run tasks like these on the NPUs that come with some of the i.MX8 SoMs. It would be highly appreciated if anybody could point to some reference implementations or on what libs could be use for this purpose.

As reference you can have a look at the CUDA module from OpenCV (https://opencv.org/platforms/cuda/), which can be used to run selected OpenCV functionality with nivida HW.

0 Kudos
2 Replies

1,370 Views
Bio_TICFSL
NXP TechSupport
NXP TechSupport

Hello mz-fixposition,

There is an application note that explain how to use NPU in i.MX8 processors:

https://www.nxp.com/docs/en/application-note/AN12964.pdf.

 

Best regards

 

0 Kudos

1,343 Views
mz-fixposition
Contributor II

Hello, thanks for the feedback!

I went through the application note.

  • For machine learning one can use the TF Lite or ARM NN frameworks
  • For other applications than ML, one has to implement everything in OpenVX. There is no native support of OpenCV

Is that correct?

I am wondering if there are application examples for developing applications directly with OpenVX, especially for common tasks such as matrix multiplication, SVD problems or image processing?

I found a lot of application examples for TF Lite or ARM NN in the application note that you linked and in the other documentation for the i.MX8, something similar for directly developing with OpenVX would be really nice.

Best regards

0 Kudos