本次的重中之重就是體驗MAX78000FTHR的邊緣計算,本次選用的demo是kws20_demo,演示了如何使用MAX78000FTHR 識別關鍵字,完整數據集中的以下 20 個關鍵字子集:[‘up’, ‘down’, ‘left’, ‘right’, ‘stop’, ‘go’, ‘yes’, ‘no’, ‘on’, ‘off’, ‘one’, ‘two’, ‘three’, ‘four’, ‘five’, ‘six’, ‘seven’, ‘eight’, ‘nine’, ‘zero’]其余關鍵字和無法識別的詞屬于“Unknown”類別。
demo體驗:
首先導入kws20_demo這個例子,基礎例程在:\MaximSDK\Examples\MAX78000\CNN\kws20_demo,不過我這邊不建議通過“Import”添加,因為在我們不用的使用進行刪除時,如果不小心選擇了刪除源文件會將demo文件刪除,這樣就不能再繼續使用了,如果通過新建的方式參考demo建工程,相當于把demo復制了過來,這樣咱們刪除不刪除至少不會對基礎demo例程產生損害。
接下來我們編譯工程并調試,可以發現綠燈亮起,這個時候我們可以說出上面的關鍵詞,采集到后就可以通過串口輸出了,如下圖:
可以看到當采集到麥克風的動作時就出出發輸出,如果沒有識別就會是“Unknown”,輸出內容包括采集次數,邊緣計算CNN運行時間,音量的大小,以及識別出的字符。通過不斷的測試發現“SEVEN”的識別相對錯誤率或者不識別率比較高,有可能是我的發音與第二版 Google 語音命令數據集差別比較大。
CNN實現流程:
需要的環境:
ADI推薦的是使用windows上的wsl進行模型訓練,需要借用GPU的計算能力,GPU對于加速訓練的效果非常明顯,注意在wsl中安裝的cuda版本號就不能電腦支持的最高版本。
接下來是linux中的操作,安裝一個PyTorch,模型訓練是使用PyTorch機型進行訓練的,并且安裝一些系列的工具如penv。
重中之重是ai8x-training和ai8x-synthesis兩個庫,ai8x-training與我們模型訓練及模型評估相關,ai8x-synthesis是量化模型,生成sdk開發中的3個文件相關,具體介紹可以參考下面的官方介紹: