(北京工業(yè)大學(xué) 信息學(xué)部,北京 100124)
隨著我國建造業(yè)的蓬勃發(fā)展,人們對于金屬零部件的品質(zhì)和使用壽命越來越關(guān)注,而其中最為重視的當為金屬的硬度。硬度是指金屬材料抵抗形變或破壞的能力,是判斷金屬材料軟硬程度與品質(zhì)的重要指標。金屬硬度的檢測方法大致可分為兩種:有損檢測與無損檢測。有損檢測是指通過破壞性的方法獲得金屬的硬度信息,例如靜壓、拉伸等。但這些方法或多或少都會對金屬本身造成破壞性影響,既費時又昂貴,并且不能應(yīng)用于正在服役的金屬器件。因此無損檢測這種不會損壞金屬本身的硬度檢測方法被人提出。
金屬的無損檢測是利用物質(zhì)的聲、光、磁和電等特性,來對金屬特性,缺陷等一系列信息進行檢測,而在這個過程中并不破壞或不影響檢測對象的使用性能[1]。常用的無損檢測方法包括電阻應(yīng)變發(fā)、超聲波檢測法、微磁檢測法等,在上述的方法中,使用微磁信號進行無損檢測較為常用[2],而巴克豪森噪聲信號就是一種典型的微磁信號。巴克豪森噪聲信號是由德國科學(xué)家H.Barkhausen于1919年發(fā)現(xiàn)的可測噪聲信號,巴克豪森噪聲信號是由于外加磁場變化導(dǎo)致磁疇壁的不連續(xù)運動導(dǎo)致的[3],這些不連續(xù)的運動會產(chǎn)生一種類似于噪聲的信號。巴克豪森信號會受金相,含碳量,晶格尺寸等一系列因素[4-5]的影響。對于金屬外在屬性來說,巴克豪森噪聲與金屬的硬度,殘余應(yīng)力等特性有關(guān),大范圍的應(yīng)用于金屬硬度的無損檢測中。
Aki Sorsa等人[6]初步建立了以信號預(yù)處理、特征提取、基于wrapper的特征挑選、回歸分析四步為核心的材料性能預(yù)測方法;南京航空航天大學(xué)的王平等人[7]提出了巴克豪森信號新的特征值——峰寬比,引入了新的概念——半高全寬, 即包絡(luò)線的峰值與半高全寬之比,將這些特征與以往的經(jīng)典時域特征相結(jié)合輸入到BP神經(jīng)網(wǎng)絡(luò)中,利用得到的模型構(gòu)建了一套鐵磁材料的應(yīng)力和硬度進行驗證性檢測的系統(tǒng),然而這些系統(tǒng)并沒有采用線上的方式進行檢測。
本文設(shè)計的基于Django的金屬在線硬度檢測系統(tǒng),以輕量級web框架Django為基礎(chǔ),利用機器學(xué)習的方法,對金屬的巴克豪森噪聲信號進行信號分析與特征提取并訓(xùn)練,將訓(xùn)練好的模型加載到系統(tǒng)中以供硬度檢測,并且在系統(tǒng)中加入巴克豪森噪聲信息管理功能,可以上傳或下載巴克豪森噪聲信息文件,極大的方便了金屬硬度檢測的過程。
系統(tǒng)采用的是瀏覽器/服務(wù)器結(jié)構(gòu),使用權(quán)限分為兩種,分別是用戶權(quán)限和管理員權(quán)限,在登錄時為兩種權(quán)限提供兩個界面。系統(tǒng)為用戶提供的是用戶主界面,可用來在線檢測和查詢金屬試件信息。系統(tǒng)為管理員提供的是管理員主界面,除了包括用戶權(quán)限的所有功能之外,可以對用戶信息和金屬試件進行維護工作。
用戶首先通過瀏覽器向系統(tǒng)服務(wù)器發(fā)出HTTP請求,Django接受到這個請求后會將它轉(zhuǎn)化為然后該對象被傳遞給 Request中間件處理,如果該中間件返回了Response,則直接傳遞給Response中間件做收尾處理,否則的話 Request中間件將訪問URL映射文件。在Django框架中,url.py文件定義了系統(tǒng)中所有的URL路由表,通過正則表達式的方法匹配對應(yīng)的URL-pattern,從而調(diào)用對應(yīng)的處理函數(shù)。本項目全部的處理函數(shù)被定義在view.py文件中,根據(jù)不同的請求調(diào)用view.py文件中指定的函數(shù),從而實現(xiàn)用戶的請求。當處理函數(shù)需要訪問數(shù)據(jù)庫時,Django框架通過內(nèi)置的MySQL適配器訪問本系統(tǒng)的MySQL數(shù)據(jù)庫,將需要的數(shù)據(jù)取出并加載到用戶請求對應(yīng)的模板頁面上,經(jīng)過渲染成HTML代碼后響應(yīng)給瀏覽器,最終展示給用戶。
整個系統(tǒng)包括兩部分:用戶系統(tǒng)和管理員系統(tǒng),在登錄模塊可以識別用戶類型。
用戶系統(tǒng)分為兩個子模塊,分別為試件信息查詢模塊和硬度檢測模塊。用戶可以通過上傳金屬試件的巴克豪森噪聲信號文件進行在線的金屬硬度檢測,并可以查詢存儲在系統(tǒng)中的金屬試件信息,系統(tǒng)還為用戶提供了文件下載功能,可以獲取平臺提供的已經(jīng)標注硬度的金屬試件的巴克豪森噪聲信號文件,以供用戶分析與研究。
管理員系統(tǒng)分為3個子模塊,分別為用戶信息管理模塊、試件信息管理模塊和硬度檢測模塊。管理員具有比用戶更高的權(quán)限,除了擁有在線硬度檢測和試件信息查詢功能外,還可以對用戶信息、金屬試件信息、金屬試件的巴克豪森噪聲信號文件進行管理,管理員可以添加、刪除、修改、查詢用戶的信息和金屬試件信息,上傳新的金屬試件的巴克豪森噪聲信號文件到系統(tǒng)服務(wù)器中,擴充系統(tǒng)的金屬試件樣本數(shù)量。下面對上述的子模塊從系統(tǒng)登錄模塊、信息管理模塊和硬度檢測模塊詳細介紹本系統(tǒng)。
為了實現(xiàn)既能隨時修改與添加存儲于系統(tǒng)中的金屬試件信息又能防止這些信息被非專業(yè)人員隨意修改,本系統(tǒng)設(shè)立了管理員和用戶兩個權(quán)限,系統(tǒng)登錄模塊就是實現(xiàn)在進入系統(tǒng)時區(qū)分兩種權(quán)限,這個模塊設(shè)計的好壞直接影響著用戶體驗與系統(tǒng)的安全性能。系統(tǒng)登錄的業(yè)務(wù)邏輯如圖1所示。
有效管理的課堂是指運行順利、時間使用經(jīng)濟、學(xué)生能夠充分獲得學(xué)習機會的課堂。學(xué)生在學(xué)習之前需要一些必要的指導(dǎo),比如該如何做、什么時候可以以什么樣的方式在教室里活動、該坐在哪里、什么時候可以或不可以打斷教師說話、音量不能超過多少分貝,等等。如果缺乏相關(guān)引導(dǎo),那么教師的教學(xué)無法開展,學(xué)生的學(xué)習也無法取得成效。
圖1 系統(tǒng)登錄邏輯圖
在系統(tǒng)登錄界面需要填寫兩個信息,分別是Username和Password,提交后前端將兩個數(shù)據(jù)傳遞到后臺,與MySQL數(shù)據(jù)庫中存儲的用戶信息和管理員信息進行比較,若Username不存在,則返回用戶名錯誤,若Username正確但Password錯誤,則返回密碼錯誤,全正確后會會根據(jù)被賦予的不同權(quán)限進入各自的系統(tǒng)。
信息管理模塊的主要功能是實現(xiàn)管理員對系統(tǒng)中所有信息進行維護管理,包括用戶信息與金屬試件信息。由于本系統(tǒng)的Django框架在與數(shù)據(jù)庫交互上采用的是ORM(Object Relational Mapping)機制,可以根據(jù)對接的數(shù)據(jù)庫引擎,翻譯成對應(yīng)的sql語句,無需專門編寫數(shù)據(jù)庫訪問層代碼,直接編寫python代碼即可。在用戶信息管理模塊中包括用戶名和密碼兩個信息,管理員可以對現(xiàn)有的用戶進行編輯與刪除操作,也可以添加新的用戶;在金屬試件信息管理系統(tǒng)中包括試件原號、維氏硬度和巴克豪森噪聲文件,試件原號、維氏硬度與用戶的用戶名和密碼操作相同,均為文本信息,在這里需要特別說明的是巴克豪森噪聲文件。作為金屬試件硬度檢測的依據(jù),系統(tǒng)會為每一個用戶提供試件的巴克豪森噪聲文件以供研究使用。管理員可以對信號文件進行上傳與刪除處理,將上傳的文件放在服務(wù)器指定的路徑中,并與試件通過試件原號進行綁定,使得用戶在需要時可以隨時下載。
本模塊是系統(tǒng)中最為核心的部分,完成了對用戶上傳的金屬試件樣本的硬度檢測功能。主要分為3個步驟:特征提取、模型訓(xùn)練和在線檢測。
2.3.1 特征提取
根據(jù)閱讀華中科技大學(xué)羅教授的文章可知[9],對于不同硬度材料的巴克豪森噪聲的AR譜同階展開的峰值的高度會隨著硬度的變化而變化,并且不易于受其他因素(如塑性形變、殘余應(yīng)力等)的影響,與硬度呈單一關(guān)系,比基于時域的信號分析方法魯棒性與準確性更強,因此本系統(tǒng)采用基于基于AR譜估計的信號分析方法。AR譜分析是利用AR模型計算隨機信號的能量譜、功率譜,即隨機信號自回歸分析,是一種被廣泛使用的現(xiàn)代功率譜計算方法[10]。AR譜估計分為三步:第一步,假設(shè)出于觀測的數(shù)據(jù)相符合的階數(shù)P,本系統(tǒng)為了更好的擬合數(shù)據(jù),使用了5個階次的展開,分別是4、8、16、32、64;第二步,根據(jù)部分采集的數(shù)據(jù)去估計AR譜中的參數(shù)。在自回歸模型中,利用式(1)檢測一個時間序列{X(n)}中的未知數(shù)據(jù)點的數(shù)值:
(1)
Y=XA+ε
(2)
其中:
Y=[x(p),x(p+1), …,x(N)]T
(3)
A=[a1,a2,…,ap]T
(4)
(5)
(6)
上述公式中,N為輸入信號的總數(shù)量,a1,a2,…,ap為所求的AR譜特征參數(shù),u(p),u(p+1), …,u(N)為白噪聲,T表示矩陣的轉(zhuǎn)置;根據(jù)最小二乘法原理可得到模型參數(shù)A的估計為:
A=(XTX)-1XTY
(7)
從而得到AR譜特征參數(shù)。
第三步,利用步驟二所得到的參數(shù)計算功率譜與能量譜。根據(jù)AR模型的假設(shè),計算單邊功率譜密度根據(jù)式(8)即可得到:
(8)
經(jīng)過上述步驟,p值分別取4、8、16、32、64,從而得到了巴克豪森噪聲5個階次的AR譜。但是因為采集到的巴克豪森信號的 AR 譜上峰的數(shù)量并不相同,特征維度不統(tǒng)一,所以無法直接使用特征選擇方法結(jié)合機器學(xué)習或神經(jīng)網(wǎng)絡(luò)來進行自動預(yù)測。本發(fā)明先對AR譜求一階導(dǎo),濾除噪聲。然后求二階導(dǎo)數(shù),把一階導(dǎo)數(shù)的兩部分融合成一個谷,從而去除冗余信息,因此最后對于每一個巴克豪森噪聲信號來說,特征源是 AR譜信號的二階導(dǎo)數(shù),而提取的特征分別的是AR 二階導(dǎo)數(shù)的每個谷的谷寬,谷深和谷值點所在的位置3個特征。得到上述特征后再使用kmeans算法對所有谷進行聚類,并按照每個谷所歸屬的類別對得到的特征進行編碼,規(guī)則為若一個有某類谷則標1,無則標0。從而將每個樣本的特征數(shù)量進行了統(tǒng)一。
2.3.2 模型訓(xùn)練
本步驟的輸入為上一步得到的歸一化后的特征,將特征輸入到改進BP神經(jīng)網(wǎng)絡(luò)。BP神經(jīng)網(wǎng)絡(luò)是一種基于感知機的多層神經(jīng)網(wǎng)絡(luò),其主要特點是信號前向傳遞,而誤差后向傳播,通過不斷調(diào)節(jié)網(wǎng)絡(luò)權(quán)重值,擬合真實輸出[12]。但由于隨機初始權(quán)值的設(shè)定導(dǎo)致每次訓(xùn)練的結(jié)果不同,使得BP神經(jīng)網(wǎng)絡(luò)模型的性能不穩(wěn)定,為了提高模型的魯棒性,本系統(tǒng)采用改進的BP神經(jīng)網(wǎng)絡(luò)模型。改進BP神經(jīng)網(wǎng)絡(luò)的方法是先采用行采樣的方式,每次抽取訓(xùn)練集的75%作為訓(xùn)練子集,一共采樣10次。經(jīng)過這些子集就學(xué)習出10個BP神經(jīng)網(wǎng)絡(luò),將需要檢測的樣本分別放入其中,得到10個檢測結(jié)果,檢測結(jié)果求和取均值則為最終檢測結(jié)果,整體流程如圖2所示。本系統(tǒng)的模型是在離線環(huán)境下訓(xùn)練的,訓(xùn)練集為720個巴克豪森噪聲信號文件,標簽為金屬的硬度,單位是維氏硬度。
圖2 集成化BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練流程圖
將此模型在測試集中進行測試,其中測試集包含180個信號文件作為測試樣本,測試結(jié)果的均方誤差為82.4,而傳統(tǒng)算法(使用巴克豪森噪聲信號的峰值、矯頑力、左半峰寬、右半峰寬、包絡(luò)線大于閾值的平均值、剩磁作為輸入特征)結(jié)果的均方誤差為229.8,說明本模型具有良好的性能。
2.3.3 在線檢測
通過上述的步驟訓(xùn)練好模型后,需要將模型導(dǎo)入到服務(wù)端與系統(tǒng)對接。為了方便調(diào)用和數(shù)據(jù)模型的持久化存儲,本系統(tǒng)采用的方案是將上述訓(xùn)練好的10個BP神經(jīng)網(wǎng)絡(luò)模型通過python的pickle模塊保存成.pkl格式文件,導(dǎo)入到服務(wù)器端以供調(diào)用。pickle模塊可以將數(shù)據(jù)對象保存到文件,在調(diào)用時可通過讀取.pkl文件重構(gòu)成python對象。
用戶在線上傳需檢測的金屬試件信號文件,后臺得到文件后對其進行特征提取,將提取好的特征輸入到10個模型中,對得到的預(yù)測結(jié)果加和求均值,得到的數(shù)值則為系統(tǒng)預(yù)測的金屬硬度,后臺將金屬硬度傳遞到前端的展示頁面,從而完成了在線檢測功能。
本系統(tǒng)采用的開發(fā)模式為MTV模式,進系統(tǒng)分為3個部分:模型(Model)、模板(Template)和視圖(View)[13],其中模型是數(shù)據(jù)存取層,處理與數(shù)據(jù)相關(guān)的業(yè)務(wù),負責業(yè)務(wù)對象和數(shù)據(jù)庫的關(guān)系映射(ORM);模板是展示層,負責如何把頁面展示給用戶(html);視圖是業(yè)務(wù)邏輯層,負責業(yè)務(wù)邏輯,并在適當時候調(diào)用Model和Template。這種開發(fā)模式關(guān)鍵的優(yōu)勢在于各種組件都是松耦合的。這樣,每個由 Django驅(qū)動的Web應(yīng)用都有著明確的目的,并且可獨立更改而不影響到其它的部分。
用戶可以在此模塊對系統(tǒng)中提供的信息進行查詢,包括金屬試件的硬度信息的查詢和金屬試件信號文件的下載,如圖3所示。
圖3 信息查詢頁面展示
本模塊需要管理員權(quán)限才能使用,管理員可以查詢與管理用戶和試件信息,包括對信息的增查改刪,并均已彈窗的方式進行展現(xiàn),如圖詢用戶信息并對用戶進行一系列操作,包括對現(xiàn)有用戶的編輯與刪除和新增用戶,如圖4(a)和4(b)所示。
圖4 信息管理展示
在本模塊中,用戶可以通過上傳金屬試件的巴克豪森噪聲文件進行硬度檢測。頁面詳情如圖5(a)所示,首先點擊“選擇文件”按鈕,從本地選擇待檢測文件并上傳,后臺讀取到文件后對文件進行特征提取,將提取的特征輸入到離線訓(xùn)練好的10個改進的BP神經(jīng)網(wǎng)絡(luò)模型中,加和求均值后將最后的結(jié)果展現(xiàn)在頁面上,如圖5(b)所示。
圖5 在線檢測模塊
基于Django框架,結(jié)合MySQL數(shù)據(jù)庫和改進BP神經(jīng)網(wǎng)絡(luò)模型,設(shè)計并開發(fā)了一套在線硬度檢測系統(tǒng)。系統(tǒng)包括用戶和管理員兩個權(quán)限,提供了金屬信息查詢、金屬試件巴克豪森噪聲文件下載、用戶信息維護管理和金屬硬度檢測功能。經(jīng)試驗證明,系統(tǒng)有如下幾個優(yōu)點:第一,使用了新的硬度檢測方法,在測試集(共有180個測試樣本)中的均方誤差為82.4,而傳統(tǒng)算法的均方誤差為229.8,說明本方法完全優(yōu)于傳統(tǒng)方法;第二,系統(tǒng)能夠極大的方便金屬硬度檢測過程,并可以對金屬數(shù)據(jù)進行有效的存儲與調(diào)用下載,解決了以往數(shù)據(jù)管理不規(guī)范的問題;第三,系統(tǒng)搭建使用了Django,此框架方便部署,強大的緩存技術(shù)提高了頁面的加載速度,使得用戶獲得了更好的使用體驗。綜上所述,基于Django的金屬在線硬度檢測系統(tǒng),在金屬試件硬度檢測方面有著廣闊的應(yīng)用場景。