加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

采用NXP FRDM-MCXN947實(shí)現(xiàn)智能邊緣機(jī)器學(xué)習(xí)

08/09 07:14
1762
閱讀需 20 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

在當(dāng)今技術(shù)飛速發(fā)展的環(huán)境中,邊緣機(jī)器學(xué)習(xí)(邊緣ML)正在成為一股變革力量,重塑我們實(shí)時(shí)處理和分析數(shù)據(jù)的方式。這種創(chuàng)新技術(shù)直接在邊緣設(shè)備上部署ML模型,帶來(lái)了新一波響應(yīng)式智能應(yīng)用。

傳統(tǒng)的ML模型依賴集中式云服務(wù)器進(jìn)行大量數(shù)據(jù)處理,而邊緣ML將計(jì)算負(fù)擔(dān)轉(zhuǎn)移到本地邊緣設(shè)備上,從而實(shí)現(xiàn)即時(shí)決策,而無(wú)需一直依賴遠(yuǎn)程服務(wù)器。這種轉(zhuǎn)變解決了傳統(tǒng)方法在延遲、隱私和帶寬方面固有的挑戰(zhàn)。

邊緣ML的一大關(guān)鍵優(yōu)勢(shì)是能夠提供實(shí)時(shí)分析。通過(guò)直接在邊緣設(shè)備上執(zhí)行推理,應(yīng)用可以對(duì)動(dòng)態(tài)條件做出快速反應(yīng),使其成為時(shí)間關(guān)鍵型場(chǎng)景的理想選擇。無(wú)論是自動(dòng)駕駛汽車做出快速?zèng)Q策、智能監(jiān)控?cái)z像頭執(zhí)行區(qū)域監(jiān)控,還是醫(yī)療保健設(shè)備提供及時(shí)診斷,邊緣ML所減少的延遲都代表著重大進(jìn)步。

本文將指導(dǎo)您使用NXP Semiconductors FRDM-MCXN947開(kāi)發(fā)板開(kāi)展邊緣ML實(shí)際應(yīng)用,并介紹用于生成ML模型的NXP eIQ??Portal。該開(kāi)發(fā)板搭載的NXP MCX N947微控制器采用eIQ Neutron神經(jīng)處理單元(NPU),設(shè)計(jì)用于縮短推理時(shí)間,同時(shí)還能延長(zhǎng)邊緣ML產(chǎn)品的電池續(xù)航時(shí)間。從智慧城市工業(yè)物聯(lián)網(wǎng)IIoT)到醫(yī)療保健和消費(fèi)電子產(chǎn)品,邊緣ML的潛在應(yīng)用多種多樣,影響深遠(yuǎn)。

《Jump into Machine Learning with NXP》(實(shí)操項(xiàng)目解鎖NXP產(chǎn)品在邊緣機(jī)器學(xué)習(xí)中的潛力)一文對(duì)硬件軟件設(shè)置進(jìn)行了更詳細(xì)的介紹。

項(xiàng)目材料與資源

項(xiàng)目物料清單(BOM)

  • NXP FRDM-MCXN947

項(xiàng)目代碼/軟件

  • 面向NXP MCU的MCUXpresso IDE
  • MCUXpresso SDK Builder(需要登錄)
  • eIQ Toolkit

其他資源

  • MCUXpresso IDE終端窗口、Tera Term或其他終端模擬器軟件
  • Python編程語(yǔ)言
  • OpenCV

其他硬件

  • Windows PC
  • USB Type-C轉(zhuǎn)USB Type-A電纜或Type-C電纜(取決于PC提供的USB端口類型)

帳戶

  • NXP帳戶(可免費(fèi)創(chuàng)建)

項(xiàng)目技術(shù)概況

FRDM-MCXN947開(kāi)發(fā)板(圖1)采用MCX N947微控制器,該MCU有兩個(gè)高性能Arm??Cortex?-M33內(nèi)核,每個(gè)內(nèi)核的運(yùn)行速度高達(dá)150MHz。該MCU配備2MB閃存、可選的全ECC RAM、DSP協(xié)處理器和集成式eIQ Neutron NPU。NPU可顯著提高M(jìn)L吞吐量,與單核CPU相比,性能最多可提升30倍,因而可大幅縮短設(shè)備的工作時(shí)間,降低總體功耗。

圖1:采用MCX N947 MCU的NXP FRDM-MCXN947開(kāi)發(fā)板。(圖源:貿(mào)澤電子

多核架構(gòu)通過(guò)在模擬和數(shù)字外設(shè)之間智能分配工作負(fù)載,提高了系統(tǒng)性能和效率。此開(kāi)發(fā)板配備了MCUXpresso Developer Experience支持,經(jīng)過(guò)優(yōu)化且使用方便,可以加快嵌入式系統(tǒng)的開(kāi)發(fā)速度。
MCX N94x系列專為工業(yè)應(yīng)用而設(shè)計(jì),具有更豐富的模擬和電機(jī)控制外設(shè)。

軟件概述

本節(jié)將介紹運(yùn)行本項(xiàng)目示例所需的軟件。有關(guān)安裝說(shuō)明,請(qǐng)參閱《Jump into Machine Learning with NXP》一文。

MCUXpresso IDE

MCUXpresso集成開(kāi)發(fā)環(huán)境(IDE)為開(kāi)發(fā)人員提供基于Eclipse的用戶友好開(kāi)發(fā)環(huán)境,專為搭載Arm Cortex-M內(nèi)核的NXP MCU量身定制,包括通用跨界MCU和支持無(wú)線功能的MCU。此IDE提供各種高級(jí)編輯、編譯和調(diào)試功能,包括MCU特定調(diào)試視圖、代碼跟蹤和剖析、多核調(diào)試以及集成的配置工具(圖2)。

圖2:NXP MCUXpresso IDE。(圖源:貿(mào)澤電子)

SDK Builder

MCUXpresso SDK Builder(圖3)通過(guò)提供開(kāi)源驅(qū)動(dòng)程序、中間件和參考示例應(yīng)用來(lái)加快軟件開(kāi)發(fā)速度。通過(guò)SDK Builder,您可以定制并下載與所選處理器或評(píng)估板相匹配的軟件開(kāi)發(fā)套件(SDK),從而簡(jiǎn)化開(kāi)發(fā)流程。我們將在后面創(chuàng)建并安裝SDK。

圖3:NXP MCUXpresso SDK Builder網(wǎng)站。(圖源:貿(mào)澤電子)

eIQ Portal

eIQ Toolkit(圖4)通過(guò)直觀的圖形用戶界面(即eIQ Portal)和工作流工具,以及eIQ ML軟件開(kāi)發(fā)環(huán)境中的命令行主機(jī)工具選項(xiàng),助力ML的開(kāi)發(fā)。NXP的eIQ Toolkit是與Au-Zone Technologies獨(dú)家合作開(kāi)發(fā)的,它為開(kāi)發(fā)人員提供圖形級(jí)分析功能和運(yùn)行時(shí)洞察力,可優(yōu)化EdgeVerse?處理器上的神經(jīng)網(wǎng)絡(luò)架構(gòu)。它還提供轉(zhuǎn)換模型以便利用eIQ Neutron NPU所需的工具。

圖4:NXP eIQ Portal。(圖源:貿(mào)澤電子)

eIQ工具包為導(dǎo)入數(shù)據(jù)集提供了簡(jiǎn)便方法,并配有全面的用戶指南,幫助您了解各種選項(xiàng)。

項(xiàng)目開(kāi)發(fā)

本節(jié)將介紹如何開(kāi)始構(gòu)建項(xiàng)目。首先,打開(kāi)eIQ Portal。

eIQ模型導(dǎo)入與訓(xùn)練

打開(kāi)eIQ Portal后,單擊Create Project(創(chuàng)建項(xiàng)目)并選擇Import Dataset(導(dǎo)入數(shù)據(jù)集)。這時(shí)會(huì)出現(xiàn)幾個(gè)選項(xiàng)(如用于檢測(cè)任務(wù)的VOC數(shù)據(jù)集、用于分類任務(wù)的結(jié)構(gòu)化文件夾、TensorFlow數(shù)據(jù)集),供您加載TensorFlow網(wǎng)站上提供的各種數(shù)據(jù)集(圖5)。

圖5:eIQ Portal數(shù)據(jù)集導(dǎo)入界面。(圖源:貿(mào)澤電子)

導(dǎo)入數(shù)據(jù)集后,您可以捕獲并添加其他映像,或使用增強(qiáng)工具修改現(xiàn)有映像。確認(rèn)無(wú)誤后,單擊Portal窗口底部的Select Model(選擇模型)框。

Model Selection(模型選擇)部分(圖6)包含三個(gè)選項(xiàng)——Classification(分類)、Segmentation(分割)和Detection(檢測(cè)),每個(gè)選項(xiàng)都附有說(shuō)明,以便用戶根據(jù)訓(xùn)練時(shí)間和數(shù)據(jù)集大小等因素權(quán)衡利弊。在本文中,我們將使用訓(xùn)練速度更快,更適合測(cè)試數(shù)據(jù)集的Classification模型。如果有更高要求的話,可以隨后再使用更復(fù)雜、需要更長(zhǎng)訓(xùn)練時(shí)間和更大數(shù)據(jù)集的模型,如Detection。

圖6:eIQ Portal的Model Selection窗口。(圖源:貿(mào)澤電子)

接下來(lái),選擇模型性能選項(xiàng)(圖7),包括Performance(性能)、Balanced(平衡)和Accuracy(精度),每個(gè)選項(xiàng)的權(quán)重都根據(jù)性能類型和設(shè)計(jì)要求確定。在本例中,我們選擇Balanced。

圖7:eIQ Portal的模型性能選擇界面。(圖源:貿(mào)澤電子)

然后,確定使用何種設(shè)備來(lái)推理模型(圖8)。MCX N微控制器包含eIQ Neutron NPU,非常適合ML應(yīng)用。

圖8:eIQ Portal的設(shè)備選擇界面。(圖源:貿(mào)澤電子)

一切就緒后,就可以開(kāi)始訓(xùn)練模型了。雖然有多個(gè)選項(xiàng)可以對(duì)訓(xùn)練過(guò)程進(jìn)行修改(圖9),但本項(xiàng)目中我們使用默認(rèn)設(shè)置。訓(xùn)練完成后(可能需要幾分鐘),您可以選擇調(diào)整設(shè)置并重新訓(xùn)練,或者繼續(xù)訓(xùn)練,或者進(jìn)入到對(duì)訓(xùn)練進(jìn)行驗(yàn)證的步驟。

圖9:eIQ Portal模型訓(xùn)練界面。(圖源:貿(mào)澤電子)

驗(yàn)證過(guò)程(圖10)提供了多個(gè)可調(diào)參數(shù)。因?yàn)槲覀冞x擇了NPU作為推理目標(biāo),所以必須進(jìn)行量化。評(píng)估本步驟和之前步驟中的不同選項(xiàng),以確定哪些參數(shù)最符合您的具體要求。

圖10:eIQ Portal模型驗(yàn)證界面。(圖源:貿(mào)澤電子)

部署模型

模型訓(xùn)練和驗(yàn)證完成后,我們需要將其導(dǎo)出并轉(zhuǎn)換為與NPU兼容的格式。本節(jié)將介紹轉(zhuǎn)換步驟。

導(dǎo)出模型

完成驗(yàn)證后,eIQ Portal會(huì)提供部署或?qū)С瞿P偷倪x項(xiàng);本項(xiàng)目中,我們需要導(dǎo)出模型。在左側(cè)菜單中,確保打開(kāi)Export Quantized Model(導(dǎo)出量化模型)設(shè)置,然后單擊Export Model(導(dǎo)出模型)(圖11)。選擇要導(dǎo)出到的位置,然后等待導(dǎo)出完成。

圖11:導(dǎo)出訓(xùn)練后的模型。(圖源:貿(mào)澤電子)

轉(zhuǎn)換模型

成功導(dǎo)出模型后,將鼠標(biāo)懸停在頂部菜單中的Workspaces(工作區(qū))上,然后選擇Home(主頁(yè))。在eIQ Portal主頁(yè)上,單擊Model Tool(模型工具)。在下一個(gè)窗口中,單擊Open Model(打開(kāi)模型)。瀏覽到導(dǎo)出模型保存的位置,選擇該文件,然后單擊Open(打開(kāi)),進(jìn)入模型工具顯示界面(圖12)。

圖12:導(dǎo)出模型顯示在模型工具顯示界面中。(圖源:貿(mào)澤電子)

單擊窗口左上角的三條橫線圖標(biāo)打開(kāi)菜單,然后單擊Convert(轉(zhuǎn)換)。在新窗口中,選擇TensorFlow Lite for Neutron (.tflite),打開(kāi)Conversion Options(轉(zhuǎn)換選項(xiàng))窗口(圖13)。將Neutron target(Neutron目標(biāo))設(shè)為mcxn94x,然后單擊Convert(轉(zhuǎn)換)。選擇要將轉(zhuǎn)換后的模型保存到的位置。

圖13:eIQ模型工具的轉(zhuǎn)換選項(xiàng)。(圖源:貿(mào)澤電子)

將模型集成到MCXN94x NPU中

此時(shí),軟件模型已完成訓(xùn)練、驗(yàn)證、導(dǎo)出和轉(zhuǎn)換,我們將使用MCUXpresso IDE將其集成到代碼中,以便在MCX N94x上運(yùn)行。如果尚未安裝IDE,請(qǐng)參閱《Jump into Machine Learning with NXP》一文,了解安裝說(shuō)明。此外,還可以參閱該文章中的“Building and Installing the SDK”(創(chuàng)建并安裝SDK)說(shuō)明,以確保正確安裝FRDM-MCXN947開(kāi)發(fā)套件。

安裝好MCUXpresso IDE和FRDM-MCXN947工具包后,下一步是導(dǎo)入示例項(xiàng)目。在MCUXpresso的Quickstart面板中,單擊Import SDK example(s)...(導(dǎo)入SDK示例)啟動(dòng)SDK Import Wizard(SDK導(dǎo)入向?qū)В?/p>

1.在選擇板和設(shè)備的頁(yè)面中,選擇frdmmcxn947板,然后單擊Next(下一步)。

2.在Import projects(導(dǎo)入項(xiàng)目)窗口(圖14)中,瀏覽到eiq_examples,然后選擇tflm_cifar10。

3.單擊Next。

圖14:MCUXpresso的SDK Import Wizard。(圖源:貿(mào)澤電子)

新建的示例程序?qū)⒊霈F(xiàn)在IDE左上角的Project Explorer(項(xiàng)目資源管理器)中。

1.在Project Explorer中,瀏覽至Source文件夾并展開(kāi)顯示子文件夾,然后右鍵單擊Model

2.單擊New(新建),然后選擇File from Template(從模板創(chuàng)建文件)。

3.在New File(新建文件)窗口(圖15)中,在File name:(文件名)字段輸入新文件的名稱,然后選擇Configure(配置)。

圖15:從模板創(chuàng)建新文件。(圖源:貿(mào)澤電子)

4.在Preferences (Filtered)(首選項(xiàng) (篩選))窗口(圖16)中,選擇Assembly Source File(程序集源文件),然后單擊Apply and Close(應(yīng)用并關(guān)閉)。

圖16:模板首選項(xiàng)。(圖源:貿(mào)澤電子)

創(chuàng)建文件后,在Project Explorer中添加以下代碼行(圖17)。請(qǐng)將custom_model_converted_V1.tflite替換為您使用的文件名。
.section .rodata
.align 16
.global custom_model_data
.global custom_model_data_end

custom_model_data:
.incbin "/source/model/custom_model_converted_V1.tflite"
custom_model_data_end:

然后,瀏覽至轉(zhuǎn)換后的tflite文件所在位置并復(fù)制模型。在MCUXpresso IDE中,將模型文件粘貼到Model文件夾中。

圖17:新建的程序集源文件,包含修改后的代碼。(圖源:貿(mào)澤電子)

接下來(lái),更新model.cpp,使圖18中突出顯示的部分與custom_model_data[]匹配。同時(shí),更新修改model_cifarnet_ops_npu.cpp,確保自定義模型使用的所有運(yùn)算符都更新/添加到s_microOpResolver中(圖19)。

圖18:編輯model.cpp文件。(圖源:貿(mào)澤電子)

圖19:編輯model_cifarnet_ops_npu.cpp文件。(圖源:貿(mào)澤電子)

測(cè)試模型

接下來(lái),我們要準(zhǔn)備測(cè)試數(shù)據(jù),然后對(duì)模型進(jìn)行測(cè)試。下面的Python腳本可以輕松轉(zhuǎn)換圖像,并將其導(dǎo)出到C數(shù)組中,以便在示例代碼中使用。在本示例中,我們將使用Python腳本,把船的圖像替換為鳥(niǎo)的圖像。

img = cv2.imread('bird.jpg')
img = cv2.resize(img, (128,128))
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
with open('bird.h', 'w') as fout:
print('#define STATIC_IMAGE_NAME "bird"', file=fout)
print('static const uint8_t bird [] = {', file=fout)
img.tofile(fout, ',', '0x%02x')
print('};n', file=fout)

將轉(zhuǎn)換后的“.h”文件復(fù)制到項(xiàng)目中的image文件夾,該文件夾與model文件夾位于同一位置。然后,修改image_load.c文件以指向新的圖像數(shù)組(圖20)。

圖20:修改后的image_load.c文件。(圖源:貿(mào)澤電子)

打開(kāi)終端界面(如Putty),按如下所示配置串行設(shè)置:

  • 波特率:115200
  • 數(shù)據(jù)位:8
  • 奇偶校驗(yàn)位:無(wú)
  • 停止位:1
  • 流控制:無(wú)

接下來(lái),在MCUXpresso IDE中選擇Debug(調(diào)試),以構(gòu)建并運(yùn)行更新后的項(xiàng)目代碼。如果構(gòu)建過(guò)程和代碼運(yùn)行成功,終端窗口將出現(xiàn)圖21所示的輸出。

圖21:終端窗口輸出。(圖源:貿(mào)澤電子)

該序列可用于評(píng)估不同的圖像,以驗(yàn)證模型的準(zhǔn)確性。

結(jié)語(yǔ)

邊緣ML的變革性潛能在于其提供實(shí)時(shí)見(jiàn)解的能力。如本項(xiàng)目所示,在邊緣設(shè)備上進(jìn)行直接推理,可使應(yīng)用對(duì)不斷變化的條件迅速做出反應(yīng),這在時(shí)間緊迫的情況下尤為有利。

作者簡(jiǎn)介

Joseph Downing于2011年加入貿(mào)澤電子,擔(dān)任技術(shù)支持專員,后轉(zhuǎn)為技術(shù)內(nèi)容專員。此外,Joseph還曾就職于Intel、Radisys和Planar等電子行業(yè)公司,擁有20多年的工作經(jīng)驗(yàn)。作為一名狂熱的創(chuàng)客,Joseph幫助管理并向應(yīng)用與技術(shù)專欄(Mouser.com網(wǎng)站上)以及貿(mào)易展會(huì)提供技術(shù)項(xiàng)目和材料。

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
BAV99W,115 1 NXP Semiconductors BAV99 series - High-speed switching diodes SC-70 3-Pin
$0.18 查看
06035C104KAT4A 1 Kyocera AVX Components Capacitor, Ceramic, Chip, General Purpose, 0.1uF, 50V, ±10%, X7R, 0603 (1608 mm), Sn/NiBar, -55o ~ +125oC, 13" Reel

ECAD模型

下載ECAD模型
$0.03 查看
SMP3003-DL-1E 1 onsemi P-Channel Power MOSFET -75V, -100A, 8mΩ, D2PAK / TO-263-2L, 800-REEL
$4.85 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜