OpenVino讓電腦或運算機器戴上AI眼鏡-----創造人工智能設備的 AI 開發套件

--OpenVino是什麼?

OpenVino 是一套完全免費純軟體的開發包,內容包含了OpenCV, OpenVX, Model Optimizer(MO), 以及 Inference Engine四部分。其中 OpenCV, OpenVX, MO 稱為傳統視覺開發套件,Inference 為Deployment到邊緣端的套件。根據官網所述,其特性為

  • 在邊緣啟用基於CNN的深度學習推理
  •  支持跨計算機視覺加速器的異構執行 - CPU,GPU,英特爾®Movidius™神經計算棒和FPGA - 使用通用API
  • 通過功能庫和預優化內核加快產品上市速度
  • 包括對OpenCV和OpenVX *的優化調用


大家一定想說既然用讓AI跑在CPU, GPU, FPGA, VPU 處理器上免不了要動到硬體層的coding。但事實上因為OpenVino已經將相對應的HW coding寫成plugin來調用API, 所以你只需要針對要跑的硬體來使用plugin就能支援深度學習的運算。


從官網上的架構圖可以知道,使用者經由提供已經訓練好的模型,便能使用openVino 的Model Optimizer做優化成為IR檔,並經由優化過的inference engine來做推論動作。除此之外,openVino也提供超過30個以上的pre-trained model跟範例來讓使用者體驗AI視覺辨識的效能。在傳統視覺處理方面,openVino提供了openCV及openVX兩種開發方式讓使用者可以將原本正在開發中的電腦影像視覺專案得以porting到openVino上面來,更經由優化過的函式庫來提高效能。根據統計,光是傳統視覺影像處理部分,移植到openVino上便能得到 1.7倍以上效能。


--OpenVino使用場景 

做為AI視覺局端開發工具,使用者不須再把圖資傳輸到雲端上即可在局端進行推論。OpenVino使用範圍甚廣,在代替人眼可能的應用上舉凡公共預警(監視器),人臉辨識做理財服務,機器人視覺,智慧路燈,燈號,自動駕駛,無人商店 零售商物,智能工廠,無人機的定位都是OpenVino可以使用的範圍



--OpenVino安裝環境及限制

截至目前為止 openVino支援的作業系統有 windows10 64 bit, Ubuntu16.04 LTS (64bit), CentOS 7.4(64bit), Yocto 2.0.3(64bit) Raspbian. 硬體方面支援INTEL Xeon, Core i, Atom等級CPU 或是 樹梅派ARM. 詳細軟硬體支援請參考下圖。 基本上openVino 提供source code讓官網上沒有的版本可以下載來自行編譯使用,但是僅限於inference engine的部分。 其他安裝的OpenVino的限制包含使用INTEL GEN6以上的處I理器,主要原因是在GEN6之後的處理器,GPU的部分有大幅度的增加,以利AI的運行。
以下表格顯示OpenVinon硬體及軟體的最低要求,




--OpenVino 軟體 flow 及架構圖

在OpenVino整個流程中,分為傳統影像處理及深度學習推論部分。一旦確認使用者提供的深度訓練模型及輸入的影像取得無誤後,OpenVino首先會做使用INTEL的Media SDK來decode影片, 再來做Pre-processing 的動作,這些包含了取得單一frame(畫面), color format transform (BGR), 最後會依照model的需求來做downscaling or resize 的處裡。同時OpenVino Load in 深度學習的模型,並選定所需要推論的硬體引擎所需要使用的plugin,等一切就緒後,該張影像變輸入硬體中依照所訓練的模型來深度學習分析並回傳學習分析後的結果。一旦CPU收到了回傳的metadata (深度分析後的資料),例如物件ID,位置資訊等,傳統影像再接手處理將物件畫框等等。最後經由INTEL Media SDK將之encode來顯示於螢幕之上。




--OpenVino Model Optimizer vs. IR Framework 

Momdel Optimizer 是OpenVino的重要核心元件,也是OpenVino能夠支援異質硬體平台(CPU/GPU/FPGA/VPU)的主要架構之一。另外它也是簡化並加速開源深度學習模型的工具。如下圖所示,Momdel Optimizer 利用移除了不需要的運算層及結合relu和 convolusion層來減少模型的深度並加速運算速度,




Model Optimizer 轉換完的檔案稱為Intermediate Representation或IR檔 (XML,BIN)。其中XML檔案儲存了算法層(Layers)的資訊,Bin檔案中儲存了權重(weight),及偏差值(Bias)。





Mo 要轉換到IR的過程非常簡單,只要執行一個python檔案,需要先安裝python3.5以上版本


--OpenVino Model Inferecing

一旦轉換成IR檔, OpenVino提供將近30個的sample code來做推論測試。測試程式使用前,必須安裝cmake工具,cmake會依系統產出Makefile並用平台compiler編譯出來,。在Ubuntu上使用usr/bin/c++來編譯,在Windows 10上使用Visual Studio 2015, 2017。

一旦安裝完成後直接在~/inference_engine/samples/下尋找build_samples_msvc.bat(windows 10), or build_samples.sh(Ubuntu16.04)執行來編譯所有的DEMO程式。


 

使用DEMO程式推論前必須指定要使用的plugin for 不同的硬體。如果沒有特別指定的話,系統會內定使用MKL-DNN plugin 並用CPU來運行推論。



要使用demo的範例程式非常簡單,首先要設定OpenVino的環境變數。在windows安裝OpenVino位置目錄下,尋找並執行~\bin\setupvar.bat, 或是執行在 ubuntu安裝目錄下source /opt/intel/openvino/bin/setupvars.sh後,即可以到~/development_tools/demo 下面有兩支預先寫好的batch 或script file. 以windows 10為例,你可以看到 demo_security_barrier_camera.bat 和 demo_squeezenet_download_convert_run.bat ,執行後可以看到以下兩個畫面表示你的OpenVino的安裝已經成功。

demo_squeezenet_download_convert_run.bat


demo_security_barrier_camera.bat



其餘的free pre-trained model 及詳細的demo sample code使用方法可以參考官網連結,

 
http://docs.openvinotoolkit.org/latest/_docs_IE_DG_Samples_Overview.html

--OpenVino Performance and Benchmark

如果以最流行的Public Model來做比較,如Squeesenet1.1,在使用了OpenVino做推論 (inference),和標準的standard caffee baseline推論做比較如下圖,速度可達7.73倍之多





--OpenVino 官方網站及論壇

參考
更多成功OpenVino AI案例

https://software.intel.com/en-us/ai-academy/ai-in-production

安裝程式及相關文件
https://software.intel.com/en-us/openvino-toolkit

動動手線上課程

https://github.com/intel-iot-devkit/smart-video-workshop

OpenVino線上問答及論壇

https://software.intel.com/en-us/forums/computer-vision

https://github.com/opencv/dldt

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論