使用DEEPCRAFT?和MicroPython輕松實現邊緣AI
邊緣AI聽起來很有趣……直到數據捕獲成功?我們聽到了!MicroPython與DEEPCRAFT?Studio的集成使其變得前所未有的簡單。
半焊板,傳感器粘在任何移動的東西上——每一個原型都是從混亂和希望開始的。你的想法看起來很有希望,但甚至在你開始之前,獲取實時傳感器數據就成了主要的障礙。突然間,您被埋沒在嵌入式C驅動程序、破碎的日志和神秘的bug中,只是試圖回答:“傳感器實際感知到什么?”靈感的火花在繁瑣的設置墻后消失了。
通過我們的DEEPCRAFT?MicroPython集成,數據捕獲變得非常簡單。在您的主板上運行一個MicroPython腳本,將數據無線傳輸到您的主機。在主機端,DEEPCRAFT的捕獲服務器處理其余的-實時日志記錄,時間戳,并格式化您的數據,準備直接進入DEEPCRAFT?工作室進行培訓。沒有笨拙的司機。沒有損壞的csv。只有干凈的、帶有時間戳的數據——就像你想象的那樣。從傳感器到數據集,它比以往任何時候都更流暢。下面是工作流的樣子:
Capture Server提供了多個接口,但這種集成側重于通過Wi-Fi使用TCP無線傳輸傳感器數據,使整個管道既靈活又不需要電纜。
讓我們開始看看這有多簡單。我們將以音頻數據流作為應用程序示例來講解這個Protip。如果您需要復習PDM麥克風,我們已經在這篇文章中為您介紹了。
硬件設置
你所需要的只是CY8CKIT-062S2-AI套件。該套件有兩個內置的IM72D128數字麥克風。本套件中連接PDM-PCM總線的引腳有:
?CLK: p104
?數據:P10_5
軟件設置
步驟1。安裝
1. 首先,您需要在PSOC?設備上運行MicroPython固件。在這里找到設置的所有細節(jié)。
2. 按照Capture Server文檔中提供的說明克隆并設置Capture Server存儲庫。
3. 克隆您將找到數據獲取腳本的GitHub存儲庫。
步驟2。在設備上啟動傳感器數據采集
1. 一旦克隆了GitHub存儲庫,在任何MicroPython支持的IDE(如thony)中打開該位置。選擇所有源并通過點擊“上傳至/”將其復制到設備。
將它們成功復制到設備后,您應該看到以下屏幕。
2. 現在在你的MicroPython設備上打開config.py,添加你的網絡憑據并保存在設備上。
3. 打開data_acquisition.py腳本并單擊play按鈕。
步驟3:運行Capture Server
1. 從命令提示符終端導航到克隆的Capture Server存儲庫的根目錄。您必須已經在名為captureserver的文件夾中。然后轉到examples/generic文件夾。
2. 將參數替換為實際參數后,執(zhí)行如下命令執(zhí)行Capture Server:
注意,這里的參數也應該與數據采集腳本中的傳感器配置值相匹配。以PDM麥克風配置為例:
?ip-address:是設備的ip地址,您將在運行data_acquisition.py腳本時在終端中看到打印輸出。
?數據格式:.wav(音頻數據)
?數據類型:h(短)
?每包樣品:512個。每個包中樣本的大小也與緩沖區(qū)大小相似)
?特點:1(無)的功能)
?采樣率:16000(傳感器可接受采樣率)
因此,data_acquisition.py中相應的配置看起來像:
有關每個參數的解釋,請查看Capture Server文檔。根據上述參數值,命令如下:
成功運行Capture Server后,您將看到開始錄制、停止錄制和退出的選項,如下所示:
完成后,記錄的數據將存儲在上面提到的輸出目錄中。
步驟4:導入DEEPCRAFT?Studio
1. 啟動DEEPCRAFT?Studio并創(chuàng)建一個新項目或打開一個現有項目。轉到DATA選項卡,單擊Add DATA按鈕,并選擇包含捕獲的.wav或. DATA文件及其相應標簽文件的輸出目錄。
2. 選擇輸出目錄后,DEEPCRAFT?Studio將自動將音頻/數據文件及其相應的標簽文件導入到新的數據會話中。
3. 創(chuàng)建數據會話后,您的數據集將在DEEPCRAFT?Studio中訪問,準備進行預處理,標記和訓練機器學習模型。
就像這樣,你的傳感器數據就在工作室里了——馬上就可以訓練了。
代碼的解釋
想知道引擎蓋下面是什么嗎?下面將深入介紹在硬件的文件系統(tǒng)上運行的Python腳本。
1. 從必需的導入開始。
?struct:用于在通過TCP發(fā)送之前將緩沖區(qū)數據打包成二進制格式。
?network_utils:模塊處理Wi-Fi連接。
?tcp_server:設置一個TCP套接字來監(jiān)聽傳入的連接。
?pdm_pcm:音頻傳感器模塊;這可以根據需要與其他傳感器交換。
2. 連接到Wi-Fi,使用設備的IP地址設置TCP服務器,并等待Capture server(在您的主機上)連接。
3. 初始化傳感器以及存儲傳感器數據的緩沖區(qū)。還要準備數據流的格式。
?init():初始化傳感器(例如,設置時鐘,配置總線)。
?get_buffer():準備一個緩沖區(qū)來保存采樣數據。
?get_format():返回端序(<或>)和數據格式(h, h等)。
?full_format:用于struct。將原始樣本轉換為二進制包。
4. 等待Capture Server連接。只有在運行Capture Server腳本后,才會通過打印IP地址顯示已連接。
5. 完成所有設置后,開始將數據捕獲到緩沖區(qū)中,將其轉換為所需的格式并通過TCP發(fā)送。
6. 然后關閉連接并釋放所有資源。
使用其他傳感器
使用不同的傳感器?其實也很簡單!
轉到添加您自己的傳感器部分來集成您的自定義傳感器并開始流式傳輸。
本文編譯自hackster.io