新聞中心

        EEPW首頁 > 嵌入式系統 > 新品快遞 > 如何在Cortex-M處理器上實現高精度關鍵詞識別

        如何在Cortex-M處理器上實現高精度關鍵詞識別

        作者: 時間:2018-01-29 來源:電子產品世界 收藏

            

        image001.jpg

         

        本文引用地址:http://www.104case.com/article/201801/375072.htm

          我們可以對神經網絡架構進行優化,使之適配微控制器的內存和計算限制范圍,并且不會影響精度。我們將在本文中解釋和探討深度可分離卷積神經網絡在  上實現關鍵詞識別的潛力。

          關鍵詞識別 (KWS) 對于在智能設備上實現基于語音的用戶交互十分關鍵,需要實時響應和高精度,才能確保良好的用戶體驗。最近,神經網絡已經成為 KWS 架構的熱門選擇,因為與傳統的語音處理算法相比,神經網絡的精度更勝一籌。

            

        image002.jpg

         

          關鍵詞識別神經網絡管道

          由于要保持“永遠在線”,KWS 應用的功耗預算受到很大限制。雖然 KWS 應用也可在專用 DSP 或高性能 CPU 上運行,但更適合在 Arm  微控制器上運行,有助于最大限度地降低成本,Arm  微控制器經常在物聯網邊緣用于處理其他任務。

          但是,要在基于 Cortex-M 的微控制器上部署基于神經網絡的 KWS,我們面臨著以下挑戰:

          1. 有限的內存空間

          典型的 Cortex-M 系統最多提供幾百 KB 的可用內存。這意味著,整個神經網絡模型,包括輸入/輸出、權重和激活,都必須在這個很小的內存范圍內運行。

          2. 有限的計算資源

          由于 KWS 要保持永遠在線,這種實時性要求限制了每次神經網絡推理的總運算數量。

          以下是適用于 KWS 推理的典型神經網絡架構:

          ? 深度神經網絡 (DNN)

          DNN 是標準的前饋神經網絡,由全連接層和非線性激活層堆疊而成。

          ? 卷積神經網絡 (CNN)

          基于 DNN 的 KWS 的一大主要缺陷是無法為語音功能中的局域關聯性、時域關聯性、頻域關聯性建模。CNN 則可將輸入時域和頻域特征當作圖像處理,并且在上面執行 2D 卷積運算,從而發現這種關聯性。

          ? 循環神經網絡 (RNN)

          RNN 在很多序列建模任務中都展現出了出色的性能,特別是在語音識別、語言建模和翻譯中。RNN 不僅能夠發現輸入信號之間的時域關系,還能使用“門控”機制來捕捉長時依賴關系。

          ? 卷積循環神經網絡 (CRNN)

          卷積循環神經網絡是 CNN 和 RNN 的混合,可發現局部時間/空間關聯性。CRNN 模型從卷積層開始,然后是 RNN,對信號進行編碼,接下來是密集全連接層。

          ? 深度可分離卷積神經網絡 (DS-CNN)

          最近,深度可分離卷積神經網絡被推薦為標準 3D 卷積運算的高效替代方案,并已用于實現計算機視覺的緊湊網絡架構。

          DS-CNN 首先使用獨立的 2D 濾波,對輸入特征圖中的每個通道進行卷積計算,然后使用點態卷積(即 1x1),合并縱深維度中的輸出。通過將標準 3D 卷積分解為 2D和后續的 1D,參數和運算的數量得以減少,從而使得更深和更寬的架構成為可能,甚至在資源受限的微控制器器件中也能運行。

          在 Cortex-M 上運行關鍵詞識別時,內存占用和執行時間是兩個最重要因素,在設計和優化用于該用途的神經網絡時,應該考慮到這兩大因素。以下所示的神經網絡的三組限制分別針對小型、中型和大型 Cortex-M 系統,基于典型的 Cortex-M 系統配置。

            

        image003.jpg

         

          KWS 模型的神經網絡類別 (NN) 類別,假定每秒 10 次推理和 8 位權重/激活

          要調節模型,使之不超出微控制器的內存和計算限制范圍,必須執行超參數搜索。下表顯示了神經網絡架構及必須優化的相應超參數。

            

        image004.jpg

         

          神經網絡超參數搜索空間

          首先執行特征提取和神經網絡模型超參數的窮舉搜索,然后執行手動選擇以縮小搜索空間,這兩者反復執行。下圖總結了適用于每種神經網絡架構的最佳性能模型及相應的內存要求和運算。DS-CNN 架構提供最高的精度,而且需要的內存和計算資源也低得多。

            

        image005.jpg

          最佳神經網絡模型中內存與運算/推理的關系

          KWS 應用部署在基于 Cortex-M7 的 STM32F746G-DISCO 開發板上(如下圖所示),使用包含 8 位權重和 8 位激活的 DNN 模型,KWS 在運行時每秒執行 10 次推理。每次推理(包括內存復制、MFCC 特征提取、DNN 執行)花費大約 12 毫秒。為了節省功耗,可讓微控制器在余下時間處于等待中斷 (WFI) 模式。整個 KWS 應用占用大約 70 KB 內存,包括大約 66 KB 用于權重、大約 1 KB 用于激活、大約 2 KB 用于音頻 I/O 和 MFCC 特征。

            

        image006.jpg

         

          Cortex-M7 開發板上的 KWS 部署

          總而言之,Arm Cortex-M 可以在關鍵詞識別應用中達到很高的精度,同時通過調整網絡架構來限制內存和計算需求。DS-CNN 架構提供最高的精度,而且需要的內存和計算資源也低得多。

          代碼、模型定義和預訓練模型可從 github.com/ARM-software 獲取。

          我們全新的機器學習開發人員網站提供一站式資源庫、詳細產品信息和教程,幫助應對網絡邊緣的機器學習所面臨的挑戰。

          本博客基于白皮書“網絡邊緣:微控制器上的關鍵詞識別”(Hello Edge: Keyword Spotting on Microcontrollers),該白皮書最初發布在康奈爾大學圖書館網站上。要下載 Arm 白皮書副本,請點擊以下鏈接。

          https://community.arm.com/cfs-file/__key/telligent-evolution-components-attachments/01-2142-00-00-00-01-34-26/Arm_5F00_KeywordSpotting_5F00_Whitepaper.pdf



        關鍵詞: Cortex-M 處理器

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 黄浦区| 隆林| 农安县| 高陵县| SHOW| 久治县| 巴彦县| 乡城县| 鄂托克前旗| 额济纳旗| 会东县| 同仁县| 旬邑县| 临城县| 河池市| 册亨县| 郴州市| 栾川县| 麻城市| 淮北市| 禄劝| 梅州市| 金门县| 无锡市| 宣化县| 苍溪县| 南通市| 黄平县| 朔州市| 神木县| 闽清县| 璧山县| 临城县| 信阳市| 银川市| 宁蒗| 安庆市| 来凤县| 富民县| 凤冈县| 白玉县|