<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 智能計算 > 設計應用 > 基于機器學(xué)習的高效嵌入式計算機視覺(jué)

基于機器學(xué)習的高效嵌入式計算機視覺(jué)

作者: 時(shí)間:2024-09-04 來(lái)源:Arm 收藏

作者: 物聯(lián)網(wǎng)事業(yè)部主任軟件工程師兼技術(shù)推廣工程師

本文引用地址:http://dyxdggzs.com/article/202409/462644.htm

Sandeep Mistry

TinyML 是 (ML) 的一個(gè)分支,專(zhuān)注于將 ML 模型部署到低功耗、資源受限的物聯(lián)網(wǎng) (IoT) 設備上。在物聯(lián)網(wǎng)設備上部署 ML 模型有諸多好處,包括減少延遲和保護隱私性,因為所有數據都是在端側處理。TinyML 在 2019 年引起了人們的關(guān)注,當時(shí),Google 的 TensorFlow 團隊發(fā)布了適用于微控制器的 TensorFlow Lite (TFLM) 庫 [1] 。

最初的用例和 TFLM 示例側重于在基于 Cortex-M4 [2] 的開(kāi)發(fā)板(例如 Arduino Nano 33 BLE Sense [3] 和 SparkFun Edge [4] )上運行量化的 8 位關(guān)鍵詞檢測 [5] 和人員檢測 [6] 模型。這些示例利用 Cortex-M4 CPU 的 SMLAD [7] 指令對模型所需的乘加 (MAC) 運算執行端側 ML 推理。

上表總結了 Arduino Nano 33 BLE Sense 上兩種模型的 MAC 數量、RAM 和閃存要求以及推理延遲。

配備 Ethos-U55 NPU 的現代微控制器能夠運行最初為移動(dòng)端應用開(kāi)發(fā)的復雜模型。Ethos-U55 NPU 支持 44 個(gè) TensorFlow Lite 算子 [8] 的位精確輸出,并且可配置為每個(gè)周期執行 32、64、128 或 256 次 MAC 運算。本文將通過(guò)在配備 Ethos-U55 NPU 的現代微控制器上運行兩個(gè) TinyML 應用來(lái)展示 NPU 的性能優(yōu)勢。我們將分別在采用和不采用 Ethos-U55 NPU 的微控制器上運行應用中所使用的 ML 模型,以此對推理延遲進(jìn)行基準測試。

現代物聯(lián)網(wǎng)開(kāi)發(fā)板


TinyML 應用被部署到 Seeed Studio 的 Grove Vision AI Module V2 [9] 開(kāi)發(fā)板上,該開(kāi)發(fā)板基于 Himax WiseEye2 HX6538 微控制器并集成了 16 MB 的外部閃存。Himax WiseEye2 HX6538 [10] 微控制器搭載了 Cortex-M55 CPU 和 Ethos-U55 NPU,運行頻率均為 400 MHz,且帶有 512 KB 緊耦合存儲器 (TCM) 和 2 MB SRAM。

圖:Seeed Studio Grove Vision AI Module V2 開(kāi)發(fā)板

該開(kāi)發(fā)板上有一個(gè) 15 引腳相機串行接口 (CSI),連接至 Himax WiseEye2 HX6538 MCU,可與基于 OmniVision OV5647 的相機模塊一起使用。開(kāi)發(fā)板上運行的應用可以從相機模塊 [11] 實(shí)時(shí)采集分辨率為 160x120、320x240 或 640x480 像素的 RGB 圖像。

將 2.8 寸的 TFT 彩色液晶屏和 3.7 伏的鋰聚合物 (LiPo) 電池連接到開(kāi)發(fā)板上,便能打造出一款便攜式的電池供電設備。

TinyML 應用


部署到開(kāi)發(fā)板上的兩個(gè)基于的應用將會(huì )持續:

從相機模塊采集圖像。

完成使用 ML 模型時(shí)所需的預處理和后處理并執行 ML 推理。

在開(kāi)發(fā)板所連接的 TFT 屏幕上顯示所采集的圖像和 ML 推理結果。

第一個(gè)應用將使用兩個(gè) ML 模型來(lái)檢測臉上的關(guān)鍵特征點(diǎn),第二個(gè)應用則使用 ML 模型來(lái)檢測人體姿態(tài)中的關(guān)鍵特征點(diǎn)。

這兩個(gè)應用都將用到 TFLM 庫和 Ethos-U 自定義算子 [12] ,以便將 ML 運算卸載到 NPU 中。應用中所用的量化 8 位 TensorFlow Lite 模型必須使用 Arm 的 vela [13] 編譯器進(jìn)行編譯。vela 編譯器將 NPU 支持的運算轉換為 Ethos-U 自定義算子,使其可分派到 NPU 進(jìn)行高效執行。任何不受 NPU 支持的運算都將保持原樣并退回到 CPU 上運行。

左為 8 位量化 TensorFlow Lite 模型圖,右為經(jīng) vela 編譯的 8 位量化 TensorFlow Lite 模型圖 (點(diǎn)擊圖片,查看全圖)

在上例中,除了 pad 運算之外的所有 TensorFlow 算子都被 vela 編譯器轉換為在 Ethos-U55 NPU 上運行的 Ethos-U 自定義算子。未轉換的 pad 算子將回調到 CPU 上運行。

Face Mesh 應用


該應用從相機模塊采集 320x240 圖像,然后估算人臉上的 468 個(gè)關(guān)鍵特征點(diǎn)。對于那些需要識別熟悉面孔、監測注意力、識別情緒或執行醫療診斷的用例來(lái)說(shuō),該應用可以用作特征提取層。其采用了兩個(gè) ML 模型,首先是使用 Google MediaPipe BlazeFace(短程)模型 [14] 來(lái)識別圖像中面部的位置。檢測到人臉后,繼而使用 Google MediaPipe Face Mesh 模型 [15] 來(lái)識別圖像中最大的那個(gè)人臉的 468 個(gè)關(guān)鍵特征點(diǎn)。

MediaPipe BlazeFace(短程)模型


MediaPipe BlazeFace(短程)模型需要將一張 RGB 128x128 圖像作為輸入,且每次推理要執行 3,100 萬(wàn)次 MAC 運算。利用 Katsuya Hyodo 的 PINTO_model_zoo GitHub 資源庫 [16] ,可得到 TensorFlow Lite 格式的 BlazeFace(短程)模型的 8 位量化版本。

上表總結了對 RAM 和閃存的要求,并將單獨使用 Cortex-M55 CPU 與同時(shí)使用 Cortex-M55 CPU 和 Ethos-U55 NPU 所對應的推理延遲進(jìn)行了比較,結果顯示 Ethos-U55 NPU 將推理速度提高了 109 倍!

MediaPipe Face Mesh 模型


MediaPipe Face Mesh 模型需要將一張 RGB 192x192 的臉部裁剪圖像(填充率為 25%)作為輸入,且每次推理要執行 3,680 萬(wàn)次 MAC 運算。從 GitHub [17] 下載該模型的 16 位浮點(diǎn)版本,并使用 tflite2tensorflow [18] 工具將其轉換為 8 位量化模型。

上表總結了對 RAM 和閃存的要求,并將單獨使用 Cortex-M55 CPU 與同時(shí)使用 Cortex-M55 CPU 和 Ethos-U55 NPU 所對應的推理延遲進(jìn)行了比較,結果顯示 Ethos-U55 NPU 將推理速度提高了 103 倍。

Ethos-U55 的優(yōu)勢


將 ML 計算卸載到 Ethos-U55,可使該應用每秒執行 10 次以上的推理。如果將其部署到 Cortex-M55 CPU,在臉部可見(jiàn)的情況下,該應用只能每八秒執行一次推理。

姿態(tài)估計應用


該應用從相機模塊采集 320x240 圖像,然后為圖像中檢測到的每個(gè)人估計人體姿態(tài)的 17 個(gè)關(guān)鍵特征點(diǎn)。該應用可以用作那些需要檢測跌倒或運動(dòng)的應用的特征提取層,或作為人機界面的輸入。

該模型使用 Ultralytic YOLOv8 GitHub 資源庫的 DeGirum 分支 [19] ,通過(guò)一張 256x256 的 RGB 圖像輸入,導出為一個(gè) 8 位量化 TensorFlow Lite 模型。對 DeGirum 進(jìn)行修改可以讓導出的模型更好地針對微控制器進(jìn)行優(yōu)化,這是通過(guò)刪除轉置運算并分離模型的七個(gè)輸出來(lái)實(shí)現的,旨在提高量化的準確性。該模型每次推理需要進(jìn)行 7.28 億次 MAC 運算。

上表總結了對 RAM 和閃存的要求,并將單獨使用 Cortex-M55 CPU 與同時(shí)使用 Cortex-M55 CPU 和 Ethos-U55 NPU 所對應的推理延遲進(jìn)行了比較,結果顯示 Ethos-U55 NPU 將推理速度提高了 611 倍!將 ML 計算卸載到 Ethos-U55,可使該應用每秒執行 10 次以上的推理。如果將其部署到 Cortex-M55 CPU,該應用只能每 62 秒執行一次推理。推理延遲的縮短使得應用能夠更快地對人們的動(dòng)作做出反應。

結論


本文演示了為移動(dòng)端應用開(kāi)發(fā)的 ML 模型,它們每次推理需要進(jìn)行千萬(wàn)到數億次 MAC 運算,可部署到配備 Ethos-U55 NPU 的現代微控制器上。與 TFLM 庫中所含的示例應用相比,這些 ML 模型對 MAC 運算、RAM 和閃存的要求更高。使用 NPU 可以讓?xiě)迷谝幻雰葓绦卸啻瓮评?,而如果沒(méi)有 NPU,則每隔幾秒或一分鐘內只能執行一次推理。因此,使用 NPU 對于應用來(lái)說(shuō)非常有利,使其能夠運行一個(gè)或多個(gè)相比初始 tinyML 應用中所使用的模型更為復雜的 ML 模型,而且能夠對周?chē)h(huán)境做出更快的反應。

本文展示的應用離不開(kāi) Himax 團隊的辛勤付出,他們將 Face Mesh 和 Yolov8n-pose 模型移植到了 Himax WiseEye2 HX6539 微控制器上。正是他們的項目成果,啟發(fā)了我去開(kāi)發(fā)一臺帶有 TFT 顯示屏和可充電電池的緊湊型便攜式電池供電設備。


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>