運用FP-AI-VISION1的影像分類(lèi)器
意法半導體(ST)持續積極參與高速發(fā)展的嵌入式人工智能領(lǐng)域。為了在具成本效益和低功耗的微控制器上加快運用機器學(xué)習和深度神經(jīng)網(wǎng)絡(luò ),ST開(kāi)發(fā)全方位的邊緣人工智能生態(tài)系統,嵌入式開(kāi)發(fā)人員可以在各種STM32微控制器產(chǎn)品組合中,輕松新增利用人工智能的新功能和強大的解決方案。
圖一顯示ST AI解決方案之于整個(gè)STM32產(chǎn)品組合,而且已經(jīng)擁有預先訓練神經(jīng)網(wǎng)絡(luò )的嵌入式開(kāi)發(fā)人員,可以在任何采用Cortex M4、M33和M7的STM32上移植、優(yōu)化和驗證這整個(gè)產(chǎn)品組合。STM32Cube.AI是 STM32CubeMX的AI擴充套件,讓客戶(hù)能以更高效率開(kāi)發(fā)其AI產(chǎn)品。
利用深度學(xué)習的強大功能可以增強訊號處理效能,并提升STM32 應用的工作效率。
本文概述FP-AI-VISION1,此為用于計算機視覺(jué)開(kāi)發(fā)的架構,提供工程師在STM32H7上執行視覺(jué)應用的程序代碼范例。
圖一 : 執行機器學(xué)習和深度學(xué)習算法的STM32產(chǎn)品組合
從FP-AI-VISION1程序代碼范例開(kāi)始,簡(jiǎn)易達成在邊緣執行的各種計算機視覺(jué)使用案例,例如
? 生產(chǎn)在線(xiàn)的物體分類(lèi),藉以根據物體的類(lèi)型調整輸送帶速度;
? 偵測產(chǎn)品的一般瑕疵;
? 區分不同類(lèi)型的對象,例如:螺絲、意大利面、樂(lè )高零件,并分揀到不同的容器中;
? 對設備或機器人操作的材料類(lèi)型進(jìn)行分類(lèi),并隨之調整行為;
? 對食品類(lèi)型進(jìn)行分類(lèi)以調整烹調/燒烤/沖泡或重新訂購貨架上的新產(chǎn)品。
FP-AI-VISION1
概述
FP-AI-VISION1是STM32Cube功能套件(FP),提供采用卷積神經(jīng)網(wǎng)絡(luò )(CNN)的計算機視覺(jué)應用范例。其由STM32Cube.AI產(chǎn)生的軟件組件和AI計算機視覺(jué)應用專(zhuān)用的應用軟件組件組成。
功能套件中提供的應用范例,包含:
? 食品識別:辨識18類(lèi)常見(jiàn)食品;
? 人體感測:識別影像中是否有人;
? 人數統計:依照物體偵測模型計算情境中的人數。
主要特色
FP-AI-VISION1在與STM32F4DIS-CAM攝影機子板,或是B-CAMS-OMV攝影機模塊搭配連接的STM32H747I-DISCO板上運作,包括用于攝影機擷取、畫(huà)格影像預處理、推斷執行的完整應用韌體和輸出后處理。這也提供浮點(diǎn)和 8 位量化 C 模型的整合范例,并支持多種數據存儲器設定,滿(mǎn)足各種應用需求。
此功能套件最重要的其中一項關(guān)鍵優(yōu)勢是提供范例,描述如何將不同類(lèi)型的數據有效地放置在芯片上的內存和外部?jì)却嬷?。用?hù)因此能夠輕松了解最符合需求的內存分配,并有助建立適用于STM32系列的自定義神經(jīng)網(wǎng)絡(luò )模型,特別是在STM32H747-Disco板上。
圖二 : FP-AI-VISION1評估裝置范例
FP-AI-VISION1 包括三個(gè)采用 CNN 的影像分類(lèi)應用范例:
? 一種對彩色(RGB 24位)畫(huà)格影像執行的食品識別應用;
? 一種對彩色(RGB 24位)畫(huà)格影像執行的人體感測應用;
? 一種對灰階(8位)畫(huà)格影像執行的人體感測應用。
本文將重點(diǎn)介紹食品識別和人體感測之兩種范例。
首先討論食品識別應用。食品識別CNN是MobileNet模型的衍生模型。MobileNet是適用于行動(dòng)和嵌入式視覺(jué)應用的高效率模型架構,此模型架構由Google[1]提出。
MobileNet模型架構包括兩個(gè)簡(jiǎn)單的全局超參數,可以高效在延遲和準確度之間進(jìn)行權衡。原則上,這些超參數可讓模型建構者根據問(wèn)題的限制條件,決定應用大小適合的模型??紤]STM32H747的目標限制條件,此軟件套件中使用的食品識別模型是透過(guò)調整這些超參數建構而成,以便在準確度、運算成本和內存占用之間進(jìn)行最佳權衡。
圖三為食品識別模型的簡(jiǎn)單執行流程。這在STM32H747上執行,大約需要150毫秒才能完成推斷。
圖三 : 食品識別模型的執行流程
其次,將說(shuō)明人體感測應用。FP-AI-VISION1 提供兩個(gè)人體感測的范例應用:
? 一種采用低復雜度CNN 模型(所謂的Google_Model),用于處理分辨率為96×96像素的灰階影像(每像素 8 位)。這個(gè)模型可從:storage.googleapis.com下載。
? 一種采用更高復雜度的CNN模型(所謂的 MobileNetv2_Model),用于處理分辨率為 128×128像素的彩色影像(每像素 24 位)。
在此觀(guān)察前一個(gè)模型,人體感測應用程序可識別影像中是否有人。在與STM32F4DIS-CAM連接的STM32L4R上執行這個(gè)應用程序時(shí),大約需要270毫秒來(lái)推斷。而閃存和 RAM 的大小足以在微控制器上執行神經(jīng)網(wǎng)絡(luò ) (NN),如圖四所示。
圖四 : 人體感測概覽
人體感測可利用從低功率喚醒,使用案例包括開(kāi)燈、開(kāi)門(mén)或其他任何自定義方法。一般用途通常采用被動(dòng)紅外線(xiàn)傳感器,藉以在偵測到移動(dòng)的時(shí)間和地點(diǎn)觸發(fā)事件。不過(guò),這種PIR 系統的問(wèn)題是可能發(fā)生誤報。如果有貓經(jīng)過(guò)或在風(fēng)中飛舞的樹(shù)葉,可能會(huì )觸發(fā)這個(gè)系統。人體感測應用只會(huì )偵測人類(lèi),并且有助于輕松開(kāi)發(fā)更智能的偵測系統。
系統架構
FP-AI-VISION1的頂層架構,如圖五所示。
圖五 : FP-AI-VISION1架構
應用建構流程
從浮點(diǎn) CNN 模型(使用 Keras 等架構設計和訓練)開(kāi)始,使用者產(chǎn)生優(yōu)化的C程序代碼(使用STM32Cube.AI 工具)并整合到計算機視覺(jué)架構中(FP-AI-VISION1 提供),以便在 STM32H7上建構計算機視覺(jué)應用。
產(chǎn)生C程序代碼時(shí),使用者可從下列兩個(gè)選項中擇一:
? 直接從CNN模型以浮點(diǎn)方式產(chǎn)生浮點(diǎn)C程序代碼;
? 或者對浮點(diǎn)CNN模型進(jìn)行量化,得到8位模型,隨后產(chǎn)生對應之量化后的C程序代碼;
對于大多數 CNN 模型,第二個(gè)選項可以減少內存占用(閃存和RAM)以及推斷時(shí)間。對最終輸出準確度的影響則取決于CNN模型以及量化過(guò)程(主要是測試數據集和量化算法)。
圖六 : FP-AI-VISION1架構
應用執行流程
對于計算機視覺(jué)應用,整合需要一些數據緩沖區,如圖七所示。
圖七 : 執行流程中的數據緩沖區
應用過(guò)程依序執行下列操作:
1. 在 camera_capture buffer中擷取攝影機畫(huà)格(透過(guò)DCMI數據緩存器中的DMA引擎)。
2. 此時(shí),根據選擇的內存分配配置,將camera_capture buffer內容復制到 camera_frame buffer,并啟動(dòng)后續畫(huà)格的擷取。
3. camera_frame buffer中包含的影像將重新縮放到Resize_Dst_Img buffer中,藉以配合預期的CNN輸入張量尺寸。例如,食品識別NN模型需要輸入張量,例如 Height × Width = 224 × 224像素。
4. 執行Resize_Dst_Img buffer到Pfc_Dst_Img buffer的像素色彩格式轉換。
5. 將Pfc_Dst_Img buffer內容中包含的各像素格式調整到nn_input緩沖區中。
6. 執行NN模型的推斷:這個(gè)nn_input buffer以及activation buffer提供給NN作為輸入。分類(lèi)結果將儲存在 nn_output buffer中。
7. 對nn_output buffer內容進(jìn)行后處理,并顯示結果于屏幕上。
圖表八詳細說(shuō)明了食品識別應用在整合量化C模型或浮點(diǎn)C模型時(shí)所需的RAM。
圖八 : 用于食品識別應用的SRAM內存緩沖器
參考數據
[1] 食品識別 CNN 是 MobileNet 模型的衍生模型。MobileNet:用于行動(dòng)視覺(jué)應用的高效率卷積神經(jīng)網(wǎng)絡(luò )
[2]UM2611:FP-AI-VISION1手冊
[3]UM2526:STM32Cube.AI手冊
[4]FP-AI-VISION1 視訊應用影片
評論