(感謝Arduino.cc官網開放授權,使我們得以摘譯這篇文章,特此致謝!若讀者想要進一步閱讀原文,請點擊:https://blog.arduino.cc/2021/07/06/aifes-is-an-ai-ml-framework-written-in-c-for-even-the-smallest-microcontrollers/?fbclid=IwAR0indob-7YYoj8v0spHJvwPDwyItGdxiLvtXHI_b8_4h0sCUINxIjlLJrw謝謝。)
過去幾年,針對在微控制器上運作機器學習,產生愈來愈多解決方案。一些最受歡迎的解決方案,是縮減專門設計給伺服器使用的框架而產生的版本。但是這些解決方案只相對適用於效能較強大的微控制器。
然而這樣的情況已過去。現在,運用源自於Fraunhofer Institute for Microelectronic Circuits and Systems(IMS)開放原始碼的解決方案AIfES(Artificial Intelligence for Embedded Systems),可在幾乎任何硬體上(包含了8位元的Arduino Uno)運行、甚至訓練人工神經網路(Artificial Neural Networks,簡稱ANN)。
Arduino的AI框架函式庫
AIfES是個獨立的AI框架,完全以C語言撰寫,在不需PC情況下允許在裝置上的訓練,並且幾乎可被應用於任何硬體。甚至於在8位元的Arduino Uno上,人工神經網路(ANN)也可相當快速地被訓練。因此,可透過訓練創造適應手邊任務的個人、客製化裝置。目前在Arduino的支援下,AIfES可用於採用Arduino Library Manager的Arduino IDE。
這項技術使微小、自我學習、電池供電的裝置能夠被發展,獨立於雲端或其它裝置;感測器資料可直接於裝置上處理;訓練資料可被裝置記錄,並被使用於訓練。
AIfES相容於知名的Python ML框架,包括了TensorFlow、Keras或 PyTorch,功能同時顯著地減少。目前版本支援前饋神經網路(Feedforward Neural Networks,簡稱FNN),可完全自由佈署。此外,如ReLU、sigmoid或softmax等常用的激勵函數,已整合於目前版本內,而卷積神經網絡(ConvNet) 的完整實現將很快支援。
模型的發展也是以Python框架為基礎,像是梯度最佳解相關算法(Gradient Descent Optimizer,簡稱SGD),以及adam最佳化算法等常用於訓練的演算法,也包括在目前版本內。
從其它ML框架導入ANN
想從其它ML框架導入先前訓練的ANN是可行的,只是網路架構與權重需映射先前訓練的ANN,並執行進一步訓練。有一個Keras的範例被包括在函式庫內,並且不需移植模型至TensorFlow Lite。在AIfES內,ANN的權重也可被讀出、儲存,或直接從一個裝置傳至另一個裝置使用。藉由重新佈署模型及載入新權重,不同的ANN可於執行期載入。而權重的設定可被儲存於雲端,好使它們供其它裝置使用。
為在資源有限的嵌入式系統上使用,所有的演算法皆經最佳化,甚至ANN 所需的內存區域,也可由開發者指定。
AIfES採用模組的方式開發,好能交換演算法的不同元件。而這樣的開發方式,允許輕易使用不同系列處理器的硬體加速器。
預先訓練且適應性強的AIfES手勢識別
在手勢識別專案中,模型已預先訓練好,並且使用者需如同開發者一般,訓練執行手勢。這是傳統且不直覺化的方式,使用者也必須適應硬體。新的示範者使用Arduino Nano 33 BLE Sense。
使用者想要的手勢,可在沒有PC情況下,直接於系統內訓練。在業界,第一個產品開發的案例是「noKat」專案——一台神經光學相機追踪器,為檢測靠近的人而製造。在這台相機追蹤器內,使用AIfES實現一個特別微小的人類辨識系統。
由於深度神經網路(Deep Neural Networks,簡稱DNN)的大小,在微控制器上執行DNN會產生問題。因此,Fraunhofer IMS已研究相關技術多年,好實現特別微小的ML解決方案。運用特殊特徵提取技術,可顯著的減少輸入數量,只有相關特徵被使用。
AIfES提供兩種不同的使用許可。針對私人專案,或在GNU通用公共許可 (GPL)第3版下的免費開放原始碼軟體的開發者,得以免費使用AIfES。如果AIfES與商業許可的軟體結合並發佈;或若AIfES給商業許可軟體使用的原始碼,並未根據GNU通用公共許可(GPL)第3版發佈,則必須與Fraunhofer IMS簽訂商業許可協議。若您有興趣,請聯繫AIfES團隊。
專門給Arduino使用的AIfES,包括可讓您立刻開始操作的一些範例,除了推論與訓練外,更展示如何從Keras導入人工神經網絡。而Arduino水果辨識專案,已在 AIfES內為Nano 33 BLE Sense重新實作,目前,三個物件的顏色都直接在裝置上訓練,不需PC輔助。
請您從Arduino library manager直接下載AIfES,或查看AIfES針對Arduino的GitHub倉儲。
我們(編按:在此指Arduino團隊)對AIfES感到非常興奮,更等不及觀看Arduino社群將運用這項技術,打造出何等的應用!請務必於Arduino論壇上,讓我們知道您的想法,以及關於您所創造的任何應用。