三創建模型與部署
本節要點
在第二步采集到的數據基礎之上,用Reality AI Tools創建模型。
步驟
1.1點擊Asset Tracking,激活此項目。
點擊左側Data界面,按照如下步驟操作:
點擊Curate。
點擊數據文件展開按鈕。
勾選數據文件。
點擊Action。
點擊Format Selected。
1.2在彈出的窗口中,按下述步驟操作:
點擊#1 Data,并下拉到最下面,選擇Ignore。(注意:這一步非常重要)。
輸入采樣率1600。
點擊Confirm。
1.3點擊Action->Segment List From Selected,進行數據分段。
1.4按照如下步驟:
Window Length Datapoints選擇512。
Offset Datapoints選擇50%。
List名稱為amr_512_50_percent_overlap。
點擊Submit。
在這里解釋一下,滑動窗口的作用:
避免窗口邊緣特征的丟失。
增加樣本的數量。
滑動窗口允許背靠背分段數據之間的重疊。
Sample 1和2之間有50%重疊。
Sample 2和3之間有50%重疊。
1.5在e2 studio中的configuration.xml中的stack部分Properties頁面中Data Shipper/Data Collector/General/Frame Buffer Length,可以設置MCU采集數據時的滑動窗口大小。
本實驗滑動窗口的設置是512。
1.6當數據分段完成后,點擊左側AI Explore->Classes。
1.7點擊先前創建的amr_512_50_percent_overlap。再點擊界面下部的Start exploring。
此時,模型正在生成中。模型生成的過程中,允許退出系統或者進行其他操作。這些操作并不會中斷或者影響模型生成。
1.8大概等待10~25分鐘左右后,模型生成完成,模型生成時長與訓練數據大小有關。
如何選擇適合自己的模型呢?主要關注Complexity和KFold Accuracy兩個指標。
點擊Complexity列的三角圖標,它顯示當前模型的相關參數。
X Operations表示模型運行中的MAC(乘累加)操作數量。
RAM表示模型運行中所需RAM的大小。
Storage(FLASH/ROM)表示模型運行中所需FLASH的大小。
注意:上述的RAM和FLASH的數值,是以云端服務器硬件平臺為基準顯示的,僅供參考。部署到實際項目中的MCU/MPU平臺中的RAM和FLASH的數值,可能會與這個不同。
KFold Accuracy表示K折交叉驗證的模型精度。交叉驗證的基本思想是將原始數據集分成多個部分,一部分當作訓練集,另一部分作為驗證集。先用訓練集對算法模型進行訓練,再用驗證集測試訓練得到的算法模型,反復利用這些部分進行模型的訓練和驗證。Overall %表示本模型的整體精度,數值越高越好,Worst %表示本模型的最差精度,數值越高越好。
點擊圖中“Create Base Tool”,來生成嵌入式端的模型。
注意:Reality AI Tools會生成許多模型,點擊右下角的” Show more results”可以看到被折疊隱藏的更多模型。
1.9使用默認的名稱,或者輸入模型名稱和描述。點擊“Add”。
1.10現在開始創建嵌入式端側部署模型,按照如下步驟:
點擊Deploy->Embedded。
點擊Trained Tool Description list。
點擊 +New Package。
1.11輸入DeployName,這個名字就是待會生成的API的前綴。在Inputs中的Data type中選擇float32(float)。因為采集的數據是float32類型的。中間的outputs區域,顯示了API的輸出類型和含義。右側的Build Options涵蓋目標設備類型(目前RA6E2沒有在列表清單中,暫時選擇RA6E1),FPU類型選擇M33 FPU,hard fp abi,Toolchain選擇GNU GCC 13.2.1,優化類型選擇Speed。
點擊Generate New Package,創建模型。
1.12此時,可以看見右側的Download顯示
表示模型生成中。
大概10~25分鐘左右。
等到右側的Download顯示
模型生成完成
點擊
下載模型文件。
1.13生成的模型文件名稱為amr.zip,里面一共有9個文件,
README.txt和model_info.xml是模型相關的信息,包括占用的ROM和RAM信息等。
librai_edsp_f32_arm.a是庫文件。
example_classifier.c是模型調用的例子代碼,實際使用的時候,不需要添加到工程中。
其余5個文件是模型相關的.c和.h文件。
將上述的librai_edsp_f32_arm.a,amr_model.c,amr_model.h,RealityAI.h,RealityAI_Config.h,RealityAI_Types.h文件復制到Asset Tracking工程中的src/rai文件夾中。
1.14在hal_entry.c中添加#include "amr_model.h"。
同時把hal_entry.c中的宏定義
#define DATA_COLLECTION_EN (1)
修改成
#define DATA_COLLECTION_EN (0)
表示代碼進入推理階段。
1.15點擊圖標
來編譯工程。
本工程經過編譯后,應改沒有任何errors或者warnings。
1.16點擊按鈕
啟動調試并檢查控制臺中的內容是否成功建立了連接。
1.17打開Debug文件中的FPBRA6E2_AMR_training.map文件。
搜索到.bss._SEGGER_RTT字段并復制紅色框處地址。
注意:下圖中的地址可能和實際的工程不相符,以自己手中的文件為準。
1.18打開J-Link RTT-Viewer,點擊File->Connect。
在彈出的窗口中,按照以下圖片配置。注意,左下角的地址,輸入的是上一步驟復制的地址,點擊OK。
看到下面的Log輸出框,表示連接成功。
1.19點擊Terminal 0標簽頁。
1.20點擊圖標
兩次
此時,程序正常運行起來。
如果在運行的工程中,發現程序停留在startup.c中Default_Handler中。
參考先前3.14步驟中下載的模型中的README.txt的Estimated Memory Utilization中的Parameters,Stack Usage和Pre-Allocated之和。還要考慮加上工程本身沒有使用模型推理的代碼的stack消耗。
這是工程的stack設定過小,導致堆棧溢出,從而進入Default_Handler。需要在configuration.xml->BSP->Properties->RA Common中的Main stack size(bytes)進行修改。
1.21觀察J-Link RTT Viewer中的打印信息。通過扔(10cm高處跌落)、搖晃、靜止FPB-RA6E2。可以發現得到如下信息:
紅色表示FPB-RA6E2處于drop狀態。
黃色表示FPB-RA6E2處于shake狀態。
綠色表示FPB-RA6E2處于normal狀態。
可以嘗試采集更多類型動作數據,再次上傳數據并訓練,以便識別更多的動作。
-
嵌入式
+關注
關注
5089文章
19170瀏覽量
306789 -
AI
+關注
關注
87文章
31429瀏覽量
269821 -
模型
+關注
關注
1文章
3294瀏覽量
49035
原文標題:基于RA MCU + Reality AI識別動作姿態全流程開發(2)
文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論