現(xiàn)ST-GCN故障診斷:從圖卷積到GUI完整實(shí)踐)
簡(jiǎn)介這是一份基于MATLAB實(shí)現(xiàn)時(shí)空?qǐng)D卷積網(wǎng)絡(luò)ST-GCN的故障診斷分類預(yù)測(cè)項(xiàng)目實(shí)例面向工業(yè)智能、狀態(tài)監(jiān)測(cè)、旋轉(zhuǎn)機(jī)械、電力系統(tǒng)等領(lǐng)域的研發(fā)與工程人員也適合有一定MATLAB基礎(chǔ)和機(jī)器學(xué)習(xí)知識(shí)的科研工作者參考。內(nèi)容圍繞多傳感器時(shí)空數(shù)據(jù)融合建模展開覆蓋數(shù)據(jù)生成、圖拓?fù)錁?gòu)建、自定義圖卷積層與時(shí)間卷積模塊設(shè)計(jì)、模型訓(xùn)練評(píng)估、GUI交互界面及工程部署流程并針對(duì)樣本不平衡和過擬合問題給出了L2正則、Dropout、早停機(jī)制等解決思路。資源共1個(gè)docx文檔約131KB適合對(duì)照代碼詳解系統(tǒng)學(xué)習(xí)從算法原理到完整落地的關(guān)鍵細(xì)節(jié)。目前已有83人學(xué)習(xí)瀏覽可作為快速上手ST-GCN故障診斷項(xiàng)目的實(shí)踐參考。 做過故障診斷的朋友應(yīng)該都清楚傳統(tǒng)方法里最能折騰人的不是算法本身而是特征提取那一步。時(shí)域、頻域、時(shí)頻域特征算了一大堆最后發(fā)現(xiàn)換個(gè)工況、換個(gè)轉(zhuǎn)速之前精心挑出來(lái)的特征全都失效了。這幾年圖神經(jīng)網(wǎng)絡(luò)火起來(lái)之后我一直在琢磨怎么把它用進(jìn)故障診斷最后落在ST-GCN時(shí)空?qǐng)D卷積網(wǎng)絡(luò)上用MATLAB完整實(shí)現(xiàn)了一套帶GUI的故障診斷系統(tǒng)效果比預(yù)期的穩(wěn)得多。這篇就把整個(gè)項(xiàng)目的思路、代碼、GUI設(shè)計(jì)和踩過的坑一次說清楚想入坑圖神經(jīng)網(wǎng)絡(luò)故障診斷的朋友可以直接照著做。這個(gè)項(xiàng)目解決的核心問題很簡(jiǎn)單怎么讓模型同時(shí)利用傳感器信號(hào)的“空間關(guān)系”和“時(shí)間趨勢(shì)”來(lái)做故障分類。傳統(tǒng)CNN擅長(zhǎng)處理網(wǎng)格數(shù)據(jù)但傳感器排布在物理空間上并不規(guī)整強(qiáng)行拉成一維向量反而丟失了傳感器之間的空間關(guān)聯(lián)。ST-GCN的思路是把傳感器看成圖上的節(jié)點(diǎn)傳感器之間的物理距離或相關(guān)性看成邊再疊加時(shí)間維度的卷積讓模型自己學(xué)到“哪幾個(gè)傳感器聯(lián)合變化意味著什么故障”。項(xiàng)目自帶完整MATLAB程序、GUI界面和逐段代碼注釋適合有三到六個(gè)月深度學(xué)習(xí)基礎(chǔ)、想進(jìn)一步接觸圖神經(jīng)網(wǎng)絡(luò)的工程師和學(xué)生。1. 項(xiàng)目背景與方案選型為什么偏偏是ST-GCN1.1 傳統(tǒng)故障診斷方法的核心痛點(diǎn)做故障診斷的老路子基本是“信號(hào)處理機(jī)器學(xué)習(xí)”兩步走先用小波變換、經(jīng)驗(yàn)?zāi)B(tài)分解、功率譜密度這些方法從原始振動(dòng)信號(hào)里手工提取特征再把特征丟進(jìn)SVM、隨機(jī)森林或者淺層神經(jīng)網(wǎng)絡(luò)里做分類。問題就出在“手工”這兩個(gè)字上。但凡現(xiàn)場(chǎng)數(shù)據(jù)稍微復(fù)雜一點(diǎn)比如軸承轉(zhuǎn)速有個(gè)波動(dòng)、負(fù)載有變化之前提取的特征分布馬上就會(huì)漂移模型準(zhǔn)確率直線下降。更頭疼的是多傳感器系統(tǒng)里每個(gè)測(cè)點(diǎn)單獨(dú)提取特征完全忽略了傳感器之間的相互關(guān)系而實(shí)際設(shè)備故障往往是從某個(gè)位置萌生、沿著結(jié)構(gòu)傳播到其他測(cè)點(diǎn)這種空間傳播信息被手動(dòng)特征工程白白浪費(fèi)掉了。我自己早年用SVM做軸承故障分類就遇到過這種情況實(shí)驗(yàn)室數(shù)據(jù)準(zhǔn)確率99%一到現(xiàn)場(chǎng)數(shù)據(jù)直接掉到80%出頭排查了很久才定位到是特征分布偏移問題。這也是我后來(lái)堅(jiān)決轉(zhuǎn)向端到端深度學(xué)習(xí)路線的直接原因。1.2 ST-GCN把數(shù)據(jù)建模成什么樣子ST-GCN最早是拿來(lái)做人骨架動(dòng)作識(shí)別的它處理的問題和傳感器網(wǎng)絡(luò)故障診斷有天然的相似之處。人體骨架是一堆關(guān)節(jié)點(diǎn)關(guān)節(jié)之間有骨骼連接傳感器網(wǎng)絡(luò)是一堆測(cè)點(diǎn)測(cè)點(diǎn)之間有物理距離或者結(jié)構(gòu)連接。動(dòng)作識(shí)別需要同時(shí)看骨架的“空間姿態(tài)”和“時(shí)間變化”故障診斷同樣需要同時(shí)看傳感器的“空間分布”和“信號(hào)的時(shí)間演化”。用圖論的語(yǔ)言來(lái)說ST-GCN把傳感器數(shù)據(jù)組織成一個(gè)圖序列每個(gè)時(shí)間片對(duì)應(yīng)一張圖圖上的節(jié)點(diǎn)是傳感器邊是傳感器之間的關(guān)聯(lián)關(guān)系可以是物理距離定死的也可以是根據(jù)數(shù)據(jù)相關(guān)性學(xué)出來(lái)的節(jié)點(diǎn)特征就是那個(gè)時(shí)刻各傳感器的讀數(shù)。然后網(wǎng)絡(luò)用圖卷積捕捉空間關(guān)系再用時(shí)間卷積捕捉序列演化最后接一個(gè)分類頭輸出故障類型。1.3 為什么在MATLAB里實(shí)現(xiàn)而不是PythonPython生態(tài)里做ST-GCN有DGL、PyTorch Geometric這些成熟框架但工業(yè)現(xiàn)場(chǎng)做設(shè)備狀態(tài)監(jiān)測(cè)的工程師很多人的主力工具其實(shí)是MATLAB。設(shè)備廠商給的數(shù)據(jù)接口、歷史數(shù)據(jù)存儲(chǔ)格式、甚至不少老設(shè)備的采集程序都是MATLAB寫的數(shù)據(jù)不用倒騰格式處理鏈路短。另外MATLAB的App Designer做桌面GUI非常方便拖拽控件就能生成界面框架對(duì)不擅長(zhǎng)前端開發(fā)的工程師來(lái)說門檻低很多。還有一個(gè)實(shí)際考慮是部署場(chǎng)景。很多故障診斷系統(tǒng)運(yùn)行在不上外網(wǎng)的工業(yè)內(nèi)網(wǎng)里Python環(huán)境裝依賴包有時(shí)候會(huì)卡在鏡像源上MATLAB一套裝好就齊活了。深度學(xué)習(xí)工具箱的自動(dòng)微分能力和GPU支持這幾年也追上來(lái)不少跑ST-GCN這種規(guī)模的小模型完全夠用。2. 數(shù)據(jù)準(zhǔn)備與圖結(jié)構(gòu)建模2.1 數(shù)據(jù)怎么組織從原始信號(hào)到圖序列這個(gè)項(xiàng)目用的是典型的軸承故障公開數(shù)據(jù)集采集了正常狀態(tài)、內(nèi)圈故障、外圈故障、滾動(dòng)體故障四種工況下的振動(dòng)信號(hào)。原始數(shù)據(jù)是二維矩陣形狀是“傳感器數(shù)×采樣點(diǎn)數(shù)”比如8個(gè)測(cè)點(diǎn)、每個(gè)測(cè)點(diǎn)采了20萬(wàn)個(gè)點(diǎn)。直接拿整段序列訓(xùn)練既慢又容易過擬合標(biāo)準(zhǔn)做法是滑窗分段。我用窗口長(zhǎng)度1024、步長(zhǎng)512把原始數(shù)據(jù)切成大量樣本每個(gè)樣本形狀是“傳感器數(shù)×窗口長(zhǎng)度”即8×1024。切完之后每個(gè)樣本還要做標(biāo)準(zhǔn)化消除不同測(cè)點(diǎn)之間量綱差異不然圖卷積計(jì)算時(shí)某些節(jié)點(diǎn)特征數(shù)值過大梯度更新會(huì)偏向那幾個(gè)節(jié)點(diǎn)。這里有個(gè)細(xì)節(jié)容易踩坑滑窗切分之前一定要先按工況打亂再切窗。如果先切窗再打亂同一個(gè)時(shí)間窗內(nèi)的訓(xùn)練集和驗(yàn)證集會(huì)高度相似驗(yàn)證集準(zhǔn)確率會(huì)虛高到了現(xiàn)場(chǎng)數(shù)據(jù)上就露餡。我一般是用cvpartition按工況比例分層劃分保證訓(xùn)練集和驗(yàn)證集里四種工況比例一致。2.2 鄰接矩陣圖卷積的“骨架”圖卷積的核心輸入除了節(jié)點(diǎn)特征之外就是鄰接矩陣A。A的維度是“節(jié)點(diǎn)數(shù)×節(jié)點(diǎn)數(shù)”A(i,j)表示第i個(gè)傳感器和第j個(gè)傳感器之間的連接強(qiáng)度。這個(gè)矩陣怎么定直接決定了圖卷積能不能學(xué)到有效信息。第一種做法是用物理距離定義傳感器安裝位置之間的距離越近邊權(quán)越大一般用高斯核函數(shù)把距離映射到0~1區(qū)間。第二種做法是用相關(guān)性定義直接算各傳感器信號(hào)之間的皮爾遜相關(guān)系數(shù)把相關(guān)系數(shù)矩陣作為鄰接矩陣。我實(shí)測(cè)下來(lái)相關(guān)性定義比距離定義穩(wěn)定因?yàn)槲锢砭嚯x是固定的但設(shè)備不同工況下的振動(dòng)傳播路徑會(huì)變數(shù)據(jù)相關(guān)性可以自適應(yīng)反映這種變化。代碼里我做了個(gè)折中先計(jì)算相關(guān)性矩陣然后設(shè)定一個(gè)閾值相關(guān)性低于閾值的邊直接置零控制圖的稀疏度避免全連接圖帶來(lái)的過平滑問題。閾值一般取0.6左右太疏了信息傳不出去太密了每個(gè)節(jié)點(diǎn)特征趨同故障類別分不開。2.3 數(shù)據(jù)增強(qiáng)樣本不夠怎么辦深度學(xué)習(xí)模型普遍“貪吃”故障診斷現(xiàn)場(chǎng)能拿到的故障樣本往往少得可憐尤其是早期故障打標(biāo)簽還得靠專家人工判讀。這個(gè)項(xiàng)目里我用了一個(gè)簡(jiǎn)單但有效的增強(qiáng)策略在原始信號(hào)上加不同信噪比的高斯白噪聲相當(dāng)于模擬不同噪聲環(huán)境下的采集結(jié)果把樣本量擴(kuò)到原來(lái)的5倍。做增強(qiáng)要掌握分寸噪聲加太多會(huì)把故障特征淹掉模型學(xué)到的全是噪聲模式。我測(cè)試下來(lái)信噪比控制在20dB到40dB之間效果最好。增強(qiáng)之后模型的泛化能力明顯提升尤其是在驗(yàn)證集上的表現(xiàn)不再忽高忽低。3. 核心代碼拆解ST-GCN的MATLAB實(shí)現(xiàn)3.1 整體代碼框架整個(gè)項(xiàng)目代碼分成五個(gè)模塊每個(gè)模塊干一件事業(yè)務(wù)邏輯解耦得比較干凈data_preprocess.m原始數(shù)據(jù)讀取、滑窗分段、標(biāo)準(zhǔn)化、數(shù)據(jù)集劃分build_graph.m計(jì)算相關(guān)性矩陣、生成鄰接矩陣和度矩陣ST_GCN_Network.m定義ST-GCN網(wǎng)絡(luò)結(jié)構(gòu)包含圖卷積層和時(shí)間卷積層train_stgcn.m模型訓(xùn)練主腳本包含訓(xùn)練循環(huán)、損失計(jì)算、驗(yàn)證評(píng)估fault_diagnosis_gui.mlappGUI界面加載模型、導(dǎo)入數(shù)據(jù)、顯示診斷結(jié)果新手容易犯的毛病是把所有代碼堆在一個(gè)腳本里改一個(gè)參數(shù)要滾動(dòng)半天才能找到位置。拆成模塊之后調(diào)網(wǎng)絡(luò)結(jié)構(gòu)不用碰數(shù)據(jù)處理邏輯換數(shù)據(jù)集也不用動(dòng)網(wǎng)絡(luò)代碼維護(hù)起來(lái)省心得多。3.2 圖卷積層怎么實(shí)現(xiàn)ST-GCN里的圖卷積核心公式是H σ(D^(-1/2) · A_hat · D^(-1/2) · H · W)其中A_hat A I是加了自環(huán)的鄰接矩陣D是對(duì)角度矩陣D(i,i)是A_hat第i行元素之和H是輸入特征矩陣W是待學(xué)習(xí)的權(quán)重矩陣σ是激活函數(shù)。MATLAB深度學(xué)習(xí)工具箱里沒有現(xiàn)成的圖卷積層所以我在ST_GCN_Network.m里用自定義層的方式實(shí)現(xiàn)繼承nnet.layer.Layer重寫predict方法。核心步驟是先對(duì)A_hat做歸一化處理然后算D^(-1/2) · A_hat · D^(-1/2) · H結(jié)果乘上權(quán)重W再過激活函數(shù)。建議在predict里先A_hat A eye(N)再用D diag(sum(A_hat, 2))求度矩陣最后計(jì)算歸一化拉普拉斯矩陣 L_norm D^(-0.5) * A_hat * D^(-0.5)。每次前向傳播都要重新算這個(gè)矩陣數(shù)據(jù)規(guī)模不大的時(shí)候性能損失可以忽略。我在代碼注釋里把這幾步全部標(biāo)清楚了對(duì)著公式看代碼很容易對(duì)上。3.3 時(shí)間卷積層怎么實(shí)現(xiàn)光有圖卷積只能感知單時(shí)間步的空間特征振動(dòng)信號(hào)是時(shí)序數(shù)據(jù)必須加時(shí)間維度的建模。時(shí)間卷積我選擇了一維卷積卷積核大小取9沿時(shí)間軸滑動(dòng)捕捉局部時(shí)間窗口內(nèi)的變化模式。疊加兩層時(shí)間卷積每層后面接BN層和ReLU激活讓模型既能捕捉短時(shí)沖擊特征又能建模中等長(zhǎng)度的趨勢(shì)變化。這里有個(gè)經(jīng)驗(yàn)值卷積核大小設(shè)置為采樣頻率的約1%左右比較合適。比如采樣頻率是12000Hz卷積核取9到11對(duì)應(yīng)的物理時(shí)間窗口在0.75ms到0.9ms之間恰好覆蓋軸承故障特征頻率的一個(gè)周期左右模型能感知到每次故障沖擊的完整形態(tài)。卷積核設(shè)置過大反而會(huì)平滑掉沖擊特征。3.4 訓(xùn)練配置與超參數(shù)選擇訓(xùn)練參數(shù)我用的是下面這套實(shí)測(cè)收斂穩(wěn)定優(yōu)化器Adam初始學(xué)習(xí)率0.001學(xué)習(xí)率策略每10輪衰減為原來(lái)的0.5Batch大小64最大訓(xùn)練輪數(shù)60損失函數(shù)交叉熵類別權(quán)重根據(jù)樣本量自動(dòng)調(diào)整樣本少的故障類別權(quán)重更高關(guān)鍵超參數(shù)是圖卷積的輸出通道數(shù)我設(shè)置的是64全連接層前接一個(gè)全局平均池化把所有節(jié)點(diǎn)的特征壓成一個(gè)向量。通道數(shù)太小模型表達(dá)力不夠太大在訓(xùn)練數(shù)據(jù)有限的情況下容易過擬合。64在速度和準(zhǔn)確率之間相對(duì)平衡實(shí)測(cè)最高能到98.6%的分類準(zhǔn)確率。4. GUI設(shè)計(jì)不是做個(gè)擺設(shè)是讓人真正能用4.1 GUI功能規(guī)劃MATLAB的App Designer比傳統(tǒng)的GUIDE好用很多回調(diào)函數(shù)管理清晰自動(dòng)生成的代碼結(jié)構(gòu)也更規(guī)范。整個(gè)界面我規(guī)劃了三個(gè)功能區(qū)數(shù)據(jù)導(dǎo)入?yún)^(qū)、模型操作區(qū)、結(jié)果展示區(qū)。數(shù)據(jù)導(dǎo)入?yún)^(qū)支持兩種方式一是直接從文件夾讀取多組數(shù)據(jù)自動(dòng)做預(yù)處理和滑窗分段二是加載已經(jīng)處理好的存成.mat格式的特征數(shù)據(jù)。模型操作區(qū)放兩個(gè)按鈕一個(gè)“訓(xùn)練模型”一個(gè)“加載已有模型”。結(jié)果展示區(qū)最核心左邊是原始信號(hào)波形顯示右邊是診斷結(jié)果包括預(yù)測(cè)標(biāo)簽、置信度條形圖以及每種故障類型的概率分布。4.2 界面與回調(diào)邏輯設(shè)計(jì)界面布局我用了GridLayout布局管理器這樣窗口拉伸時(shí)控件不會(huì)亂掉。左側(cè)占四分之一屏放操作按鈕右側(cè)四分之三屏放繪圖區(qū)域用TabGroup分成“信號(hào)顯示”和“診斷結(jié)果”兩個(gè)頁(yè)簽?!靶盘?hào)顯示”頁(yè)可以自由切換查看不同傳感器的原始波形“診斷結(jié)果”頁(yè)展示分類結(jié)果。功能拆分清楚之后后續(xù)加功能也不影響已有邏輯?;卣{(diào)函數(shù)最核心的是訓(xùn)練按鈕和診斷按鈕。點(diǎn)擊訓(xùn)練時(shí)回調(diào)函數(shù)會(huì)先檢查數(shù)據(jù)是否已加載然后讀取參數(shù)面板里的超參數(shù)值調(diào)用訓(xùn)練腳本訓(xùn)練過程中用waitbar或者uiprogressdlg顯示進(jìn)度訓(xùn)練完成后自動(dòng)把準(zhǔn)確率曲線和損失曲線畫在界面上。診斷按鈕的邏輯更簡(jiǎn)單加載一段新的信號(hào)數(shù)據(jù)預(yù)處理之后調(diào)用訓(xùn)練好的模型做預(yù)測(cè)輸出概率最高的類別和對(duì)應(yīng)的置信度。4.3 模型保存與部署訓(xùn)練完成后模型用save(trained_stgcn_net.mat, net, config)保存config結(jié)構(gòu)體里存了窗口大小、標(biāo)準(zhǔn)化參數(shù)、鄰接矩陣等預(yù)處理信息。為什么要連預(yù)處理參數(shù)一起存因?yàn)轭A(yù)測(cè)新數(shù)據(jù)時(shí)要用完全相同的標(biāo)準(zhǔn)化參數(shù)否則數(shù)據(jù)分布不一致模型輸出會(huì)偏移。這是一個(gè)很容易被忽略但又非常關(guān)鍵的細(xì)節(jié)。GUI加載模型時(shí)會(huì)自動(dòng)讀取這個(gè)結(jié)構(gòu)體用里面存的參數(shù)對(duì)新數(shù)據(jù)做預(yù)處理不用用戶重新設(shè)置任何參數(shù)真正實(shí)現(xiàn)“打開就能用”。后續(xù)給現(xiàn)場(chǎng)操作人員用的時(shí)候他們只需要點(diǎn)幾個(gè)按鈕不需要理解背后的原理。5. 常見問題與排查技巧實(shí)錄5.1 訓(xùn)練損失不下降這是新手遇到最多的問題。排查路徑按照我的經(jīng)驗(yàn)一般是三步先看標(biāo)簽是否從0開始編號(hào)MATLAB分類層的標(biāo)簽必須是連續(xù)的1、2、3這種正整數(shù)如果從0開始就會(huì)出問題再看學(xué)習(xí)率是否過大把學(xué)習(xí)率降到0.0001試試最后檢查是否有NaN值混進(jìn)輸入數(shù)據(jù)數(shù)據(jù)標(biāo)準(zhǔn)化時(shí)如果某個(gè)傳感器標(biāo)準(zhǔn)差為0會(huì)產(chǎn)生除零錯(cuò)誤需要加一個(gè)極小值epsilon避免。損失下降但驗(yàn)證集準(zhǔn)確率上不去多半是過擬合可以增加Dropout層或者數(shù)據(jù)增強(qiáng)強(qiáng)度我踩過的坑是Dropout放在圖卷積層內(nèi)部比只放在全連接層前效果好得多。5.2 鄰接矩陣設(shè)置不合理導(dǎo)致分類效果差幾種典型現(xiàn)象如果所有類別的預(yù)測(cè)概率都差不多大概率是全連接圖導(dǎo)致過平滑了節(jié)點(diǎn)特征趨同區(qū)分度消失如果是某些類別準(zhǔn)確率出奇地低大概率是和這類故障相關(guān)的傳感器在鄰接矩陣?yán)锏倪厵?quán)太小信息傳不出去。處理方法就是調(diào)閾值把過平滑的邊斷開或者結(jié)合先驗(yàn)知識(shí)手動(dòng)加強(qiáng)關(guān)鍵測(cè)點(diǎn)之間的邊權(quán)。5.3 內(nèi)存溢出和維度不匹配MATLAB在循環(huán)里不斷拼接數(shù)據(jù)是非常容易觸發(fā)內(nèi)存溢出的操作我習(xí)慣預(yù)分配數(shù)組在滑窗之前就先算好總樣本數(shù)用零矩陣一次性malloc內(nèi)存。維度不匹配的問題大多出在圖卷積層的矩陣乘法上建議在predict方法里加一句斷言檢查H的第一維是否等于節(jié)點(diǎn)數(shù)出錯(cuò)時(shí)立即提示比一路運(yùn)行到最后一層再報(bào)錯(cuò)好排查得多。5.4 問題排查速查表問題現(xiàn)象可能原因解決方案損失不下降學(xué)習(xí)率過大/標(biāo)簽不連續(xù)/輸入含NaN調(diào)低學(xué)習(xí)率檢查標(biāo)簽從1開始標(biāo)準(zhǔn)化加epsilon驗(yàn)證準(zhǔn)確率遠(yuǎn)低于訓(xùn)練過擬合加Dropout增大數(shù)據(jù)增強(qiáng)強(qiáng)度所有類別概率接近圖過平滑提高鄰接矩陣閾值斷開弱連接單類別準(zhǔn)確率偏低關(guān)鍵傳感器邊權(quán)太小手動(dòng)增強(qiáng)關(guān)鍵測(cè)點(diǎn)之間的邊權(quán)內(nèi)存溢出循環(huán)中動(dòng)態(tài)拼接數(shù)據(jù)預(yù)分配數(shù)組一次malloc維度不匹配圖卷積層輸入節(jié)點(diǎn)數(shù)不一致在predict中加維度斷言6. 項(xiàng)目擴(kuò)展與后續(xù)優(yōu)化方向6.1 從軸承故障推廣到其他設(shè)備這個(gè)項(xiàng)目的框架不局限于軸承旋轉(zhuǎn)機(jī)械的齒輪箱、電機(jī)、泵類設(shè)備只要有多測(cè)點(diǎn)振動(dòng)信號(hào)都可以套用同樣的流程。換設(shè)備時(shí)主要改的是數(shù)據(jù)預(yù)處理參數(shù)和圖結(jié)構(gòu)定義方式。齒輪箱的測(cè)點(diǎn)布置更密集相關(guān)性強(qiáng)鄰接矩陣閾值可以適當(dāng)調(diào)高管道類監(jiān)測(cè)如果傳感器相隔很遠(yuǎn)圖結(jié)構(gòu)就得更多依賴結(jié)構(gòu)連接而不是物理距離。6.2 從離線診斷走向在線監(jiān)測(cè)我目前正在把模型部署到一個(gè)小型在線監(jiān)測(cè)系統(tǒng)里核心改動(dòng)是把滑窗改成流式處理每次只取最新的一段數(shù)據(jù)做預(yù)測(cè)配合一個(gè)滑動(dòng)平均策略來(lái)平滑預(yù)測(cè)結(jié)果。單次預(yù)測(cè)的抖動(dòng)比較大連續(xù)預(yù)測(cè)后取多數(shù)投票能讓準(zhǔn)確率再提高1到2個(gè)百分點(diǎn)誤報(bào)率明顯下降。在線版本的GUI也在改會(huì)增加歷史趨勢(shì)圖和數(shù)據(jù)預(yù)警功能。本質(zhì)上ST-GCN的輸出不只是一個(gè)類別標(biāo)簽最后一層之前的特征向量也可以拿來(lái)監(jiān)控設(shè)備健康退化趨勢(shì)這是后續(xù)可以深挖的方向。最后分享一個(gè)我在實(shí)際測(cè)試中的體會(huì)ST-GCN這類模型在故障診斷里真正值錢的地方不是它比CNN準(zhǔn)確率高多少而是它給多傳感器系統(tǒng)提供了一種“結(jié)構(gòu)感知”的建模方式。很多設(shè)備在故障早期單看任何一個(gè)測(cè)點(diǎn)都不明顯但多個(gè)測(cè)點(diǎn)之間的聯(lián)合變化模式已經(jīng)出現(xiàn)了異常。圖卷積能捕捉到這種結(jié)構(gòu)層面的變化這是普通時(shí)序模型很難做到的。調(diào)試時(shí)寧可花時(shí)間把鄰接矩陣定義琢磨透也別急著調(diào)網(wǎng)絡(luò)深度圖結(jié)構(gòu)才是這個(gè)模型的靈魂。本文還有配套的精品資源點(diǎn)擊獲取