【ATU Book-i.MX8系列 - ONNX】ONNX 介紹與環境架設

一.   概述

伴隨著人工智慧、機器學習與深度學習的盛行,Google、MicroSoft 等數家科技大廠開始投入大量資金培育人才。並以研究與競賽方式來促進整個 AI 領域的發展,藉此產出更多強大的模組、神經網路架構、以及推理框架,像是 Google 的 Tensorflow / Tensorflow Lite 、Facebook 的 Pytorch / Caffe、MicroSoft 的 Cognitive Toolkit 等等深度學習框架!! 然而,近年來有團隊提出了一套整合想法,將大多數的深度學習框之模組進行整合,並可以相互轉換與應用。就是本系列的主題 ONNX 開放神經網路交換格式(Open Neural Network Exchange),如同下圖所示,這裡將提供一系列相關的介紹,從環境架設、模組轉換、模組資源、優化與推理引擎以及最後將帶領各位以 NXP i.MX8 平台內的 ONNX 推理引擎進行物件識別 !!

 

若新讀者欲理解人工智慧、機器學習以及深度學習的差異,可點選查閱下方博文
大大通精彩博文   探討機器學習與深度學習之差異

 

 

 ONNX 系列博文 - 文章架構示意圖 (1)

 

 

ONNX 系列博文 - 文章架構示意圖 (2)

 

 

二.  ONNX 開放神經網路交換格式 (Open Neural Network Exchange)

ONNX 開放神經網路交換格式是針對深度學習神經網路框架所設計的一種通用開放的文件格式,用途為將儲存訓練好的模型、權重資訊進行轉換與優化。起初由 MicroSoft 和 Facebook 於 2017 年共同推出,其理念得到各大企業共同合作,故衍生出多元機器學習網路框架的支持。

ONNX 合作企業對象

 

ONNX 迅速發展已成為深度學習模型的楷模,提供一套相容性極佳的標準格式,為各深度神經網路框架提供良好的交互作用 ! ! 如下圖所示,能將各 模型框架(framework) 轉換為 ONNX 格式,並由 ONNX Runtime 推理引擎運行於各種硬體 (CPU/GPU/NPU),即可達到硬體最佳化之作用。

ONNX 交換作用示意圖

 

 

三.  ONNX 環境架設方式

ONNX 官方提供數個作業系統的安裝方式,可以快速讓使用者上手!!

ONNX Github : https://github.com/onnx/onnx

 ONNX 環境架設 :  

(1) Linux 安裝步驟

Step 1 : 下載並安裝必要環境 Anaconda

Step 2 : 開啟終端機,確認安裝 Tensorflow 1.5.0、Protobuf 和 NumPy 套件

$ conda install -c conda-forge tensorflow==1.5.0 protobuf numpy

Step 3 : 下載 ONNX 函式庫

$ git clone https://github.com/onnx/onnx.git

Step 4 : 安裝ONNX 函式庫

$ cd onnx

$ git submodule update --init --recursive

$ python setup.py install



(2) Windows 安裝步驟

Step 1 : 下載並安裝必要環境 Anaconda

Step 2 : 開啟終端機,確認安裝 Tensorflow 1.5.0、Protobuf 和 NumPy 套件

 $ conda install -c conda-forge tensorflow==1.5.0 numpy protobuf libprotobuf=3.11.3

Step 3 : 下載 ONNX 函式庫

$ git clone https://github.com/onnx/onnx.git

Step 4 : 安裝ONNX 函式庫

$ cd onnx
$ git submodule update --init --recursive
$ set USE_MSVC_STATIC_RUNTIME=0
$ set CMAKE_ARGS="-DONNX_USE_PROTOBUF_SHARED_LIBS=ON   -DProtobuf_USE_STATIC_LIBS=OFF -DONNX_USE_LITE_PROTO=ON"
$ python setup.py install

 

 ONNX 使用方式 :  

Step 1 : 開啟終端機,啟動 Python 環境

$ python

Step 2 : 嘗試引用 ONNX 函式庫與查詢版本

$ import onnx
$ onnx.__version__

 

 

四.  結語

經由上述介紹各位應該對 ONNX  作用與目標有一定程度的了解。並由官方提供的快速安裝方式,即可成功安裝 ONNX 套件 !! 而下一篇文章將會介紹 ONNX 交換格式的精隨,就是模組轉換的部分 !! 將利用網路上現成的模組資源將其轉換為 ONNX 格式 !! 敬請期待 !!

 

五.  參考文件

[1] 官方網站 - ONNX

如有任何相關 ONNX 技術問題,歡迎至博文底下留言提問 !!
接下來還會分享更多 ONNX 的技術文章 !!敬請期待 【ATU Book-i.MX8 系列 - ONNX
 !!

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

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

評論