STM32低功耗計算機視覺:模擬儀表展示
水表是常見的家庭設(shè)備,不過類似圖一的模擬水表多達數(shù)千種,需要技術(shù)人員每個月到現(xiàn)場人工記錄數(shù)據(jù),才能計算當月的使用量,這是十分費時且費力的工作?,F(xiàn)在,電表逐漸被智慧電表所取代,不過成本仍然很高,對于缺乏聯(lián)機能力的使用者,或尚未規(guī)畫更換經(jīng)費的國家來說,這更加是艱巨的任務。
本文敘述如何透過使用具MCU嵌入式聯(lián)機能力的低分辨率攝影機所組成的低功耗、低成本系統(tǒng),有效地將模擬儀表數(shù)字化。.
圖一
經(jīng)由采用意法半導體(STMicroelectronics;ST)的STM32WL55,透過攝影機擷取水表讀表區(qū)域,接著利用MCU上執(zhí)行的 AI 算法識別讀表。AI分類器算法的結(jié)果(也就是讀表)以STM32WL(如 LoRaWAN)支持的遠程 sub-GHz 無線網(wǎng)絡(luò)傳輸。傳統(tǒng)的聯(lián)機裝置會將影像傳送到云端,而ST的解決方案則是傳輸讀數(shù)。這個方案的優(yōu)勢,在于透過本地 AI 模型可以快速準確地識別讀數(shù),然后只需要將讀數(shù)傳送回數(shù)據(jù)中心即可。
這種方法不僅可以有效保護用戶數(shù)據(jù)的隱私(僅傳輸推論結(jié)果),而且效率更高,并且節(jié)省帶寬。如此,使用者就能以低成本、低功耗、高效率的方式解決這個問題。
圖二
WL 系列是全世界第一款支持長距離無線通信的 MCU。
STM32WL系列為一款可以連接LoRa低功耗廣域網(wǎng)的系統(tǒng)芯片,其整合STM32L4超低功耗系列和支持多種調(diào)變方案的Sub-GHz射頻子系統(tǒng)。
圖三
STM32 成功的重要因素為其強大的生態(tài)系統(tǒng)。從事STM32WL工作的開發(fā)人員可以運用已在市場上獲得驗證之成熟的STM32生態(tài)系統(tǒng),使用STM32通用開發(fā)所熟悉開發(fā)的工具,以及 subGHz 無線電開發(fā)和 AI 設(shè)計工具專用的軟件包組成。如此即可大幅降低開發(fā)門坎,加速產(chǎn)品上市時間。
生態(tài)系統(tǒng)中的資源,包括STM32CubeMX項目配置和程序代碼產(chǎn)生工具、STM32CubeMonitor運行時間監(jiān)控、可視化工具,以及 STM32CubeProgrammer 程序代碼刻錄工具。
STM32Cube.AI有助于用戶將經(jīng)過訓練的AI模型快速部署到STM32上并進行驗證測試。STM32CubeWL MCU軟件包組件,包含STM32WL系列執(zhí)行所需的所有嵌入式軟件模塊,包括周邊設(shè)備驅(qū)動器、ST LoRaWAN 通訊協(xié)議堆棧、Sigfox通訊協(xié)議堆棧,以及使用ST 安全啟動和安全韌體更新技術(shù)實現(xiàn)LoRaWAN韌體無線更新的范例程序代碼。
另外,還有兩個采用STM32WL的核板,用于快速原型設(shè)計:NUCLEO-WL55JC1(868pm 915amp 923 MHz)和NUCLEO-WL55JC2(433Accord470 MHz),以及兩個Nucleo開發(fā)板板,用于快速原型研發(fā)。而本文的使用范例即采用了NUCLEO-WL55JC2開發(fā)板。
圖四
除了NUCLEO-WL55JC2之外,這個項目的另一個關(guān)鍵組件是攝影機。
攝影機模塊(采用低成本OV2640 傳感器)透過標準GPIO直接連接到NUCLEO-WL55JC2 開發(fā)板中的STM32 MCU。由于STM32WL系列中沒有可用的DCMI 接口,在示范中使用了電磁計數(shù)器,這個計數(shù)器在多數(shù)常見的在線商店容易取得,因此容易復制重現(xiàn)。
實驗系統(tǒng)如圖五所示。
圖五
當所有硬件準備就緒之后,用戶就可以制作數(shù)據(jù)集進行模型訓練。
在計算機視覺中有典型的入門項目,就是識別 MNIST 數(shù)據(jù)集。MNIST數(shù)據(jù)集收集0-9共十個 阿拉伯數(shù)字的手寫字型,包括訓練集中6萬個樣本和測試集中的1千個樣本。對于想要使用現(xiàn)實世界數(shù)據(jù),嘗試學習技術(shù)和模式識別方法,同時在預處理和格式化方面動用最少的人力來說,這是很好用的數(shù)據(jù)庫。
圖六
不過,我們無法直接使用這個數(shù)據(jù)集,因為水表上的數(shù)字字型和色彩與此數(shù)據(jù)集有極大的不同,為了達到更好的效能,我們會使用上述所提到的設(shè)備,讓數(shù)據(jù)集與MNIST類似。
以下討論這個項目,開啟 STM32 計算機視覺的大門。
這個數(shù)據(jù)集大約有 4千個樣本,每個樣本包含五個數(shù)字。數(shù)據(jù)集的部分樣本,如圖七所示。
圖七
當有數(shù)據(jù)集之后,就可以建立神經(jīng)網(wǎng)絡(luò),并使用自己的數(shù)據(jù)集訓練模型。在這個模型中,輸入40X32(數(shù)字)的灰階影像來識別從0到19的20個類別,分別為:0、1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18、19。圖八則是訓練中失誤和準確度的變化。這個數(shù)據(jù)集背景很簡單,由于數(shù)字字型很規(guī)則,因此訓練效果很好。其實可以收集不同的水表讀數(shù)(不同的字型和色彩)一起訓練,如此一來,模型就可以識別多個水表讀數(shù)。
圖八
訓練結(jié)束后會取得模型檔案。迄今我們可以使用STM32cube.AI 工具,將模型轉(zhuǎn)化為優(yōu)化程序代碼,快速部署到 NUCLEO-WL55JC2開發(fā)板上。
由于整合STM32Cube,讓STM32Cube.AI用戶能夠有效地將模型移植到多樣化的STM32 微控制器系列中。而且對于類似模型也適用于不同產(chǎn)品的情況,能夠在STM32產(chǎn)品組合中輕松移轉(zhuǎn),而此項目亦是利用STM32Cube.AI將模型部署到STM32WL。
此外,可以透過插件擴充STM32CubeMX的功能,自動轉(zhuǎn)換預訓練的人工智能算法,并將產(chǎn)生的優(yōu)化數(shù)據(jù)庫整合到用戶項目中,而不是建構(gòu)手動輸入的程序代碼。而且還能將深度學習解決方案嵌入各種STM32 微控制器產(chǎn)品組合中,藉以對每個產(chǎn)品新增智能功能。
STM32Cube.AI 提供對各種深度學習框架的原生支持,例如 Keras、TensorFlow Lite、ConvNetJs,并支持所有可以匯出為ONNX標準格式的架構(gòu),例如PyTorch、Microsoft Cognitive Toolkit、MATLAB等。
此外,STM32Cube.AI支持來自大量機器學習開放原始碼鏈接庫Scikit-Learn的標準機器學習算法,例如Isolation Forest、支持向量機器(SVM)、K-Means。
在這個項目中,使用了TensorFlow 架構(gòu)。
圖九
最后,我們來看看實際效能。為了方便展示,我們將攝影機拍攝的影像和MCU上的識別結(jié)果傳送到計算機屏幕。影片中黑底白字的數(shù)字為攝影機所拍攝的圖片,第一行是AI模型的結(jié)果。我們將儀表設(shè)定為每五秒驅(qū)動一次,因此數(shù)字每五秒更新一次。以下是未經(jīng)編輯的實際屏幕快照。
圖十
評論