水表是常見的家用設備。模擬式水表(如下圖中所示)數量龐大,需要技術人員每月現場抄表并手工記錄數據,以計算當月的用水量。整個過程枯燥且費力。當前,雖然聯網儀表正在取代模擬式水表,但成本也會隨之上漲;更何況,一些國家并不具備接入全球網絡的能力,而有的家庭和公司也無計劃支付更換儀表的費用。
本文,意法半導體為你演示如何使用低功耗、低成本的系統(由采用MCU嵌入式連接的低分辨率攝像機組成)高效地將模擬式儀表數字化。
該方法以STM32WL55為基礎,通過攝像頭捕捉水表讀數區域,然后通過MCU上運行的人工智能算法識別水表讀數。之后,AI分類器算法的運行結果(即儀表讀數)通過STM32WL支持的遠程sub-GHz無線網絡(如LoRaWAN)進行傳輸。傳統的聯網設備會將圖像傳送到云端,而我們的解決方案傳送的是讀數。
該解決方案的優點是:通過本地AI模型,可以快速準確地識別讀數,只需將結果發送回數據中心即可。此舉不僅能有效保護用戶數據隱私(僅傳輸推理結果),而且效率更高,還節省帶寬。這樣,我們就能以低成本、低功耗、高效率的方式解決問題。
STM32WL系列是世界上第一款支持遠程無線通信的MCU。
作為市場上首款可以連接LoRa低功耗廣域網的系統級芯片,STM32WL集成了STM32L4超低功耗微控制器和支持多種調制方案的Sub-GHz射頻子系統。
STM32取得成功的一個重要因素是其強大的生態系統。基于STM32WL產品的開發人員可以借用已經被市場證明成熟可靠的STM32生態系統。該生態系統包含已經熟練掌握的開發工具(支持基于STM32進行通用開發)、專門用于sub-GHz無線電開發的軟件包,以及AI設計工具,由此大大降低了開發難度,并縮短了產品上市時間。
生態系統中的資源包括STM32CubeMX項目配置和代碼生成工具、STM32CubeMonitor運行時監測和可視化工具,以及STM32CubeProgrammer代碼燒錄工具。
STM32Cube.AI可以幫助用戶快速將經過訓練的AI模型部署到STM32并進行驗證測試。
STM32CubeWL MCU軟件包的組件包含STM32WL系列運行所需的所有嵌入式軟件模塊,包括外設驅動程序、意法半導體的LoRaWAN協議棧、Sigfox協議棧,以及利用意法半導體安全啟動和安全固件更新技術實現LoRaWAN固件無線更新的示例代碼。
此外,還有兩種基于STM32WL的nucleo板件可用于快速原型制作:NUCLEO-WL55JC1(868pm 915amp 923 MHz)和NUCLEO-WL55JC2(433Accord470 MHz)。與此同時,有兩種基于Nucleo的Nucleo板可用于快速原型開發。該項目基于NUCLEO-WL55JC2開發板。
除了NUCLEO-WL55JC2,該項目的另一個關鍵組成部分是攝像頭。
攝像頭模塊(基于低成本的OV2640傳感器)通過標準GPIO直接連接到NUCLEO-WL55JC2開發板,因為STM32WL系列產品不提供DCMI接口。為方便進行演示,我們使用了一款常見的電磁計數器,這樣更容易進行模型演示。
實驗系統如下圖所示。我們將直流電源轉化成方波,用于驅動電磁計數器,然后攝像頭就可以采集計數器的讀數畫面,通過GPIO傳輸到NUCLEO-WL55JC2,由MCU上運行的AI模型進行識別。
所有硬件準備就緒后,我們就可以自己制作一個數據集,用于模型訓練。
在計算機視覺應用中,有一個經典的入門級項目 - 識別MNIST數據集。MNIST數據集收集0-9這10個阿拉伯數字的手寫字體,包括訓練集中的60000個樣本和測試集中的1000個樣本。有的用戶想要通過真實數據來嘗試學習技巧和模式識別方法,同時盡可能地節省在預處理和格式化方面花費的精力,對于此類用戶, MNIST是一個很好的練手項目。
但是我們不使用該數據集,因為水表上的數字的字體和顏色與該數據集差別很大。為了使模型獲得更好的表現,我們將使用上面提到的設備制作一個類似于MNIST的數據集。
該數據集大約有4000個樣本。每個樣本包含5位數字。數據集的部分樣本如下所示:
擁有數據集之后,我們可以構建一個神經網絡,并用自己的數據集來訓練模型。在該模型中,我們輸入一幅40 X32(單個字符)的灰度圖像來識別從0到19(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19)的20個類。下圖顯示了訓練中的損失和準確率的變化。該數據集的特點是背景簡單和字體規則,看起來訓練效果非常好。實際上,我們可以收集不同的水表讀數(不同的字體和顏色)進行訓練,這樣一個模型就可以識別多個不同水表讀數。
訓練結束后,我們將得到一個模型文件。此時,我們可以使用前面文章中提到的STM32cube.AI工具將模型轉換為優化的代碼,并快速將其部署到NUCLEO-WL55JC2板。
STM32Cube集成使STM32Cube.AI用戶能夠有效地在廣泛的STM32微控制器系列產品之間移植模型,并且(在相似型號適用于不同產品的情況下)在STM32產品之間輕松遷移。該項目使用STM32cube.AI將模型部署到STM32WL。關于計算機視覺應用,我們在前面文章中介紹的FP-AI-VISION1軟件包中有許多開放代碼,可幫助開發人員理解和快速開發。用戶可以瀏覽前面的文章:AI技術專題之六:STM32計算機視覺包FP-AI-VISION1簡介,以了解詳細信息。
該插件擴展了STM32CubeMX功能,可自動轉換預訓練人工智能模型和將生成的優化庫集成到用戶項目中,而不是人工構建代碼,并支持將深度學習解決方案嵌入到廣泛的STM32微控制器產品組合中,從而為每個產品添加新的智能化功能。
STM32Cube.AI原生支持各種深度學習框架,如Keras、TensorFlow? Lite、ConvNetJs,并支持可導出為ONNX標準格式的所有框架,如PyTorch?、Microsoft?Cognitive Toolkit、MATLAB?等。
此外,STM32Cube.AI支持來自廣泛ML開源庫Scikit-Learn的標準機器學習算法,如孤立森林、支持向量機(SVM)、K-Means。
在該項目中,我們使用的是TensorFlow框架。
最后,讓我們看看實際表現如何。為了便于演示,我們將攝像頭捕捉到的圖像和MCU上的識別結果傳輸到計算機屏幕上。視頻中黑色背景上的數字(白色字體)是攝像頭捕捉到的圖像,第一行是AI模型的識別結果。我們將水表設置為每五秒鐘驅動一次,這樣數字每隔五秒就會更新一次。該視頻顯示的是未經編輯的錄屏。在演示過程中,我們采用了遮擋的光線的方式,去模擬不同的光照條件,證明模型的魯棒性很好。
來源:意法半導體中國
免責聲明:本文為轉載文章,轉載此文目的在于傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請聯系小編進行處理
審核編輯 黃宇
-
mcu
+關注
關注
146文章
17019瀏覽量
350375 -
STM32
+關注
關注
2266文章
10876瀏覽量
354931 -
低功耗
+關注
關注
10文章
2362瀏覽量
103607 -
計算機視覺
+關注
關注
8文章
1696瀏覽量
45930
發布評論請先 登錄
相關推薦
評論