天天看點

基于matlab使用深度學習對超寬帶脈沖雷達信号資料進行分類

作者:原來是珞瑜吖

一、前言

此示例說明如何使用多輸入、單輸出卷積神經網絡 (CNN) 對超寬帶 (UWB) 脈沖雷達信号資料進行分類。

二、介紹

使用傳感器(如UWB脈沖雷達)擷取的基于運動的信号資料包含特定于不同手勢的模式。将運動資料與運動相關聯有利于多種工作途徑。例如,手勢識别對于非接觸式人機互動非常重要。此示例旨在使用深度學習解決方案從手勢資料集中的模式中自動提取特征,并為每個信号樣本提供标簽。

UWB 手勢是一個公開可用的動态手勢資料集 [1]。它包含從9600個不同的人類志願者那裡收集的8個樣本。為了獲得每個記錄,檢查人員在實驗裝置的左側、頂部和右側放置了一個單獨的 UWB 脈沖雷達,進而産生了 3 個接收的雷達信号資料矩陣。志願者從由12個動态手部動作組成的手勢詞彙表中執行手勢:

  1. 左右滑動(L-R 滑動)
  2. 左右滑動(R-L 滑動)
  3. 上下滑動(U-D 滑動)
  4. 向下滑動(D-U 滑動)
  5. 對角-左-右-上-下滑動(對角-LR-UD 滑動)
  6. 對角線-左-右-下-向上滑動(對角-LR-DU 滑動)
  7. 對角-右-左-上-下滑動(對角-RL-UD 滑動)
  8. 對角-右-左-下-向上滑動(對角-RL-DU 滑動)
  9. 順時針旋轉

由于每個手勢動作都由 3 個獨立的 UWB 脈沖雷達捕獲,我們将使用 CNN 架構,該架構接受 3 個信号作為單獨的輸入。CNN模型将從每個信号中提取特征資訊,然後再将其組合以進行最終的手勢标簽預測。是以,多輸入、單輸出CNN将使用最少的預處理雷達信号資料矩陣來對不同的手勢進行分類。

三、下載下傳資料

每個雷達信号資料矩陣都被标記為生成它的手勢。8名不同的人類志願者執行了12個單獨的手勢,總共有96個試驗存儲在96個MAT檔案中。每個MAT檔案包含3個雷達資料矩陣,對應于實驗設定中使用的3個雷達。這些檔案位于以下位置:

https://ssd.mathworks.com/supportfiles/SPT/data/uwb-gestures.zip

将資料檔案下載下傳到 MATLAB 示例目錄中,才可以運作程式。

四、探索資料

建立信号資料存儲以通路檔案中的資料。使用該參數指定要從每個檔案中讀取的信号變量名稱。此示例假定資料集已存儲在uwb-gestures檔案夾下的 MATLAB 示例目錄中。如果不是這種情況,請更改變量中資料的路徑。資料存儲傳回一個三元素單元數組,其中包含左雷達、上雷達和右雷達的雷達信号矩陣(按該順序)。

每個雷達信号矩陣中的行和列分别表示手勢的持續時間(慢時間)和手到雷達的距離(快時間)。在資料采集過程中,檢查員記錄了一個受試者重複一個特定的手勢450秒,相當于9000(慢時間)行。在 1 個慢幀中有 90 個完整的手勢動作。是以,每個雷達信号矩陣包含100個完整的手勢運動樣本。每個UWB雷達的射程為1.2米,相當于189個快速時間箱。

若要可視化手勢動作,請指定 UWB 雷達位置、手勢和手勢示例(介于 1 和 100 之間)。擷取所選手勢和雷達位置的雷達信号矩陣。用于将手勢信号資料轉換為介于 0 和 1 之間的範圍,并用于可視化手勢運動示例。

基于matlab使用深度學習對超寬帶脈沖雷達信号資料進行分類

如您所見,很難辨識運動模式。

原始信号包含來自雷達範圍記憶體在的身體部位或其他靜态物體的環境反射。這些不需要的反射被稱為“雜波”,可以使用執行指數移動平均線的脈沖消除器來消除

這樣一個是一個值0≤a≤1控制平均量 [2]。與分别設定為 [1 -1] 和 [1 -0.9] 的分子系數和分母系數一起使用,以消除原始信号中的雜波。

可視化雜波消除的信号以檢視差異。

基于matlab使用深度學習對超寬帶脈沖雷達信号資料進行分類

請注意,運動模式現在更加明顯。例如,如果選擇從左側雷達的角度可視化左右滑動,您将看到手與雷達的距離随着手勢持續時間的增加而增加。

五、準備用于訓練的資料

MAT檔案名包含手勢代碼(G1,G2,...,G12),對應于每個雷達信号矩陣的标簽。使用分類數組将這些代碼轉換為手勢詞彙表中的标簽。

收集陣列資料存儲中的标簽。組合信号資料存儲和陣列資料存儲,以獲得包含來自每個雷達的信号資料和分類标簽的單個資料存儲。随機排列生成的資料存儲以随機化其存儲 MAT 檔案的順序。轉換函數允許在資料存儲讀取資料時将幫助程式函數應用于資料。執行上一節中描述的規範化和篩選,以标準化資料并消除混亂。此外,它還将雷達信号矩陣劃分為單獨的手勢運動樣本。

神經網絡訓練是疊代的。在每次疊代中,資料存儲都會從檔案中讀取資料并在更新網絡系數之前轉換資料。由于資料是從單個樣本中讀取的,是以需要将資料讀入記憶體,然後重新洗牌并插入到另一個資料存儲中進行訓練。

由于整個訓練資料集适合記憶體,是以如果并行計算工具箱可用,則可以并行轉換資料,然後将其收集到工作區中。在标志設定為 true 的情況下使用,以利用并行池将所有信号資料和标簽讀取到工作區中。如果資料适合計算機的記憶體,将資料導入工作區可以加快訓練速度,因為資料僅讀取和轉換一次。請注意,如果資料不适合記憶體,則必須将資料存儲傳遞到訓練函數中,并且在每個訓練時期執行轉換。

标簽作為 中的最後一列傳回。用于擷取資料集中标簽值的比例。請注意,手勢在整個資料集中是平衡的,并且得到了很好的表示。

将資料随機劃分為訓練集和驗證集,同時確定将測試資料留待以後使用。在此示例中,訓練、驗證和測試拆分分别為 70%、15% 和 15%。用于将資料拆分為與原始資料集保持相同标簽比例的訓練集、驗證集和測試集。指定在三個集合中随機排列資料的選項。

避免通過再次随機化指數來選擇來自同一試驗的樣本。将記憶體中的訓練和驗證資料存儲在陣列資料存儲中,以便可用于訓練多輸入網絡。

六、準備教育訓練網絡

在訓練前定義網絡架構。由于每個手勢動作都由 3 個獨立的 UWB 脈沖雷達捕獲,是以我們将使用 CNN 架構,該架構接受 3 個信号作為單獨的輸入。訓練這種多輸入、單輸出CNN後獲得的結果比使用輸入為90 x 189 x 3雷達資料矩陣堆棧的替代單輸入單輸出CNN獲得的結果要好得多。

repeatBranch包含将對三個雷達資料信号矩陣分别執行的操作。CNN模型需要結合從每個信号中提取的特征資訊,做出最終的手勢标簽預測。包含将連接配接 3 個輸出和估計标簽的操作。指定大小為 90 x 189 以接受手勢動作示例。指定 a 的輸入數設定為 3,以收集 3 個分支的輸出并将其傳遞到模型的分類部分。指定輸出大小為 12 的 a,每個手勢一個。添加 a 和 a 以輸出估計的标簽。

定義 a 添加 3 次,添加一次。将每個決賽的輸出連接配接到 的輸入。可視化多輸入、單輸出 CNN。

基于matlab使用深度學習對超寬帶脈沖雷達信号資料進行分類

選擇訓練過程的選項,以確定良好的網絡性能。請確定指定為 ,以便在訓練期間将其用于驗證。

七、訓練網絡

使用該指令訓練 CNN。

基于matlab使用深度學習對超寬帶脈沖雷達信号資料進行分類

八、對測試資料進行分類

使用經過訓練的 CNN 和指令對測試資料進行分類。

使用混淆矩陣可視化分類性能。

基于matlab使用深度學習對超寬帶脈沖雷達信号資料進行分類

最大的混淆是逆時針和順時針運動與向内推動和空的運動。

九、探索網絡預測

您可以從每個輸入分支中的最終最大池化層擷取分數,以更好地了解來自每個雷達的資料如何對最終網絡置信度做出貢獻。幫助程式函數 傳回 softmax 規範化分數(類成員資格的機率)和對應于 3 個最高分數的索引。

使用輔助函數可視化每個雷達的資料,并在每個輸入分支中的操作完成後疊加對應于 3 個最高分數的标簽。

基于matlab使用深度學習對超寬帶脈沖雷達信号資料進行分類

十、結論Matlab和Simulink仿真程式彙總(2023年1月彙總)

在此示例中,您學習了如何使用多輸入 CNN 從 3 個獨立的雷達資料矩陣中提取資訊并對手勢動作進行分類。多輸入架構使我們能夠利用記錄同一事件的多個傳感器生成的資料。

十一、參考文獻

[1] Ahmed, S., Wang, D., Park, J. et al. UWB-gestures, a public dataset of dynamic hand gestures acquired using impulse radar sensors. Sci Data 8, 102 (2021). https://doi.org/10.1038/s41597-021-00876-0.

[2] Lazaro A, Girbau D, Villarino R. Techniques for clutter suppression in the presence of body movements during the detection of respiratory activity through UWB radars. Sensors (Basel, Switzerland). 2014 Feb;14(2):2595-2618. DOI: 10.3390/s140202595.

十二、程式

程式擷取:【程式】基于matlab使用深度學習對超寬帶脈沖雷達信号資料進行分類

程式大全:Matlab和Simulink仿真程式彙總(2023年1月彙總)

繼續閱讀