水表是常見的家庭設(shè)備,不過類似圖一的類比水表多達(dá)數(shù)千種,需要技術(shù)人員每個月到現(xiàn)場人工記錄資料,才能計算當(dāng)月的使用量,這是十分費時且費力的工作。現(xiàn)在,電表逐漸被智慧電表所取代,不過成本仍然很高,對於缺乏連線能力的使用者,或尚未規(guī)畫更換經(jīng)費的國家來說,這更加是艱鉅的任務(wù)。
本文敘述如何透過使用具M(jìn)CU嵌入式連線能力的低解析度攝影機所組成的低功耗、低成本系統(tǒng),有效地將類比儀表數(shù)位化。.
經(jīng)由採用意法半導(dǎo)體(STMicroelectronics;ST)的STM32WL55,透過攝影機擷取水表讀錶區(qū)域,接著利用MCU上執(zhí)行的 AI 演算法識別讀表。AI分類器演算法的結(jié)果(也就是讀錶)以STM32WL(如 LoRaWAN)支援的遠(yuǎn)端 sub-GHz 無線網(wǎng)路傳輸。傳統(tǒng)的連線裝置會將影像傳送到雲(yún)端,而ST的解決方案則是傳輸讀數(shù)。這個方案的優(yōu)勢,在於透過本地 AI 模型可以快速準(zhǔn)確地識別讀數(shù),然後只需要將讀數(shù)傳送回資料中心即可。
這種方法不僅可以有效保護(hù)使用者資料的隱私(僅傳輸推論結(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執(zhí)行階段監(jiān)控、視覺化工具,以及 STM32CubeProgrammer 程式碼燒錄工具。
STM32Cube.AI有助於使用者將經(jīng)過訓(xùn)練的AI模型快速部署到STM32上並進(jìn)行驗證測試。STM32CubeWL MCU套裝軟體元件,包含STM32WL系列執(zhí)行所需的所有嵌入式軟體模組,包括周邊裝置驅(qū)動程式、ST LoRaWAN 通訊協(xié)定堆疊、Sigfox通訊協(xié)定堆疊,以及使用ST 安全啟動和安全韌體更新技術(shù)實現(xiàn)LoRaWAN韌體無線更新的範(fàn)例程式碼。
另外,還有兩個採用STM32WL的核板,用於快速原型設(shè)計:NUCLEO-WL55JC1(868pm 915amp 923 MHz)和NUCLEO-WL55JC2(433Accord470 MHz),以及兩個Nucleo開發(fā)板板,用於快速原型研發(fā)。而本文的使用範(fàn)例即採用了NUCLEO-WL55JC2開發(fā)板。
除了NUCLEO-WL55JC2之外,這個專案的另一個關(guān)鍵元件是攝影機。
攝影機模組(採用低成本OV2640 感測器)透過標(biāo)準(zhǔn)GPIO直接連接到NUCLEO-WL55JC2 開發(fā)板中的STM32 MCU。由於STM32WL系列中沒有可用的DCMI 介面,在示範(fàn)中使用了電磁計數(shù)器,這個計數(shù)器在多數(shù)常見的線上商店容易取得,因此容易複製重現(xiàn)。
實驗系統(tǒng)如圖五所示。
當(dāng)所有硬體準(zhǔn)備就緒之後,使用者就可以製作資料集進(jìn)行模型訓(xùn)練。
在電腦視覺中有典型的入門專案,就是識別 MNIST 資料集。MNIST資料集收集0-9共十個 阿拉伯?dāng)?shù)字的手寫字型,包括訓(xùn)練集中6萬個樣本和測試集中的1千個樣本。對於想要使用現(xiàn)實世界資料,嘗試學(xué)習(xí)技術(shù)和模式識別方法,同時在預(yù)處理和格式化方面動用最少的人力來說,這是很好用的資料庫。
不過,我們無法直接使用這個資料集,因為水表上的數(shù)字字型和色彩與此資料集有極大的不同,為了達(dá)到更好的效能,我們會使用上述所提到的設(shè)備,讓資料集與MNIST類似。
以下討論這個專案,開啟 STM32 電腦視覺的大門。
這個資料集大約有 4千個樣本,每個樣本包含五個數(shù)字。資料集的部分樣本,如圖七所示。
當(dāng)有資料集之後,就可以建立神經(jīng)網(wǎng)路,並使用自己的資料集訓(xùn)練模型。在這個模型中,輸入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。圖八則是訓(xùn)練中失誤和準(zhǔn)確度的變化。這個資料集背景很簡單,由於數(shù)字字型很規(guī)則,因此訓(xùn)練效果很好。其實可以收集不同的水表讀數(shù)(不同的字型和色彩)一起訓(xùn)練,如此一來,模型就可以識別多個水表讀數(shù)。
訓(xùn)練結(jié)束後會取得模型檔案。迄今我們可以使用STM32cube.AI 工具,將模型轉(zhuǎn)化為最佳化程式碼,快速部署到 NUCLEO-WL55JC2開發(fā)板上。
由於整合STM32Cube,讓STM32Cube.AI使用者能夠有效地將模型移植到多樣化的STM32 微控制器系列中。而且對於類似模型也適用於不同產(chǎn)品的情況,能夠在STM32產(chǎn)品組合中輕鬆移轉(zhuǎn),而此專案亦是利用STM32Cube.AI將模型部署到STM32WL。
此外,可以透過外掛程式擴(kuò)充STM32CubeMX的功能,自動轉(zhuǎn)換預(yù)訓(xùn)練的人工智慧演算法,並將產(chǎn)生的最佳化資料庫整合到使用者專案中,而不是建構(gòu)手動輸入的程式碼。而且還能將深度學(xué)習(xí)解決方案嵌入各種STM32 微控制器產(chǎn)品組合中,藉以對每個產(chǎn)品新增智慧功能。
STM32Cube.AI 提供對各種深度學(xué)習(xí)框架的原生支援,例如 Keras、TensorFlow Lite、ConvNetJs,並支援所有可以匯出為ONNX標(biāo)準(zhǔn)格式的架構(gòu),例如PyTorch、Microsoft Cognitive Toolkit、MATLAB等。
此外,STM32Cube.AI支援來自大量機器學(xué)習(xí)開放原始碼程式庫Scikit-Learn的標(biāo)準(zhǔn)機器學(xué)習(xí)演算法,例如Isolation Forest、支援向量機器(SVM)、K-Means。
在這個專案中,使用了TensorFlow 架構(gòu)。
最後,我們來看看實際效能。為了方便展示,我們將攝影機拍攝的影像和MCU上的識別結(jié)果傳送到電腦螢?zāi)弧S捌泻诘装鬃值臄?shù)字為攝影機所拍攝的圖片,第一行是AI模型的結(jié)果。我們將儀表設(shè)定為每五秒驅(qū)動一次,因此數(shù)字每五秒更新一次。以下是未經(jīng)編輯的實際螢?zāi)粩X取畫面。