在技術發展的歷史上,技術先獨立發展再相互融合以改變世界的例子比比皆是。原子能和噴氣式發動機的融合催生了核動力航母,改變了20世紀大部分戰爭的形態。計算機和射頻通信的融合產生了智能手機,同時也重新定義了我們與技術以及彼此之間的互動方式。今天,嵌入式電子和人工智能(AI)的融合正日益成為下一個具有顛覆性的技術組合。接下來我們就看一下這種融合的發展演變。
歡迎來到網絡邊緣 人工智能的概念最早出現在古希臘人的著作中,但直到20世紀上半葉,才開始將其作為一種實際技術進行開發。從根本上來說,人工智能讓數字技術仿佛人腦一樣,能夠與模擬世界高效而快速地互動溝通。為了讓人工智能在現實世界獲得實際應用,比如在自動駕駛車輛中,那么在處理多個動態輸入時,電子設備和物理世界之間的交互必須接近瞬時完成。值得慶幸的是,隨著機器學習算法的發展,嵌入式電子系統也在不斷進步。他們的聯姻催生出了邊緣計算的概念。
邊緣計算將過去只有云端強大處理硬件才具備的處理能力,帶給了位于物理-數字接口邊緣的本地設備。再加上MCU和傳感器等價格便宜而又性能強大的嵌入式組件的普及,最終在自動化領域掀起了一場規模、功能都史無前例的革命。
TensorFlow Lite:基于微型硬件的大型機器學習算法
TensorFlow是Google主導開發的一套開源軟件庫,使開發人員能夠輕松地將復雜的數值計算算法和機器學習(ML)集成到他們的項目中(圖1)。按照Google的說法,這些庫為Python(所有平臺上的Python 3.7+)和C語言提供穩定的應用程序編程接口(API)。此外,它們還為C++、Go、Java和JavaScript提供不保證向后兼容的API。針對Apple公司的Swift語言,它也提供了一個alpha版本。
TensorFlow為深度神經網絡(DNN)的開發和利用提供了我們常說的端到端機器學習支持。DNN是機器學習的一種應用類型,特別擅長模式識別以及對象檢測與分類。TensorFlow庫支持機器學習過程的兩個階段,即訓練和推斷。其中第一階段是深層神經網絡的訓練,這需要大量算力,通常由服務器級硬件和圖形處理單元(GPU)提供。張量處理單元(TPU)則是最近開發的一種專用集成電路,用于支持這種訓練。第二階段是推斷,即利用在現實世界中接受訓練的DNN來回應新的輸入:按照培訓好的模型分析這些輸入,并根據分析結果提出建議。這應該是嵌入式產品開發人員比較感興趣的階段。
適用于MCU的TensorFlow Lite(TensorFlow庫的一個子集)專門用于在內存受限的設備上執行推斷,大多數嵌入式系統應用中都存在這種設備。它不允許您訓練新的網絡,那仍然需要更高端的硬件。
實用為王:ML應用實例
在嵌入式系統上運行人工智能算法的目標,就是要比傳統程序或面向對象的編程方法更高效地處理傳感器收集的真實世界數據。也許在大家的意識中,最常見的使用案例是從傳統汽車到具有自動輔助功能(如車道偏離警報和防撞系統)的汽車,再到無人駕駛汽車這個最終目標的發展歷程。不過,深度學習還有其他一些不那么顯眼的用例,雖然你不知道,但已經在使用了。智能手機中的語音識別或Amazon Alexa等虛擬助手均使用了深度學習算法。其他用例包括用于安防領域的面部檢測和/或背景替換、去除綠幕、遠程會議軟件(如Zoom)等。
人工智能、神經網絡和機器學習等術語有時候給人的印象就像科幻小說或行話。那么這些新興技術的現實意義何在?
使用AI,可以自動監測安全源來識別某些人
同時使用機器學習算法和聯網設備(如物聯網設備)帶來的一個巨大優勢就是,隨著時間的推移,產品可以通過簡單的OTA固件更新來集成新的或經過更好訓練的模型。這意味著產品可以逐漸變得更加智能,并且不局限于制造時能夠實現的功能,只要新的模型和固件不超出硬件的物理內存和處理能力即可。
圖3:將TensorFlow模型轉換為可在MCU等內存受限設備上使用的版本。
(圖源:NXP)
工作流程 根據適用于MCU的TensorFlow Lite的說明文檔,開發人員的工作流程可以分為五個關鍵步驟(圖3),具體如下:
1、創建或獲取一個TensorFlow模型
該模型必須足夠小,以便在轉換后適合目標設備,并且它只能使用支持的運算。如果要使用當前不支持的運算,可以提供自定義實現。
2、將模型轉換為TensorFlow Lite FlatBuffer
使用TensorFlow Lite轉換器將模型轉換為標準TensorFlow Lite格式。您可能希望輸出一個量化模型,因為這種模型的尺寸更小,執行效率更高。
3、將FlatBuffer轉換為C位數組
模型保存在只讀程序內存中,并以簡單的C文件形式提供。可以使用標準工具將FlatBuffer轉換為C位數組。
4/集成適用于MCU的TensorFlow Lite C++庫
編寫MCU代碼來收集數據,使用C++庫執行推斷,然后使用結果。
5、部署到設備
編寫程序并將其部署到您的設備。
選擇與TensorFlow Lite庫一起使用的兼容嵌入式平臺時,開發人員應注意以下幾點:
基于32位架構(如Arm Cortex-M處理器)和ESP32的系統。
它可以在內存僅有數十KB的系統上運行。
適用于MCU的TensorFlow Lite采用C++ 11編寫。
適用于MCU的TensorFlow Lite可作為Arduino庫提供。該框架還可以為其他開發環境(如Mbed)生成項目。
不需要操作系統支持、動態內存分配或任何C/C++標準庫。
后續步驟 Google提供四個預先訓練的模型作為示例,可用于在嵌入式平臺上運行。只需稍做修改,就能在各種開發板上使用。這些示例包括:
1、Hello World
演示使用適用于MCU的TensorFlow Lite的必備基礎知識。
2、Micro-Speech
用麥克風捕捉音頻以檢測單詞“yes”和“no”。
用圖像傳感器捕捉攝像頭數據,以檢測是否有人。
4、Magic Wand
捕獲加速度計數據以對三種不同的身體姿勢進行分類。
編輯:hfy
-
mcu
+關注
關注
146文章
17141瀏覽量
351103 -
人工智能
+關注
關注
1791文章
47244瀏覽量
238381 -
機器學習
+關注
關注
66文章
8414瀏覽量
132612 -
邊緣計算
+關注
關注
22文章
3086瀏覽量
48941 -
tensorflow
+關注
關注
13文章
329瀏覽量
60532
原文標題:適用于MCU的TensorFlow Lite - 網絡邊緣的人工智能
文章出處:【微信號:gh_0ef8449c3acb,微信公眾號:SmartMcu】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論