Khronos 在制定OpenVX規範時不僅提供規格書,也提供了範例實作讓想實作或通過conformance 測試的廠商可以參考。
目前(2018/1)官方(https://www.khronos.org/registry/OpenVX/)提供的版本號1.2,更新日期是2018/1/17號,解壓縮後我們可以看到總共有13個資料夾與9個檔案:
.
├── Android.mk
├── BUILD_DEFINES
├── Build.py
├── CMakeLists.txt
├── cmake_utils/
├── concerto/
├── debug/
├── examples/
├── helper/
├── include/
├── kernels/
├── libraries/
├── LICENSE
├── Makefile
├── NEWKERNEL.txt
├── raw/
├── README
├── sample/
├── scripts/
├── tools/
├── utils/
└── VERSION
13 directories, 9 files
這些檔案可分為四大類:1.程式碼相關 2.編譯相關 3.影像檔案或測試資料 4.說明文件,以下將簡介相關檔案與作用:
- 程式碼相關:
include/ 標頭檔(.h)
sample/ 主要實作程式碼(framework/nn extension/target/test..etc)
kernel/ node在不同target(c_mode/opencl…etc)的實作
examples/ 一些範例程式介紹如何使用OpenVX API
libraries/ 提供額外功能的函式庫,例如讀寫檔案
helper/ 提供log相關功能(for developer)
debug/ 提供debug level相關設定,類似Android log level
scripts/ 提供簡便的shell scrip操作
utils/ 提供常用的操作function
2. 編譯相關
Buid.py 可以用python Build.py -help 查詢相關參數, 基本用法python Build.py -os=linux
Makefile
cmake_utils/ 相關的設定檔案都在此資料夾內
3.影像檔案或測試資料
raw/ 存放會用到的影像檔案
sample/cnn/resource 存放nn extension 會用到的檔案(weights/image…etc)
4.說明文件
README 主要說明文件,內容有6個章節依序說明
1.這個參考實作的目的與內容
2.如何編譯(CMAKE/Concerto)
3.單元測試(unit test)
4.如何設定debug flag與debug level
5.如何打包與安裝到系統
6.Bug回報方式
除了官方的參考實作外,下方是不同廠商的實作,有些有開放原始碼有些則是包裝程動態函式庫.
- Intel Computer Vision SDK : https://software.intel.com/en-us/computer-vision-sdk
- AMD OVX : https://github.com/GPUOpen-ProfessionalCompute-Libraries/amdovx-core
- TI OVX: http://processors.wiki.ti.com/index.php/Processor_SDK_TIOVX
- Nvidia Vision Works: https://developer.nvidia.com/embedded/visionworks
以上是有通過conformance test的廠商,另外ARM 也有類似的SDK(compute library)而且初期開發時在架構上也是參考OpenVX。
- ARM compute library: https://github.com/ARM-software/ComputeLibrary
雖然一開始OpenVX是針對電腦視覺運算設計的軟體框架,但由於類神經網路的編程模式(programming model)跟熱門程度讓Khronos OpenVX工作小組也特別訂定了Neural Network Extension(https://www.khronos.org/registry/OpenVX/extensions/neural_network_1.2/OpenVX_NN_Extension_1_2.pdf)使得OpenVX也加入了深度學習的戰場。