【ATU Book-i.MX8 系列 - TFLite】AI 即將來臨 !! 利用 Tensorflow 與 i.MX8 邁入新領域

一.   概述

人工智慧、機器學習以及深度學習已變成現今最熱門的話題之一 ,必將成為未來的一大趨勢 !! 並邁入百家爭鳴、三國鼎立的時代,對於深度學習框架而言,分別有 Facebook 所提供的 Pytorch 和 Caffe2 、 Microsoft 所提供的 Cognitive Toolkit(CNTK) 以及 Google 所提供的 Tensorflow 等三大科技公司支持 !! 最受矚目的莫過於 Google 的深度學習框架 Tensorflow,以開源公開的方式引領潮流,如下圖所示,Tensorflow 熱門程度遠大於其他框架,可見 AlphaGo 成功引起話題與熱度 !! 帶領新世代的科技人走向 AI 時代 !!

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

 

各深度學習框架之熱門程度示意圖
圖片來源 iThome

 

本系列博文的將介紹當前最火熱的 Tensorflow 深度學習框架,將逐一介紹 Tensorflow 1.x 與 2.x 的差別與運算概念,並帶領讀者建立手寫識別之應用。順帶介紹 Tensorflow 中,最具方便與直觀的機器學習套件 Keras ,讓讀者更快速的上手與進入 AI 領域 !! 最後將利用 Tensorflow Lite 轉換成輕量化模型,並實際應用於 i.MX8 嵌入式平台之中 !! 讓讀者更快速的落實應用 !!

如下圖所示,為系列博文之示意架構圖。此架構圖隸屬於 i.MX8M Plus 的方案博文中,並屬於 eIQ 機器學習開發環境 內的 推理引擎層(Inference Engines Layer) 的子系列 !! 藉此希望能加深讀者 Tensorflow Lite 的應用方式

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

而所有的深度學習框架最後目標就是訓練出一個高識別率又快速的模型,正好 Tensorflow Lite 輕量化模組就是當下熱門的首選。最後就將 輕量化模組(.tflite) 交付給 推理引擎(tflite_runtime.interpreter) 去解析神經網路架構與權重參數 ! 除此之外,在 i.MX8 平台下亦有提供其他的推理引擎像是 OpenCV、 ArmNN、ONNX 等等 !

同時,此篇文章亦是 Tensorflow 系列內的第一篇文章,將初步探討 Tensorflow 1.x 與 2.x 的差別、Keras 好處與定位? 以及 TF Lite 的強大之處 !!
而後續此系列規劃,就如下圖所示…

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


二.  Tensorflow 1.x 與 2.x 的差別

簡單來說 Tensorflow 開源機器(深度)學習框架就是一個開源資料庫,由 Google 發布開源並與各程式設計者共同維護,提供了許多神經網路框架、訓練方式、模組優化等等。 Tensorflow 是從 2015 年開始釋出 0.1 的版本,隨著時代的演進,於 2017 年推出 1.0.0 版本,於 2019 年推出 2.0.0 版本,約莫兩年一個世代 !

從最初的版本進入至 Tensorflow 1.0 版本時,比起前一版本有顯著的速度提升,更加靈活 !! 並引進了 tf.layer 、tf.metrics、tf.losses 等應用程式介面,以及相當適合初學者的 keras 模組 !! 可說是重大的升級 !! 並來到中原逐鹿鼎盛的時代 !! 但由於 Tensorflow 1.x 的設計裡面是一種名為靜態圖機制,在後期新秀崛起之時, 1.x 版本在神經網路的架構上是顯得相當不夠活用的,反而增加一步程式設計上的複雜度 ! 以及各種 API 穩定性與效率效益變差,導致兢爭力下降 !! 使得競爭對手 PyTorch 的使用程度有明顯的上升趨勢 !!

在 2019 年末, Tensorflow 迎來了 2.x 時代 ! 官方希望透過 動態圖(eager execution) 的方式來達到涅槃重生,回歸王者地位 ! 所謂的動態圖執行方式,極為貼近 Python 使用方式可說是相當直覺容易理解 ! 而 2.x 版本也大膽了移除許多函式,像是 tf.app、tf.flags、tf.logging 等。在此最大的改變莫過於 1.x 版本的 Session 靜置圖的執行方式,隨著此改變而延伸出 AutoGraph 的概念。這能夠妥善地在eager與graph間轉換,藉由 @tf.function 的方式下啟動所謂的 AutoGraph,就能夠達到運算速度的提升 ! 以及有效控管每個 Tensor 的數值 !!

 

三.  Keras 介紹


在 Tensorflow 2.0 到來時, 將 Keras 正式整合至 Tensorflow 架構中,讓開發者不須另外安裝 !! 所謂的 Keras 是一個高階的開源神經網路庫,廣泛支援多個神經網路框架像是 Tensorflow、Microsoft Cognitive Tookit、Thearo 上執行。 Keras 提供了一系列的神經網路模塊,例如卷積層、池化層、平坦層等等相當活用與直覺,亦能夠提供最佳化、訓練等功用,對於初學者非常友善 !!


Tensorflow 2.0 與 keras 機器學習資料庫

Keras 與 Tensorflow 的歷史可追溯於 v1.1.0 版本,起初默認後端為 Thearno 深度學習框架。如下圖所示,隨著 Tensorflow 的崛起,Keras 也隨著提供支援並搭上熱浪,使得越來越多人得知這高級又好用的 API !! 逐漸成為 Tensoflow 用戶的必學工具 !! 同時在 2019年末,正式宣告未來不再支持 Theano 與 CNTK 等框架 !!


Tensorflow 2.0 與 keras 熱門程度
圖片來源 : keras 中文文檔


四.  Tensorflow Lite 介紹

Tensorflow Lite 是目前 Google 推出的輕量化機器學習資料庫,如下圖所示,主要針對 行動裝置(Andriod/IOS) 與 嵌入式系統(Linux) !! 將其模組轉換為更加輕量化,達到量化瘦身 ! 因模組大幅度的縮小,故能達到 更快速地初始化、啟動與運算速度上提升 !!


Tensorflow Lite 之行動裝置與嵌入式系統示意圖
圖片來源 : Tensorflow 官網

 

官方提供了一系列專屬於 Tensorflow Lite 的轉換工具、優化方式與推理引擎,讓開發者能更輕鬆上手進行開發,並快速銜接過去既有的模型 !! 使得運算能力較薄弱的嵌入式裝置能夠擁有智能的機會,讓人工智能與機器學習慢慢的導入我們的生活中,逐漸開創新的 AI 紀元 !!
後續文章,將一步步帶領實作出 Tensorflow Lite 的手寫識別 !! 並於 NXP i.MX8 平台實現 !! 敬請期待


Tensorflow Lite 架構示意圖
圖片來源 : NXP 官網


五.  參考文件

[1] ITREAD    - 從0.1到2.0一文看盡TensorFlow奮鬥史
[2] 軟體之心  - 包裝再升級?Tensorflow 2.0的重大改變
[3] WiKi        -  Keras開源神經網路庫
[4] 科技報橘 -  手機上的輕量版 AI 運算,TensorFlow Lite 問世!

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



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

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

評論