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