三創(chuàng)建模型與部署
本節(jié)要點(diǎn)
在第二步采集到的數(shù)據(jù)基礎(chǔ)之上,用Reality AI Tools創(chuàng)建模型。
步驟
1.1點(diǎn)擊Asset Tracking,激活此項(xiàng)目。

點(diǎn)擊左側(cè)Data界面,按照如下步驟操作:
點(diǎn)擊Curate。
點(diǎn)擊數(shù)據(jù)文件展開(kāi)按鈕。
勾選數(shù)據(jù)文件。
點(diǎn)擊Action。
點(diǎn)擊Format Selected。

1.2在彈出的窗口中,按下述步驟操作:
點(diǎn)擊#1 Data,并下拉到最下面,選擇Ignore。(注意:這一步非常重要)。
輸入采樣率1600。
點(diǎn)擊Confirm。

1.3點(diǎn)擊Action->Segment List From Selected,進(jìn)行數(shù)據(jù)分段。

1.4按照如下步驟:
Window Length Datapoints選擇512。
Offset Datapoints選擇50%。
List名稱為amr_512_50_percent_overlap。
點(diǎn)擊Submit。

在這里解釋一下,滑動(dòng)窗口的作用:
避免窗口邊緣特征的丟失。
增加樣本的數(shù)量。
滑動(dòng)窗口允許背靠背分段數(shù)據(jù)之間的重疊。
Sample 1和2之間有50%重疊。
Sample 2和3之間有50%重疊。

1.5在e2 studio中的configuration.xml中的stack部分Properties頁(yè)面中Data Shipper/Data Collector/General/Frame Buffer Length,可以設(shè)置MCU采集數(shù)據(jù)時(shí)的滑動(dòng)窗口大小。
本實(shí)驗(yàn)滑動(dòng)窗口的設(shè)置是512。

1.6當(dāng)數(shù)據(jù)分段完成后,點(diǎn)擊左側(cè)AI Explore->Classes。

1.7點(diǎn)擊先前創(chuàng)建的amr_512_50_percent_overlap。再點(diǎn)擊界面下部的Start exploring。

此時(shí),模型正在生成中。模型生成的過(guò)程中,允許退出系統(tǒng)或者進(jìn)行其他操作。這些操作并不會(huì)中斷或者影響模型生成。

1.8大概等待10~25分鐘左右后,模型生成完成,模型生成時(shí)長(zhǎng)與訓(xùn)練數(shù)據(jù)大小有關(guān)。
如何選擇適合自己的模型呢?主要關(guān)注Complexity和KFold Accuracy兩個(gè)指標(biāo)。
點(diǎn)擊Complexity列的三角圖標(biāo),它顯示當(dāng)前模型的相關(guān)參數(shù)。
X Operations表示模型運(yùn)行中的MAC(乘累加)操作數(shù)量。
RAM表示模型運(yùn)行中所需RAM的大小。
Storage(FLASH/ROM)表示模型運(yùn)行中所需FLASH的大小。
注意:上述的RAM和FLASH的數(shù)值,是以云端服務(wù)器硬件平臺(tái)為基準(zhǔn)顯示的,僅供參考。部署到實(shí)際項(xiàng)目中的MCU/MPU平臺(tái)中的RAM和FLASH的數(shù)值,可能會(huì)與這個(gè)不同。
KFold Accuracy表示K折交叉驗(yàn)證的模型精度。交叉驗(yàn)證的基本思想是將原始數(shù)據(jù)集分成多個(gè)部分,一部分當(dāng)作訓(xùn)練集,另一部分作為驗(yàn)證集。先用訓(xùn)練集對(duì)算法模型進(jìn)行訓(xùn)練,再用驗(yàn)證集測(cè)試訓(xùn)練得到的算法模型,反復(fù)利用這些部分進(jìn)行模型的訓(xùn)練和驗(yàn)證。Overall %表示本模型的整體精度,數(shù)值越高越好,Worst %表示本模型的最差精度,數(shù)值越高越好。

點(diǎn)擊圖中“Create Base Tool”,來(lái)生成嵌入式端的模型。

注意:Reality AI Tools會(huì)生成許多模型,點(diǎn)擊右下角的” Show more results”可以看到被折疊隱藏的更多模型。
1.9使用默認(rèn)的名稱,或者輸入模型名稱和描述。點(diǎn)擊“Add”。

1.10現(xiàn)在開(kāi)始創(chuàng)建嵌入式端側(cè)部署模型,按照如下步驟:
點(diǎn)擊Deploy->Embedded。
點(diǎn)擊Trained Tool Description list。
點(diǎn)擊 +New Package。

1.11輸入DeployName,這個(gè)名字就是待會(huì)生成的API的前綴。在Inputs中的Data type中選擇float32(float)。因?yàn)椴杉臄?shù)據(jù)是float32類型的。中間的outputs區(qū)域,顯示了API的輸出類型和含義。右側(cè)的Build Options涵蓋目標(biāo)設(shè)備類型(目前RA6E2沒(méi)有在列表清單中,暫時(shí)選擇RA6E1),F(xiàn)PU類型選擇M33 FPU,hard fp abi,Toolchain選擇GNU GCC 13.2.1,優(yōu)化類型選擇Speed。

點(diǎn)擊Generate New Package,創(chuàng)建模型。

1.12此時(shí),可以看見(jiàn)右側(cè)的Download顯示

表示模型生成中。

大概10~25分鐘左右。
等到右側(cè)的Download顯示

模型生成完成
點(diǎn)擊

下載模型文件。

1.13生成的模型文件名稱為amr.zip,里面一共有9個(gè)文件,
README.txt和model_info.xml是模型相關(guān)的信息,包括占用的ROM和RAM信息等。
librai_edsp_f32_arm.a是庫(kù)文件。
example_classifier.c是模型調(diào)用的例子代碼,實(shí)際使用的時(shí)候,不需要添加到工程中。
其余5個(gè)文件是模型相關(guān)的.c和.h文件。

將上述的librai_edsp_f32_arm.a,amr_model.c,amr_model.h,RealityAI.h,RealityAI_Config.h,RealityAI_Types.h文件復(fù)制到Asset Tracking工程中的src/rai文件夾中。

1.14在hal_entry.c中添加#include "amr_model.h"。

同時(shí)把hal_entry.c中的宏定義
#define DATA_COLLECTION_EN (1)
修改成
#define DATA_COLLECTION_EN (0)
表示代碼進(jìn)入推理階段。
1.15點(diǎn)擊圖標(biāo)

來(lái)編譯工程。
本工程經(jīng)過(guò)編譯后,應(yīng)改沒(méi)有任何errors或者warnings。
1.16點(diǎn)擊按鈕

啟動(dòng)調(diào)試并檢查控制臺(tái)中的內(nèi)容是否成功建立了連接。
1.17打開(kāi)Debug文件中的FPBRA6E2_AMR_training.map文件。

搜索到.bss._SEGGER_RTT字段并復(fù)制紅色框處地址。
注意:下圖中的地址可能和實(shí)際的工程不相符,以自己手中的文件為準(zhǔn)。

1.18打開(kāi)J-Link RTT-Viewer,點(diǎn)擊File->Connect。

在彈出的窗口中,按照以下圖片配置。注意,左下角的地址,輸入的是上一步驟復(fù)制的地址,點(diǎn)擊OK。

看到下面的Log輸出框,表示連接成功。

1.19點(diǎn)擊Terminal 0標(biāo)簽頁(yè)。

1.20點(diǎn)擊圖標(biāo)

兩次
此時(shí),程序正常運(yùn)行起來(lái)。

如果在運(yùn)行的工程中,發(fā)現(xiàn)程序停留在startup.c中Default_Handler中。

參考先前3.14步驟中下載的模型中的README.txt的Estimated Memory Utilization中的Parameters,Stack Usage和Pre-Allocated之和。還要考慮加上工程本身沒(méi)有使用模型推理的代碼的stack消耗。

這是工程的stack設(shè)定過(guò)小,導(dǎo)致堆棧溢出,從而進(jìn)入Default_Handler。需要在configuration.xml->BSP->Properties->RA Common中的Main stack size(bytes)進(jìn)行修改。

1.21觀察J-Link RTT Viewer中的打印信息。通過(guò)扔(10cm高處跌落)、搖晃、靜止FPB-RA6E2??梢园l(fā)現(xiàn)得到如下信息:
紅色表示FPB-RA6E2處于drop狀態(tài)。
黃色表示FPB-RA6E2處于shake狀態(tài)。
綠色表示FPB-RA6E2處于normal狀態(tài)。

可以嘗試采集更多類型動(dòng)作數(shù)據(jù),再次上傳數(shù)據(jù)并訓(xùn)練,以便識(shí)別更多的動(dòng)作。
-
嵌入式
+關(guān)注
關(guān)注
5210文章
20683瀏覽量
337456 -
AI
+關(guān)注
關(guān)注
91文章
41364瀏覽量
302738 -
模型
+關(guān)注
關(guān)注
1文章
3834瀏覽量
52289
發(fā)布評(píng)論請(qǐng)先 登錄
AI大模型小龍蝦-OpenClaw-0基礎(chǔ)從入門到實(shí)戰(zhàn)
HM博學(xué)谷狂野AI大模型第四期
AI大模型微調(diào)企業(yè)項(xiàng)目實(shí)戰(zhàn)課
AI大模型微調(diào)企業(yè)項(xiàng)目實(shí)戰(zhàn)課【共137課時(shí)】 (讠果xingkeit-top)# AI大模型 # 實(shí)戰(zhàn)課
使用瑞薩電子Reality AI Utilities工具加速嵌入式AI開(kāi)發(fā)
大模型 ai coding 比較
使用NORDIC AI的好處
【「AI芯片:科技探索與AGI愿景」閱讀體驗(yàn)】+AI的科學(xué)應(yīng)用
維修總趕不上故障?智能管理系統(tǒng)用 AI 建模,把設(shè)備隱患掐滅在萌芽里
Cadence 借助 NVIDIA DGX SuperPOD 模型擴(kuò)展數(shù)字孿生平臺(tái)庫(kù),加速 AI 數(shù)據(jù)中心部署與運(yùn)營(yíng)
【「AI芯片:科技探索與AGI愿景」閱讀體驗(yàn)】+第二章 實(shí)現(xiàn)深度學(xué)習(xí)AI芯片的創(chuàng)新方法與架構(gòu)
ai_cube訓(xùn)練模型最后部署失敗是什么原因?
對(duì)話張麗萍 AI磁芯損耗建模應(yīng)用還有多遠(yuǎn)?
恩智浦MCU MCXN947 基于MCUXpresso Config tools創(chuàng)建IIC的教程步驟
用Reality AI Tools創(chuàng)建模型
評(píng)論