在本文中,我們將重點(diǎn)介紹可用于CN0549不同組件的軟件生態(tài)系統(tǒng)、數(shù)據(jù)分析工具和軟件集成,以及工程師和數(shù)據(jù)科學(xué)家如何利用它們進(jìn)行應(yīng)用程序開發(fā)。這是關(guān)于使用 CN0549 開發(fā)平臺(tái)的基于狀態(tài)的監(jiān)控 (CbM) 和預(yù)測(cè)性維護(hù) (PdM) 應(yīng)用程序的兩部分系列文章中的第二篇。新平臺(tái)旨在加速定制 CbM 解決方案從原型到生產(chǎn)的開發(fā)流程。第 1 部分側(cè)重于 MEMS 振動(dòng)技術(shù)和捕獲用于 CbM 應(yīng)用的高質(zhì)量振動(dòng)數(shù)據(jù)。
生產(chǎn)之旅以及如何更快地做到這一點(diǎn)!
在構(gòu)建狀態(tài)監(jiān)測(cè)解決方案時(shí),它們必須包含傳感器、本地處理、連接以及某種形式的軟件或固件,以使其全部發(fā)揮作用。CN0549 通過為硬件和軟件方面提供可定制的選項(xiàng)來解決所有這些挑戰(zhàn),因此工程師和軟件開發(fā)人員可以在使用通用工具和基礎(chǔ)設(shè)施的同時(shí)在其應(yīng)用程序中進(jìn)行設(shè)計(jì)權(quán)衡。例如,如果您想選擇一個(gè)特定的微控制器或 FPGA 進(jìn)行處理,更喜歡使用 Python 編碼,或者有一個(gè)您想要重用的最喜歡的傳感器。這使得 CN0549 成為那些希望構(gòu)建優(yōu)化的 CbM 解決方案的強(qiáng)大平臺(tái),可以根據(jù)他們的需求定制處理、功率、性能、軟件和數(shù)據(jù)分析。
嵌入式系統(tǒng)開發(fā)流程
讓我們考慮一個(gè)嵌入式系統(tǒng)從概念到生產(chǎn)的通用開發(fā)流程。圖 1 提供了抽象流的頂層概覽。
圖 1 所示設(shè)計(jì)過程的第一步是數(shù)據(jù)研究階段。在此階段,用戶將他們的需求映射到其應(yīng)用程序所需的不同硬件和軟件需求。從硬件角度來看,這些參數(shù)可能是沖擊容限、模擬信號(hào)帶寬或測(cè)量范圍等參數(shù)。在考慮軟件要求時(shí),樣本數(shù)量、采樣率、頻譜、過采樣和數(shù)字濾波是 CbM 應(yīng)用的重要參數(shù)。該平臺(tái)非常有用且靈活,允許研究人員使用不同的傳感器組合并根據(jù)自己的應(yīng)用需求調(diào)整數(shù)據(jù)采集參數(shù)。
數(shù)據(jù)研究階段之后是算法開發(fā)階段,在此階段證明了系統(tǒng)的應(yīng)用或使用。這通常需要在最終移植到嵌入式系統(tǒng)的高級(jí)工具中開發(fā)模型或設(shè)計(jì)算法。然而,在優(yōu)化設(shè)計(jì)之前,必須使用真實(shí)數(shù)據(jù)和硬件在環(huán)進(jìn)行驗(yàn)證,而這正是 CN0549 真正擅長(zhǎng)的地方,因?yàn)樗粌H提供與流行的高級(jí)分析工具的直接集成,而且還允許硬件在循環(huán)驗(yàn)證。
一旦設(shè)計(jì)得到驗(yàn)證,優(yōu)化和嵌入必要的軟件組件的工作就開始了。在嵌入式設(shè)計(jì)細(xì)化階段,這可能需要重新實(shí)現(xiàn)某些算法或軟件層才能在 FPGA 或資源受限的微控制器中工作。在將設(shè)計(jì)移植到原型或接近生產(chǎn)硬件以進(jìn)行最終驗(yàn)證時(shí),必須非常小心地持續(xù)驗(yàn)證設(shè)計(jì)。
圖 1. 嵌入式系統(tǒng)開發(fā)流程。
最后,我們到達(dá)了生產(chǎn)階段,這可能與設(shè)計(jì)開始使用的原始開發(fā)環(huán)境幾乎沒有相似之處,但仍然需要滿足相同的要求。由于最終系統(tǒng)可能已經(jīng)遠(yuǎn)離原始研究系統(tǒng),因此運(yùn)行相同的代碼或測(cè)試可能是不可能的或極其困難的。這可能會(huì)導(dǎo)致生產(chǎn)測(cè)試問題和單元故障,并且可能需要額外的時(shí)間和金錢投資來進(jìn)行補(bǔ)救。
通過最大限度地重復(fù)使用來降低風(fēng)險(xiǎn)
在設(shè)計(jì)過程中降低風(fēng)險(xiǎn)的最簡(jiǎn)單方法之一是在每個(gè)階段重復(fù)使用盡可能多的硬件和軟件組件,CN0549 為開發(fā)人員提供了許多開箱即用的資源,以便在開發(fā)流程的所有階段直接利用。CN0549 解決方案提供原理圖和電路板布局文件、用于優(yōu)化和全功能環(huán)境的開放軟件堆棧,以及用于 MATLAB? 和 Python 等高級(jí)工具的集成選項(xiàng)。最終用戶可以利用 ADI 的經(jīng)過驗(yàn)證的組件,并在從研究到生產(chǎn)的過程中選擇他們想要維護(hù)或更改的組件。這也使最終用戶能夠?qū)W⒂谒惴ㄩ_發(fā)和系統(tǒng)集成,而不是使用 ADI 零件的原理圖輸入或基礎(chǔ)軟件開發(fā)。利用硬件模塊和重用軟件層,
軟件開發(fā)流程和過程
CN0549 在開發(fā)過程中為工程師提供了多種選擇,使他們能夠使用常用語言(包括 C 或 C++)工作,同時(shí)使用他們熟悉的數(shù)據(jù)分析工具,例如 MATLAB 或 Python。這主要是通過利用和構(gòu)建開放標(biāo)準(zhǔn)以及支持來自不同制造商的多個(gè)嵌入式平臺(tái)的現(xiàn)有解決方案來完成的。
CN0549 系統(tǒng)堆棧
圖 2 所示的系統(tǒng)堆棧提供了構(gòu)成 CN0549 系統(tǒng)的不同組件的基本概覽。左上角的深藍(lán)色方框是傳感器和數(shù)據(jù)采集 (DAQ) 板,而淺藍(lán)色和紫色方框勾勒出用于數(shù)據(jù)處理的 FPGA 分區(qū)。該平臺(tái)直接支持英特爾 DE10-Nano 和 Xilinx? CoraZ7-07s,涵蓋兩大主要 FPGA 供應(yīng)商。綠色框表示與主機(jī) PC 的連接。這提供了從硬件到用于算法開發(fā)的高級(jí)數(shù)據(jù)分析工具的直接數(shù)據(jù)訪問。
所有 HDL 代碼都是開源的,它允許開發(fā)人員進(jìn)行修改以將數(shù)字信號(hào)處理 (DSP) 插入可編程邏輯 (PL) 內(nèi)的數(shù)據(jù)流中,如圖 2 所示。這可以是從濾波器到狀態(tài)機(jī)的任何東西,甚至是機(jī)器學(xué)習(xí),根據(jù)你的系統(tǒng)劃分,這一步也可以在用戶空間或者應(yīng)用層完成。由于代碼是公開可用的,它可以移植到來自不同制造商的其他 FPGA 或移植到不同的處理器系列,具體取決于您的最終應(yīng)用需求。
圖 2. CN0549 平臺(tái)的系統(tǒng)堆棧。
Arm? 處理器內(nèi)部有兩個(gè)軟件選項(xiàng)。它們的使用將取決于用例,并且大多數(shù)開發(fā)人員都可能會(huì)使用它們:
Linux?:為內(nèi)核中的輸入輸出工業(yè) (IIO) 框架內(nèi)構(gòu)建的 DAQ shield 提供內(nèi)核驅(qū)動(dòng)程序。這與一個(gè)名為 Kuiper Linux 的完整嵌入式 Linux 發(fā)行版相結(jié)合,該發(fā)行版在 Arm 核心用戶空間中運(yùn)行并基于 Raspberry Pi OS。
無操作系統(tǒng):裸機(jī)項(xiàng)目提供了與 Linux 內(nèi)核中使用的相同驅(qū)動(dòng)程序,可與 Xilinx 或 Intel 的 SDK 一起使用。這也可以作為替代實(shí)現(xiàn)方式實(shí)現(xiàn)到實(shí)時(shí)操作系統(tǒng) (RTOS) 環(huán)境中。
建議開發(fā)人員從 Linux 開始學(xué)習(xí)并開始使用他們的系統(tǒng)進(jìn)行開發(fā),因?yàn)樗峁┝俗疃嗟墓ぞ?。Linux 還提供了大量的軟件包和驅(qū)動(dòng)程序,為理想的開發(fā)環(huán)境創(chuàng)造了條件。一旦系統(tǒng)設(shè)計(jì)穩(wěn)定并準(zhǔn)備好進(jìn)行優(yōu)化,通常會(huì)切換到無操作系統(tǒng)并僅發(fā)布必要的軟件。但是,這高度依賴于應(yīng)用程序,由于它們提供的靈活性,許多人將發(fā)布完整的 Linux 系統(tǒng)。
與可編程邏輯的 HDL 一樣,整個(gè)內(nèi)核源代碼、Kuiper Linux 映像和 No-OS 項(xiàng)目都是完全開源的,最終用戶可以根據(jù)需要修改任何組件。如果需要,這些代碼庫也可以移植到不同的處理器系統(tǒng)或不同的運(yùn)行時(shí)環(huán)境。
圖 2 的最后一個(gè)組件是與主機(jī) PC 的連接,如綠色框所示。運(yùn)行系統(tǒng)時(shí),可以配置設(shè)備,并將數(shù)據(jù)流式傳輸?shù)街鳈C(jī)系統(tǒng)進(jìn)行分析,開發(fā)人員將在主機(jī)上利用 MATLAB 或 TensorFlow 等標(biāo)準(zhǔn)工具創(chuàng)建算法。然后最終將這些算法轉(zhuǎn)移到嵌入式目標(biāo),允許它們使用本地處理能力進(jìn)行更快的算法開發(fā)迭代。
訪問 CbM 數(shù)據(jù)——入門
使用 Arm 處理器和 PL 通常發(fā)生在設(shè)計(jì)流程的更進(jìn)一步階段,此時(shí)系統(tǒng)正在針對(duì)部署進(jìn)行優(yōu)化。因此,開發(fā)人員最初的一個(gè)常見入口點(diǎn)將涉及從工作站遠(yuǎn)程連接到嵌入式系統(tǒng)。在嵌入式系統(tǒng)上運(yùn)行 Linux 時(shí),由于基礎(chǔ)架構(gòu)的設(shè)計(jì)方式,在工作站上遠(yuǎn)程或本地運(yùn)行代碼是一個(gè)相對(duì)透明的過程。這主要是由于一個(gè)名為libIIO的開放庫。 libIIO 是一個(gè)接口庫,它允許對(duì)內(nèi)核中 Linux IIO 框架內(nèi)構(gòu)建的不同設(shè)備驅(qū)動(dòng)程序進(jìn)行簡(jiǎn)化且一致的訪問模型。該庫是 CbM 平臺(tái)使用如此靈活并提供數(shù)據(jù)流和設(shè)備控制功能的核心。
libIIO 本身分為兩個(gè)主要組件:
libIIO 庫,這是一個(gè)用于訪問不同 IIO 驅(qū)動(dòng)程序?qū)傩曰蚝瘮?shù)的 C 庫。這包括流入和流出 ADC、DAC 和傳感器等設(shè)備的數(shù)據(jù)流。
稱為 iiod 的 IIO 守護(hù)進(jìn)程負(fù)責(zé)管理 libIIO 庫或使用該庫的客戶端與實(shí)際驅(qū)動(dòng)程序的內(nèi)核接口之間的訪問。
libIIO 和 iiod 本身是由不同的組件編寫的,這些組件允許以不同的方法訪問所謂的后端中的驅(qū)動(dòng)程序。后端允許本地和遠(yuǎn)程用戶對(duì) libIIO 進(jìn)行控制和數(shù)據(jù)流,并且由于它們是組件化的,因此可以將新的后端添加到系統(tǒng)中。目前,libIIO 支持四個(gè)后端:
本地:允許訪問連接到同一臺(tái)機(jī)器的硬件的本地可訪問驅(qū)動(dòng)程序。
USB:利用 libusb,此后端允許通過 USB 鏈接遠(yuǎn)程控制驅(qū)動(dòng)程序。
串行:為通過串行連接連接的板提供更通用的接口。UART 是最常見的用途。
網(wǎng)絡(luò):最常用的遠(yuǎn)程后端,它是基于 IP 的,用于跨網(wǎng)絡(luò)訪問驅(qū)動(dòng)程序。
圖 3. 使用網(wǎng)絡(luò)后端的 libIIO 系統(tǒng)概要。
圖 3 提供了如何使用 libIIO 的組件以及它們?nèi)绾芜m應(yīng)整個(gè)系統(tǒng)的系統(tǒng)級(jí)概覽。圖的左側(cè)是嵌入式系統(tǒng),它安裝了 libIIO 庫并運(yùn)行 iiod 守護(hù)進(jìn)程。從嵌入式系統(tǒng),用戶可以訪問本地后端,甚至網(wǎng)絡(luò)后端。在他們的代碼中,他們可以通過單行更改在兩者之間切換以解決任一后端。不需要對(duì)目標(biāo)代碼進(jìn)行其他更改。
圖 4. libIIO 遠(yuǎn)程與本地示例。
圖 3 的左側(cè)代表一個(gè)遠(yuǎn)程主機(jī),它可以運(yùn)行任何操作系統(tǒng)。有適用于 Windows、macOS、Linux 和 BSD 的官方軟件包。圖中使用了網(wǎng)絡(luò)或基于 IP 的后端,但這也可以是串行、USB 或 PCIe 連接。從用戶的角度來看,libIIO 可以從 C 庫本身或許多與其他語言的可用綁定中得到利用,包括:Python、C#、Rust、MATLAB 和 Node.js。為需要與其應(yīng)用程序中的不同驅(qū)動(dòng)程序交互的用戶提供大量選擇。
應(yīng)用程序和工具
在開始使用新設(shè)備時(shí),一般不建議直接使用 libIIO。因此,存在許多構(gòu)建在 libIIO 之上的更高級(jí)別的應(yīng)用程序,它們?yōu)槿魏?IIO 設(shè)備從命令行和 GUI 格式提供基本的可配置性。這些分別是 IIO 工具和 IIO 示波器。
IIO 工具是一組與 libIIO 一起提供的命令行工具,可用于通過腳本進(jìn)行低級(jí)調(diào)試和自動(dòng)任務(wù)。例如,對(duì)于實(shí)驗(yàn)室測(cè)試,將平臺(tái)設(shè)置為不同的采樣率模式并收集一些數(shù)據(jù)可能很有用。這可以通過幾行 bash 或通過利用 IIO 工具的批處理腳本輕松完成。圖 5 顯示了一個(gè)簡(jiǎn)單的示例,可以在本地或遠(yuǎn)程運(yùn)行以修改采樣率和更改 ADC 的輸入共模。該示例使用了一個(gè)名為 iio_attr 的 IIO 工具,它允許用戶輕松更新設(shè)備配置。
圖 5. IIO 工具的 iio_attr 部分的示例用法。
但是,用戶最常見的入口點(diǎn)是 GUI 應(yīng)用程序 IIO 示波器,通常稱為 OSC。OSC 與 IIO 工具一樣,被設(shè)計(jì)成通用的,可以控制任何 IIO 驅(qū)動(dòng)程序,并且由于它基于 libIIO,它可以遠(yuǎn)程運(yùn)行或在板上運(yùn)行。但是,它還包含一個(gè)插件系統(tǒng),其中可以為特定驅(qū)動(dòng)程序或驅(qū)動(dòng)程序組合添加專門的選項(xiàng)卡。圖 6 顯示了為基于CN0540的板自動(dòng)加載的插件選項(xiàng)卡,包括控制和監(jiān)控選項(xiàng)卡。這些選項(xiàng)卡提供了一個(gè)簡(jiǎn)單的界面來訪問 CN0540 的 ADC、DAC 和控制引腳的低級(jí)功能,以及數(shù)據(jù)采集板和測(cè)試點(diǎn)監(jiān)控的基本圖。Analog Devices上提供了更多 OSC 文檔 如果您想了解其他可用的默認(rèn)選項(xiàng)卡和插件,請(qǐng)?jiān)L問Wiki 。
OSC 的最后一個(gè)重要方面是捕獲窗口。捕獲窗口為從 ADC 或任何基于 libIIO 的緩沖區(qū)收集的數(shù)據(jù)提供繪圖功能。圖 7 顯示了在頻域模式下使用的捕獲窗口,其中繪制了數(shù)據(jù)的頻譜信息。其他圖,包括時(shí)域圖、相關(guān)圖和星座圖,都是可用的。這對(duì)于抽查設(shè)備、調(diào)試或在評(píng)估過程中很有用。這些圖包括常見的實(shí)用程序,如標(biāo)記、峰值檢測(cè)、諧波檢測(cè),甚至相位估計(jì)。由于 OSC 也是開源的,因此任何人都可以對(duì)其進(jìn)行擴(kuò)展以添加更多插件或繪圖,甚至修改現(xiàn)有功能。
圖 7. 頻域模式下的 IIO 示波器捕獲窗口。
算法開發(fā)環(huán)境集成
到目前為止,我們已經(jīng)介紹了大多數(shù)工程師在首次使用 CN0549 時(shí)開始使用的核心低級(jí)工具。首先了解這些很重要,這樣開發(fā)人員才能了解系統(tǒng)的靈活性以及他們可以使用的不同選擇或接口。然而,在基線系統(tǒng)啟動(dòng)并運(yùn)行后,開發(fā)人員將希望使用 MATLAB 或 Python 等工具快速將數(shù)據(jù)轉(zhuǎn)移到算法開發(fā)中。這些程序可以從硬件導(dǎo)入數(shù)據(jù)。必要時(shí)可以設(shè)計(jì)額外的控制邏輯。
在機(jī)器學(xué)習(xí)開發(fā)周期的上下文中,通常有一個(gè)通用流程,開發(fā)人員將遵循獨(dú)立于他們所需的軟件環(huán)境來處理數(shù)據(jù)。圖 8 中概述了此過程的一個(gè)示例,其中收集數(shù)據(jù),分為測(cè)試和訓(xùn)練,開發(fā)模型或算法,最后部署模型以進(jìn)行現(xiàn)場(chǎng)推理。對(duì)于實(shí)際服務(wù),會(huì)不斷執(zhí)行整個(gè)過程,以將新知識(shí)引入生產(chǎn)模型。TensorFlow、PyTorch 或 MATLAB 機(jī)器學(xué)習(xí)工具箱等工具都考慮到了這個(gè)過程。這個(gè)過程是有意義的,但通??梢院雎曰蛲耆雎允占?、組織和管理數(shù)據(jù)的復(fù)雜任務(wù)。為了簡(jiǎn)化這項(xiàng)任務(wù),
Python 集成——連接到 Python 分析工具
首先,從 Python 開始,CN0549 的設(shè)備特定類可通過模塊PyADI-IIO獲得。圖 6 提供了一個(gè)配置設(shè)備采樣率和通過以太網(wǎng)提取緩沖區(qū)的簡(jiǎn)單示例。沒有復(fù)雜的寄存器序列、晦澀的內(nèi)存控制調(diào)用或需要記憶的隨機(jī)位。這是由驅(qū)動(dòng)程序、libIIO 和 PyADI-IIO 為您管理的,這些驅(qū)動(dòng)程序在電路板上運(yùn)行、在工作站上遠(yuǎn)程運(yùn)行,甚至在云中。
可通過 pip 和 conda 安裝的 PyADI-IIO 將控制旋鈕公開為易于使用和記錄的屬性。它還以通??上念愋停ㄈ?NumPy 數(shù)組或本機(jī)類型)提供數(shù)據(jù),并在可用時(shí)處理數(shù)據(jù)流的單位轉(zhuǎn)換。這使得 PyADI-IIO 可以輕松添加到 Jupyter Notebook 等環(huán)境中,并且可以輕松地將數(shù)據(jù)輸入機(jī)器學(xué)習(xí)管道,而無需求助于不同的工具或復(fù)雜的數(shù)據(jù)轉(zhuǎn)換——讓開發(fā)人員可以專注于他們的算法,而不是一些困難的 API 或數(shù)據(jù)對(duì)話。
MATLAB 集成 - 連接到 MATLAB
在 MATLAB 方面,通過 Analog Devices 傳感器工具箱提供對(duì) CN0549 及其組件的支持。該工具箱與 PyADI-IIO 一樣,具有針對(duì)不同部件的設(shè)備特定類,并將它們作為 MATLAB 系統(tǒng)對(duì)象 (MSO) 實(shí)現(xiàn)。MSO 是 MathWorks 作者可以與硬件和不同軟件組件接口的標(biāo)準(zhǔn)化方式,并提供高級(jí)功能來協(xié)助代碼生成、Simulink 支持和一般狀態(tài)管理。許多 MATLAB 用戶可能會(huì)在不知情的情況下利用作為 MSO 實(shí)現(xiàn)的 MATLAB 功能,例如示波器或信號(hào)發(fā)生器。在圖 10 中,我們使用 CN0532 接口和 DSP 頻譜分析儀示波器,兩者均作為 MSO 實(shí)現(xiàn)。同樣,像 PyADI-IIO 一樣,有一個(gè)對(duì)傳統(tǒng) MATLAB 用戶友好的界面。
除了硬件連接之外,傳感器工具箱還集成了用于 HDL 和 C/C++ 的代碼生成工具。這些是用于開發(fā)、仿真和部署 IP 的絕佳工具,即使對(duì)于那些不熟悉 HDL 設(shè)計(jì)或工具但了解 MATLAB 和 Simulink 的人來說也是如此。
圖 10. 帶有示波器的 Sensor Toolbox 流式傳輸示例。
使用 TensorFlow 的分類示例
CN0549 套件提供了幾個(gè)示例,從基本數(shù)據(jù)流到機(jī)器學(xué)習(xí)分類示例。時(shí)間序列數(shù)據(jù)的機(jī)器學(xué)習(xí),例如來自CN0532的振動(dòng)數(shù)據(jù),可以從幾個(gè)不同的角度進(jìn)行處理。這可以包括支持向量機(jī) (SVM)、長(zhǎng)短期記憶 (LSTM) 模型,如果數(shù)據(jù)被直接解釋為時(shí)間序列,甚至可以包括自動(dòng)編碼器。但是,在許多情況下,將時(shí)間序列問題轉(zhuǎn)換為圖像處理問題并利用在該應(yīng)用領(lǐng)域開發(fā)的豐富知識(shí)和工具會(huì)更方便。
讓我們看看 Python 中的這種方法。在 PyADI-IIO 提供的一個(gè)示例中,通過將 CN0532 安裝到擺動(dòng)風(fēng)扇上進(jìn)行了多次測(cè)量。這是在風(fēng)扇的不同設(shè)置(睡眠、常規(guī)、過敏原)下完成的,在每種模式下,捕獲了 409,600 個(gè)樣本。在檢查圖 11 中的數(shù)據(jù)時(shí),很容易識(shí)別過敏原病例的時(shí)域,但其他兩種情況更難區(qū)分。這些可能可以通過檢查來識(shí)別,但是讓算法識(shí)別這些情況可能在時(shí)域中容易出錯(cuò)。
為了幫助更好地區(qū)分用例,將數(shù)據(jù)轉(zhuǎn)換為頻域,并使用頻譜圖繪制不同頻率隨時(shí)間的濃度。與圖 11 相比,圖 12 中顯示的頻譜圖在數(shù)據(jù)上的差異更加明顯,并且在時(shí)間維度上保持一致。這些頻譜圖是有效的圖像,現(xiàn)在可以使用傳統(tǒng)的圖像分類技術(shù)進(jìn)行處理。
將數(shù)據(jù)集拆分為訓(xùn)練集和測(cè)試集,將頻譜圖輸入到具有三個(gè)密集層的僅中性網(wǎng)絡(luò) (NN) 模型和較小的卷積神經(jīng)網(wǎng)絡(luò) (CNN) 模型中。兩者都是在 TensorFlow 中實(shí)現(xiàn)的,并且能夠在不到 100 個(gè) epoch 內(nèi)輕松收斂到接近 100% 的測(cè)試驗(yàn)證。CNN 在大約一半的時(shí)間內(nèi)以大約 1% 的可調(diào)參數(shù)收斂,使其成為迄今為止更高效的設(shè)計(jì)。圖 13 中提供了精度與 epoch 的訓(xùn)練收斂圖,以概述 CNN 的快速收斂。
圖 11. 時(shí)間序列中的風(fēng)扇振動(dòng)數(shù)據(jù)。
圖 12. 捕獲的振動(dòng)數(shù)據(jù)的頻譜圖。
圖 13. CNN 訓(xùn)練精度隨時(shí)間變化的振動(dòng)頻譜圖。
GitHub 上 PyADI-IIO 源代碼樹下的所有 Python 腳本、筆記本和數(shù)據(jù)集都可用于此示例。由于提供了數(shù)據(jù)集,TensorFlow 的示例演示甚至可以在沒有 CN0549 硬件的情況下使用。然而,通過硬件,訓(xùn)練后的模型可以用于實(shí)時(shí)推理。
邊緣到云:轉(zhuǎn)向嵌入式解決方案
創(chuàng)建模型后,可以將其部署用于推理目的或決策制定。使用 CN0549,它可以放置在遠(yuǎn)程 PC 上,數(shù)據(jù)從 CN0540 流式傳輸或直接在嵌入式處理器上運(yùn)行。根據(jù)實(shí)現(xiàn)的不同,將模型放置在處理器中將需要更多的工程努力,但可以提高一個(gè)數(shù)量級(jí)的功率效率,并且能夠?qū)崟r(shí)運(yùn)行。幸運(yùn)的是,在過去幾年中,用于部署機(jī)器學(xué)習(xí)模型的工具和軟件取得了巨大的發(fā)展增長(zhǎng)。
利用 FPGA
Xilinx 和 Intel 都擁有高級(jí)綜合 (HLS) 工具,可將高級(jí)語言轉(zhuǎn)換為在 FPGA 上運(yùn)行的 HDL 代碼。這些通常會(huì)與 TensorFlow、PyTorch 或 Caffe 等 Python 框架集成,以幫助將模型轉(zhuǎn)換為 IP 內(nèi)核——允許工程師將 IP 部署到 DE10-Nano、Cora Z7-07S 或自定義系統(tǒng)。然后將這些 IP 內(nèi)核拼接到 ADI 提供的開放式 HDL 參考設(shè)計(jì)中。圖 14 顯示了 Vivado 的 Cora Z7-07S CN0540 的帶注釋屏幕截圖,重點(diǎn)關(guān)注數(shù)據(jù)路徑。在設(shè)計(jì)中,來自 CN0540 的數(shù)據(jù)通過 SPI 引腳讀取,24 位樣本由 SPI 引擎解釋并傳遞到 DMA 控制器到內(nèi)存中。任何 DSP 或機(jī)器學(xué)習(xí)模型都可以直接在數(shù)據(jù)路徑中插入到此管道中。
圖 14. Vivado 2019.1 中顯示的 Cora Z7-07S HDL 參考設(shè)計(jì)數(shù)據(jù)路徑。
利用微處理器
與其將算法轉(zhuǎn)換為 HDL 層,不如直接在 Arm 內(nèi)核中運(yùn)行。根據(jù)算法的數(shù)據(jù)速率和復(fù)雜性,這是一條合理的開發(fā)路徑,通常更直接。為 Arm 內(nèi)核開發(fā) C 代碼甚至可能是 Python 將比 HDL 花費(fèi)更少的開發(fā)資源和時(shí)間,并且通常更易于維護(hù)。
MATLAB Embedded Coder 等工具甚至可以簡(jiǎn)化這一過程,并自動(dòng)將 MATLAB 轉(zhuǎn)換為針對(duì) Arm 內(nèi)核的可嵌入和優(yōu)化的 C 代碼?;蛘?,TensorFlow 擁有諸如 TensorFlow Lite 之類的工具,它們是其 Python 庫的可嵌入 C 版本,以允許更簡(jiǎn)單地過渡到嵌入式目標(biāo)。
智能決策拓?fù)?/p>
基于狀態(tài)的監(jiān)控并不是一刀切的適用于硬件和軟件的所有空間,這就是 CN0549 設(shè)計(jì)靈活的原因。當(dāng)我們考慮諸如 CbM 異常檢測(cè)之類的問題時(shí),通常可以從兩個(gè)時(shí)間尺度來處理:一個(gè)是我們需要立即做出反應(yīng),例如在與安全相關(guān)的場(chǎng)景中,或者在與維護(hù)或維護(hù)更相關(guān)的長(zhǎng)期時(shí)間尺度上。設(shè)備更換。兩者都需要不同的算法、處理能力和方法。
作為理想情況下的機(jī)器操作員,我們將擁有一個(gè)大型數(shù)據(jù)湖來訓(xùn)練我們的模型,并且既可以處理沒有干擾事件的短期檢測(cè),又可以從正在運(yùn)行的設(shè)備連續(xù)傳輸數(shù)據(jù)以用于未來的維護(hù)預(yù)測(cè)。然而,對(duì)于大多數(shù)運(yùn)營(yíng)商而言,情況可能并非如此,數(shù)據(jù)湖更像是干涸的河床??紤]到安全問題、物理位置、網(wǎng)絡(luò)或拓?fù)湟螅恍┈F(xiàn)成的解決方案也可能難以執(zhí)行數(shù)據(jù)收集。這些困難推動(dòng)了對(duì)更多定制解決方案的需求。
圖 15. CbM 網(wǎng)絡(luò)拓?fù)洹?/p>
CN0549 是具有多種連接選項(xiàng)的獨(dú)立系統(tǒng)。由于它運(yùn)行標(biāo)準(zhǔn) Linux,以太網(wǎng)和 Wi-Fi 等傳統(tǒng)網(wǎng)絡(luò)堆棧開箱即用,如果需要,甚至可以連接蜂窩調(diào)制解調(diào)器。在實(shí)際應(yīng)用中,有幾個(gè)典型的拓?fù)浔容^突出,如圖 15 所示。
圖 15 中顯示的最左側(cè)配置是離線收集案例,它可能發(fā)生在遠(yuǎn)程站點(diǎn)或無法連接到 Internet 的地方。在這種情況下,大型存儲(chǔ)介質(zhì)將與平臺(tái)共存,并按計(jì)劃手動(dòng)收集?;蛘?,其他兩個(gè)選項(xiàng)將數(shù)據(jù)流式傳輸?shù)焦捕它c(diǎn)。圖 15 的中間配置是一個(gè)孤立的網(wǎng)絡(luò),它可能僅位于組織內(nèi)部,也可能只是位于遠(yuǎn)程位置的一組平臺(tái),用于集中收集數(shù)據(jù)。這可能是出于安全考慮或只是缺乏連接性而需要的。CN0549 的設(shè)置對(duì)于任何這些配置都很容易,并且可以針對(duì)最終部署的特定需求進(jìn)行定制。
最終配置是直接云選項(xiàng),每個(gè)平臺(tái)直接訪問互聯(lián)網(wǎng)并將測(cè)量推送到云端。由于 CN0549 在 Linux 上運(yùn)行,因此該平臺(tái)可以通過 Python 等語言輕松利用 Microsoft Azure IoT 或 Amazon IoT Greengrass 等不同云供應(yīng)商的 API——為開始為新連接的設(shè)備構(gòu)建數(shù)據(jù)湖創(chuàng)造了一條簡(jiǎn)單的途徑。
當(dāng)云和本地進(jìn)程之間存在一致的連接時(shí),可以將不同的算法拆分為我們已經(jīng)討論過的需要或可以在本地運(yùn)行的內(nèi)容以及可以在云中運(yùn)行的內(nèi)容。這將在算法復(fù)雜性的處理能力要求、事件延遲以及可以發(fā)送到云的帶寬限制之間進(jìn)行自然權(quán)衡。但是,由于它非常靈活,因此可以輕松探索這些因素。
結(jié)論
CN0549 CbM 平臺(tái)在開發(fā)應(yīng)用程序時(shí)為設(shè)計(jì)人員提供系統(tǒng)靈活性和大量軟件資源。圍繞如何利用不同的組件進(jìn)行 CbM 和預(yù)測(cè)性維護(hù) (PdM) 開發(fā)進(jìn)行了對(duì)軟件堆棧的深入探討。由于軟件、HDL、原理圖的開放性以及與數(shù)據(jù)科學(xué)工具的集成,設(shè)計(jì)人員可以在整個(gè)堆棧中利用其終端系統(tǒng)所需的組件??傊?,這種狀態(tài)監(jiān)測(cè)設(shè)計(jì)提供了一種易于使用的開箱即用解決方案,并配有開源軟件和硬件,以提供靈活性并允許設(shè)計(jì)人員在更短的時(shí)間內(nèi)實(shí)現(xiàn)更好的定制結(jié)果。
審核編輯:郭婷
-
Linux
+關(guān)注
關(guān)注
87文章
11342瀏覽量
210216 -
python
+關(guān)注
關(guān)注
56文章
4807瀏覽量
84973 -
IOT
+關(guān)注
關(guān)注
187文章
4230瀏覽量
197427
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論