在STM32F7 Discovery Kit實作DS-CNN關鍵字萃取

本文說明如何在ARM Crotex-M MCU,以DS-CNN精準進行關鍵字萃取。DS-CNN中文介紹請參考”2019年版嵌入式系統設計解密”之”邊緣運算篇”中相關文章;以下是講解如何編譯與執行ARM提供程式碼。本次開發環境是在Ubuntu 16.04 64 Bits作業系統,預先安裝的環境請參考這篇文章;目標板為Discovery kit with STM32F746NG MCU,目標板在使用前需更新ST-LINK/V2 韌體,詳細步驟請參考這篇文章

首先在Anaconda環境下建立Python2虛擬環境,用以對應ARM的mbed開發環境:

conda create -n python2 python=2.7

完成後進入虛擬環境:

conda activate python2

再下來安裝相關的Ubuntu套件:

sudo apt-get update
sudo apt-get install git
sudo apt-get install mercurial

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386

接著安裝mbed-cli :

pip install mbed-cli

把網址 https://github.com/ARMmbed/mbed-os/blob/master/requirements.txt 內容存成requirements.txt後進行安裝:

pip install -r requirements.txt

安裝GCC for ARM,從這個網址下載gcc-arm-none-eabi-8-2018-q4-major-linux.tar.bz2後解壓縮到家目錄:

tar jxvf gcc-arm-none-eabi-8-2018-q4-major-linux.tar.bz2 -C ~/

完成後就可以從ARM的GitHub下載”關鍵字萃取”專案:

git clone https://github.com/ARM-software/ML-KWS-for-MCU.git

本文並不進行模型訓練的部份,主要是要將已訓練好的模型移往MCU;所以直接進入MCU的程式碼目錄:

cd ML-KWS-for-MCU/Deployment

在該目錄下載ARM的CMSSI 5程式庫,以對應ARMNN功能:

git clone https://github.com/ARM-software/CMSIS_5.git

以及設定編譯器為ARM GCC:

mbed config -G GCC_ARM_PATH /home/yilintung/gcc-arm-none-eabi-8-2018-q4-major/bin

至此完成編譯環境設定,用以下的命令進行專案建立、編譯與執行:

mbed new kws_realtime_test --create-only

cd kws_realtime_test

cp ../Examples/realtime_test/mbed_libs/*.lib .

mbed deploy

mbed new mbed-os-program

mbed compile -m DISCO_F746NG -t GCC_ARM \
--source . --source ../Source --source ../Examples/realtime_test \
--source ../CMSIS_5/CMSIS/NN/Include --source ../CMSIS_5/CMSIS/NN/Source \
--source ../CMSIS_5/CMSIS/DSP/Include --source ../CMSIS_5/CMSIS/DSP/Source \
--source ../CMSIS_5/CMSIS/Core/Include \
--profile ../release_O3.json -j 8

cp ./BUILD/DISCO_F746NG/GCC_ARM-RELEASE_O3/kws_realtime_test.bin /media/yilintung/DIS_F746NG/

執行結果如下所示:

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *