作者: Sam (甄峰) sam_code@hotmail.com
与OpenCV的区别:
0. 基础概念:
0.1:OpenVX:
各种硬件厂商生产的芯片结构和功能区别很大,同样的代码,在不同硬件上实现的性能有很大区别。所以想要最大限度发挥硬件性能,必须针对硬件本身进行代码优化。所以一份算法程序,在不用硬件上经过优化的代码是不同的,这对开发者造成很大困扰。(主要指视觉领域)
为了解决这个问题,硬件厂商(Intel, AMD, TI 等)通过Khronos
Group组织制定一个跨平台标准以解决这个问题。类似的跨平台标准包括:OpenCL, OpenGL等。
如此,则硬件设备不同导致代码的差异由厂商自己实现,算法开发者只需要关注算法本身。
图像处理,就是对图片矩阵进行一系列操作,从中获取结果。每一种对图像的基本操作都可以看成一个node,
很多Node相连,就组成一个graph.
vendor就是针对自己的硬件实现node的代码,使之符合OpenVX的标准并优化。
开发者用代码将Node连接成Graph。
Vendor再针对自己的硬件优化加速graph.
与OpenCV的区别:
OpenCV偏向于用software的方式来实现一些定义的功能,而OpenVX是一些标准的API,系统第三方Vendor用硬件来实现一些图像处理功能,以提高效率。
0.2:TIM-VX:
芯原电子(VeriSilicon)是国内的一家NPU IP供应商,它开源了TIM-VX(Tensor Interface
Module for OpenVX). 用来在支持OpenVX的自研ML 加速IP上实现深度学习神经网络模型部署。
可以作为Android NN, TensorFlow-Lite, MLIR, TVM, Tengine等runtime
Inference Framework的backend模块。
0.3: 国内AI边缘计算芯片:
包含NPU的有:
Amlogic : S905D3, A311D, C308X. 使用:
Rockchip: RK3399Pro, rv1109 rv1126等。 使用: RKNN API.
Rockchip: RK3399Pro, rv1109 rv1126等。 使用: RKNN API.
海思; HI35xx HIAI API