之前介紹恩智浦基于MCXN系列帶有NPU的MCU產(chǎn)品開發(fā)了AFCI電弧檢測方案智能守護,安全無憂:恩智浦MCX N系列NPU電弧檢測技術(shù)解析,加快用戶產(chǎn)品開發(fā)流程。基于NPU的AFCI檢測方法無論在檢測線路距離還是檢測靈敏度都比傳統(tǒng)方案具有一定優(yōu)勢。
本文著重介紹恩智浦AFCI工具鏈的操作方法,加快您的上手速度。首先看硬件連接:
硬件連接
拿到開發(fā)套件,底板為如上圖所示的FRDM-MCXN947開發(fā)板,首先通過上圖橙色標(biāo)注的USB口使用板載的MCU-Link燒寫MCU固件到開發(fā)板,在程序正常運行時,此接口同時具備虛擬串口的輸出功能。可以使用串口工具查看AFCI檢測輸出結(jié)果,配置如下圖所示:
接著,將AFCI擴展板插入Arduino擴展口,如上圖所示,注意加入方向。板子上的跳線帽可保持默認狀態(tài)。將CT傳感器接入AFCI擴展板的P1或者P2接口(紅框標(biāo)注最左邊綠色插座)。硬件連接完畢以后,就可以進行接下來的步驟了。
接下來我們看如何運行軟件工具:
運行
程序分發(fā)時為壓縮包,其中應(yīng)包含“_internal”,“models”與“afci.exe”三個文件(文件夾),將它們解壓在同一位置,點擊運行“afci.exe”即可。”_internal”文件夾包含程序運行時所需要的各種運行庫,請不要對其進行任何修改;“models”文件夾包含了可以使用的模型結(jié)構(gòu);
運行“afci.exe”來打開應(yīng)用,程序在運行過程中占用8050與8051端口,請確保這兩個端口沒有被其他應(yīng)用占用。應(yīng)用打開時需要加載深度學(xué)習(xí)相關(guān)運行庫,取決于環(huán)境配置因素,打開速度可能較慢。
在第一次運行應(yīng)用時,會自動在同一目錄下創(chuàng)建“data”文件夾,該文件夾用來保存程序運行中收集到的數(shù)據(jù)、手動標(biāo)注的收據(jù)與訓(xùn)練后的模型。
訓(xùn)練并部署一個完整的電弧檢測模型共分為5個步驟,分別對應(yīng)應(yīng)用側(cè)欄的5個頁面。接下來會詳細介紹各個功能。
1. 收集數(shù)據(jù) – Record
2. 標(biāo)注數(shù)據(jù) - Dataset
3. 訓(xùn)練模型 - Train
4. 測試模型 - Test
5. 部署至MCU – Deploy
收集數(shù)據(jù)
收集數(shù)據(jù)的相關(guān)功能在“Record”頁面下,該頁面也是應(yīng)用默認打開的功能。第一次打開后頁面顯示如下圖所示,主要分為四個功能區(qū)。
為了開始收集數(shù)據(jù),首先請將開發(fā)板燒錄正確固件,并按照第一章中所示連接方式,將燒錄開發(fā)板連接至PC。正確連接后刷新頁面,可以在錄制選項區(qū)域中的“Port”選項中可以看到正確的串口設(shè)備,在圖示例子中為”Virtual Com Port (COM58)”。并在左側(cè)的Port一欄中選擇正確的USB設(shè)備與錄制時間,如果在選項中沒有發(fā)現(xiàn)設(shè)備,請嘗試刷新頁面。在“Time”一欄中填入合適的時間,單位為毫秒。在例子中,選擇端口“Virtual Com Port (COM58)”,錄制時間填入10000,即10秒鐘。點擊“Start”開始錄制,在錄制完成前請不要重復(fù)操作設(shè)備。
錄制過程中,界面如下圖所示:
錄制完成后,界面會自動刷新,展示錄制到數(shù)據(jù)的時域圖與頻域圖。該界面可分為上下兩個部分,上部分可以對展示的時域或頻域圖設(shè)置。共有6個設(shè)置: - Sample:設(shè)置原始數(shù)據(jù)的采樣間隔
- Offset:原始數(shù)據(jù)的偏移
- Scale:原始數(shù)據(jù)的縮放比例
- Length:頻譜圖分割長度
- Step:頻譜圖分割步進
在時域圖中,原始數(shù)據(jù)首先通過“Sample”進行采樣,然后通過“Offset”與“Scale”計算最終結(jié)果,(x-Offset) * Scale.
在頻域圖中,原始數(shù)據(jù)首先通過“Sample”進行采樣,然后對數(shù)據(jù)以“Length”為長度、以“Step”為步進進行分割,對于每一段數(shù)據(jù)應(yīng)用海寧窗(hann)以減少截斷數(shù)據(jù)造成的頻譜泄露,然后使用連續(xù)傅里葉變換計算頻譜圖。
請注意,目前該工具并不支持自動觸發(fā)相關(guān)功能,所以在實際錄制數(shù)據(jù)時,請調(diào)整錄制時間以配合拉弧發(fā)生設(shè)備或者實際系統(tǒng),以使拉弧或者其他想要采集到的信號發(fā)生在錄制時間內(nèi)。如果對采集到的數(shù)據(jù)不滿意,可跳過保存步驟直接進行下一次錄制。
對采集的數(shù)據(jù)滿意,可以進行數(shù)據(jù)保存步驟,將本次測試數(shù)據(jù)保存到“data”文件夾下。保存功能共有三個選項:“Project”、“Name”、“Add Timestamp”。“Project”為項目名,采集到的數(shù)據(jù)、標(biāo)注與模型均保存在項目下,"Name"為本次錄制數(shù)據(jù)的名稱,勾選“Add Timestamp"會在保存文件的名字加上錄制時間尾綴。如果留空"Name",請勾選"Add Timestamp"以保證保存文件名合理,建議將"Name"項填入合適的名稱,如"Arc""Noise"等,以便后續(xù)區(qū)分。在本例中,保存數(shù)據(jù)如下圖所示。
重復(fù)進行上述步驟,在錄制到足夠多的數(shù)據(jù)后,可進入標(biāo)注階段。
標(biāo)注數(shù)據(jù)
標(biāo)注數(shù)據(jù)的功能在“Dataset”頁面下。打開該頁面會自動加載最近的項目與最近錄制的數(shù)據(jù)。如下圖所示。
可以在左側(cè)設(shè)置欄中選擇錄制好的數(shù)據(jù),或隨應(yīng)用提供的測試數(shù)據(jù),進行標(biāo)注。在這我們選擇示例項目“example_project”。該項目內(nèi)置了24條數(shù)據(jù),并對其中的部分數(shù)據(jù)進行了提前標(biāo)注,標(biāo)注好的數(shù)據(jù)會有“*”前綴,如下圖所示。
在該測試項目中,僅使用了單通道錄制數(shù)據(jù),通道0中不包含任何信息,所以請使用通道1數(shù)據(jù)進行標(biāo)注與訓(xùn)練。打開任意一條標(biāo)注好的數(shù)據(jù),如下圖所示。
該條數(shù)據(jù)總時長5秒, 數(shù)據(jù)的前半部分,系統(tǒng)正常工作,在約1.5s后,系統(tǒng)出現(xiàn)電弧,直至約1.8s,系統(tǒng)停止工作。所以在右側(cè)Label選項中選擇“On”標(biāo)簽,并對應(yīng)頻譜圖進行標(biāo)注,框選從開始到約1.5s結(jié)束;選擇“Arc”標(biāo)簽,框選約1.5s至1.8s區(qū)間。未被標(biāo)注的區(qū)間會自動應(yīng)用“Off”標(biāo)簽。粗略標(biāo)注結(jié)束后,可以使用鼠標(biāo)滾輪對圖表進行放大,同時在右側(cè)選中相應(yīng)的標(biāo)簽,鼠標(biāo)點擊要修改的標(biāo)注的邊界進行拖動,或點擊標(biāo)注區(qū)域?qū)?biāo)注進行整體拖動;如果對標(biāo)注不滿意,可以雙擊該標(biāo)注來刪除。請注意,所有對已有標(biāo)注的修改都應(yīng)該首先在右側(cè)選擇相應(yīng)類別,才可解鎖對應(yīng)類別標(biāo)注的修改功能。
標(biāo)注之間可以互相覆蓋,在生成數(shù)據(jù)集時,會優(yōu)先以“Arc”,“Noise”,“On”,“Off”的優(yōu)先級去覆蓋。
在標(biāo)注結(jié)束后點擊“Update”來把標(biāo)注結(jié)果保存至硬盤。任何標(biāo)注過的結(jié)果都會被用于后續(xù)訓(xùn)練,即使一條數(shù)據(jù)上沒有任何標(biāo)注(為標(biāo)注區(qū)域默認為”O(jiān)FF“)。如果想將某條標(biāo)注過的數(shù)據(jù)刪除,點擊”Delete“以刪除該條數(shù)據(jù)上的全部標(biāo)注(包括默認的”O(jiān)FF“),同時該條數(shù)據(jù)也不會進入后續(xù)的訓(xùn)練流程。會進入訓(xùn)練流程的數(shù)據(jù)在左側(cè)會有*前綴標(biāo)識。
模型訓(xùn)練
打開train標(biāo)簽頁,進入訓(xùn)練頁面。在左側(cè)設(shè)置欄選擇合適的項目與模型,在例子中讓我們選擇“example_project”與“simple_fc”,如下圖所示。
界面右側(cè)有三個標(biāo)簽頁,分別為“dataset”,“model”,“train”,分別表示訓(xùn)練的三個步驟,請依次執(zhí)行。
首先是“dataset”,該標(biāo)簽頁用來根據(jù)前步驟錄制的數(shù)據(jù)與標(biāo)注的結(jié)果生成數(shù)據(jù)集。在該步驟中,程序會將擁有標(biāo)注的錄制數(shù)據(jù)進行分段,并對每個分段進行RFFT計算及一些后處理,并配合標(biāo)注信息為每段數(shù)據(jù)生成分類數(shù)據(jù)。
生成數(shù)據(jù)集共有4個選項,“Length”,“Step”,“To One-Hot”,“Add dimension for Conv Input”。其中“Length”與“Step”控制數(shù)據(jù)分段的長度與步進,勾選“To One-Hot“會生成分類模型,反之則會生成預(yù)測模型,建議勾選。勾選”Adddimension for Conv Input“會為生成的數(shù)據(jù)增加維度,以便卷積模型進行處理,建議勾選。在例子中,我們保持默認,如下圖所示,點擊”Create dataset”創(chuàng)建數(shù)據(jù)集。在創(chuàng)建成功后,黃色的“No datasetbuilt”信息會變?yōu)槲覀儺?dāng)前構(gòu)建數(shù)據(jù)集的信息。
在構(gòu)建數(shù)據(jù)集后,可以切換到“model”標(biāo)簽頁創(chuàng)建模型,請確保在構(gòu)建數(shù)據(jù)集后再創(chuàng)建模型,模型需要數(shù)據(jù)集的輸入輸出信息才可以創(chuàng)建。
"simple_fc"模型有一個選項"Layers",用來調(diào)整模型的層數(shù),在保持默認"32, 32"的情況下,點擊"Build model"來創(chuàng)建模型,創(chuàng)建成功后,模型未創(chuàng)建的警告會消失,同時展示模型的輸入輸出、模型層數(shù)信息,如下圖所示。
讓我們對“Layers”選項進行修改,并重新構(gòu)建模型,模型的結(jié)構(gòu)也相應(yīng)出現(xiàn)變化,如下圖所示。以“simple_fc”模型的該選項為例,增加層數(shù)通常會使模型的大小增加、推理速度減慢、精度增加。
在模型創(chuàng)建后,切換到“train”標(biāo)簽頁來對進行訓(xùn)練。訓(xùn)練共有如下四個選項,“Batch size”、“Epochs”、“Loss”、“LearningRate”。通過調(diào)整四個選項可以對訓(xùn)練效果進行微調(diào),通常來說保持默認即可。在例子中,保持默認選項點擊“Train”進行訓(xùn)練。
進行訓(xùn)練后,下方會出現(xiàn)訓(xùn)練的進度條,與模型精度隨訓(xùn)練過程變化的折線圖,如下圖所示:
在訓(xùn)練完成后,點擊保存來保存當(dāng)前訓(xùn)練完成的模型,如下圖所示:
自定義模型
如果要實現(xiàn)一個自定義模型,需要實現(xiàn)以下接口:
1. get_model_options() -> dict
2. get_training_options() ->dict
3. build_model(input_shape,is_classification, num_classes, **kwargs)
上述三個接口中 get_model_options 得到的選項會用來調(diào)用 build_model,get_training_options 得到的選項會用來調(diào)用model.compile()。具體實現(xiàn)可以參考simple_fc.py.
import streamlit as st import keras def get_model_options(): return dict() def get_training_options(): return dict() def build_model(input_shape, is_classification, num_classes, **kwargs): inputs = keras.Input(input_shape) x = inputs x = keras.layers.Flatten()(x) x = keras.layers.Dense(num_classes)(x) x = keras.layers.Softmax()(x) outputs = x return keras.models.Model(inputs=inputs, outputs=outputs)
測試模型
選擇test頁面,即可進行測試及量化。頁面內(nèi)容如下。右側(cè)共有四個標(biāo)簽頁,其功能分別是測試精度、轉(zhuǎn)換TfLite、轉(zhuǎn)換TfLite并量化、選擇錄制數(shù)據(jù)進行測試。
其中前三個標(biāo)簽頁的主要功能是轉(zhuǎn)換模型并測試精度。其中重要的部分是轉(zhuǎn)換TfLite與量化TfLite,后續(xù)的步驟中需要將其轉(zhuǎn)換后的模型。
數(shù)字展示出來的精度并不直觀,為了更加直接的展示模型的能力與準確度,請切換到“test record”標(biāo)簽頁來對前面步驟中錄制的數(shù)據(jù)進行測試。頁面內(nèi)容如下圖所示:
其中模型是我們剛剛訓(xùn)練并保存的模型,選擇一條包含電弧的錄制數(shù)據(jù),點擊“Evaluate”進行評估:
圖中上半部分為該條數(shù)據(jù)的時域波形,下半部分為模型的推理概率圖。可以看到時域波形中發(fā)生電弧的部分相對應(yīng)的概率也幾乎“Arc”標(biāo)識,可以將鼠標(biāo)懸浮在概率圖上查看某一時刻推理的具體概率值。
接下來可以勾選“Use Quantized Model”來使用量化模型進行測試,通常來說,對模型進行量化會提高推理速度、降低推理精度。使用量化模型的評估結(jié)果如下圖所示。可以看到在波形的后半部分概率有較大變換,但對電弧部分數(shù)據(jù)并沒有太大影響。
部署至MCU
選擇“Deploy”來部署訓(xùn)練過的模型。同上一個步驟相同,請選擇合適的項目和模型進行部署:
部署時共有四個選項,第一個選項應(yīng)選擇合適的端口,即MCU的USB接口。Address選項為模型部署的位置,默認為0x100000,該選項應(yīng)配合MCU固件進行修改,否則會影響MCU程序的正常運行。”ISP VID:PID”選項則是為了在電腦連接了多個開發(fā)板時指定其中一塊進行更新,通常來說不用修改。勾選“Use NPU”可以將模型轉(zhuǎn)換為NPU專用的格式,使用NPU可以顯著加速推理過程,請注意只有量化后的模型可以使用NPU進行加速。
如果在上一步驟中轉(zhuǎn)換過TfLite或者量化后的TfLite,則可以點擊下方相應(yīng)的選項,將模型燒錄至合適的位置。在此處以TfLite為例,在燒錄中會顯示當(dāng)前進度,在燒錄結(jié)束后MCU會自動reset。
在成功燒錄之后,可以打開串口工具觀察當(dāng)前的檢測結(jié)果,如果成功檢測到電弧,MCU端程序會通過串口打印字符串,并藍燈閃爍提醒。搭建成功!
END
恩智浦致力于打造安全的連接和基礎(chǔ)設(shè)施解決方案,為智慧生活保駕護航。
-
mcu
+關(guān)注
關(guān)注
146文章
17572瀏覽量
356033 -
NXP
+關(guān)注
關(guān)注
61文章
1316瀏覽量
186364 -
工程師
+關(guān)注
關(guān)注
59文章
1583瀏覽量
68889 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5273瀏覽量
99860 -
AFCI
+關(guān)注
關(guān)注
0文章
7瀏覽量
7718
原文標(biāo)題:從“小白”到“大神”的進階之路-NXP AFCI工具鏈操作指南
文章出處:【微信號:NXP_SMART_HARDWARE,微信公眾號:恩智浦MCU加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
搞定EMC,工程師進階的必經(jīng)之路
《電子發(fā)燒友電子設(shè)計周報》聚焦硬科技領(lǐng)域核心價值 第3期:2025.03.10--2025.03.14
FPGA工程師進階之路【獨家原創(chuàng)】
野火STM32庫開發(fā)實戰(zhàn)指南 火哥的書 開賣了
長城汽車招聘汽車電控研發(fā)工程師
菜鳥到大神——硬件工程師進階之路
【社區(qū)之星】從菜鳥到資深LabVIEW工程師--小鷹的fighting之路
電子老頑童:分享電子工程師的技術(shù)及職業(yè)進階指南
嵌入式開發(fā)工程師進階之路相關(guān)資料推薦
從小白到測試達人,【測試精英養(yǎng)成計劃】為工程師打造進階之路
我的硬件工程師成長之路:從小白到大佬
【EMC資料】搞定EMC,工程師進階必經(jīng)之路

【EMC資料】搞定EMC,工程師進階必經(jīng)之路

評論