(北京工業大學 信息學部,北京 100124)
隨著我國建造業的蓬勃發展,人們對于金屬零部件的品質和使用壽命越來越關注,而其中最為重視的當為金屬的硬度。硬度是指金屬材料抵抗形變或破壞的能力,是判斷金屬材料軟硬程度與品質的重要指標。金屬硬度的檢測方法大致可分為兩種:有損檢測與無損檢測。有損檢測是指通過破壞性的方法獲得金屬的硬度信息,例如靜壓、拉伸等。但這些方法或多或少都會對金屬本身造成破壞性影響,既費時又昂貴,并且不能應用于正在服役的金屬器件。因此無損檢測這種不會損壞金屬本身的硬度檢測方法被人提出。
金屬的無損檢測是利用物質的聲、光、磁和電等特性,來對金屬特性,缺陷等一系列信息進行檢測,而在這個過程中并不破壞或不影響檢測對象的使用性能[1]。常用的無損檢測方法包括電阻應變發、超聲波檢測法、微磁檢測法等,在上述的方法中,使用微磁信號進行無損檢測較為常用[2],而巴克豪森噪聲信號就是一種典型的微磁信號。巴克豪森噪聲信號是由德國科學家H.Barkhausen于1919年發現的可測噪聲信號,巴克豪森噪聲信號是由于外加磁場變化導致磁疇壁的不連續運動導致的[3],這些不連續的運動會產生一種類似于噪聲的信號。巴克豪森信號會受金相,含碳量,晶格尺寸等一系列因素[4-5]的影響。對于金屬外在屬性來說,巴克豪森噪聲與金屬的硬度,殘余應力等特性有關,大范圍的應用于金屬硬度的無損檢測中。
Aki Sorsa等人[6]初步建立了以信號預處理、特征提取、基于wrapper的特征挑選、回歸分析四步為核心的材料性能預測方法;南京航空航天大學的王平等人[7]提出了巴克豪森信號新的特征值——峰寬比,引入了新的概念——半高全寬, 即包絡線的峰值與半高全寬之比,將這些特征與以往的經典時域特征相結合輸入到BP神經網絡中,利用得到的模型構建了一套鐵磁材料的應力和硬度進行驗證性檢測的系統,然而這些系統并沒有采用線上的方式進行檢測。
本文設計的基于Django的金屬在線硬度檢測系統,以輕量級web框架Django為基礎,利用機器學習的方法,對金屬的巴克豪森噪聲信號進行信號分析與特征提取并訓練,將訓練好的模型加載到系統中以供硬度檢測,并且在系統中加入巴克豪森噪聲信息管理功能,可以上傳或下載巴克豪森噪聲信息文件,極大的方便了金屬硬度檢測的過程。
系統采用的是瀏覽器/服務器結構,使用權限分為兩種,分別是用戶權限和管理員權限,在登錄時為兩種權限提供兩個界面。系統為用戶提供的是用戶主界面,可用來在線檢測和查詢金屬試件信息。系統為管理員提供的是管理員主界面,除了包括用戶權限的所有功能之外,可以對用戶信息和金屬試件進行維護工作。
用戶首先通過瀏覽器向系統服務器發出HTTP請求,Django接受到這個請求后會將它轉化為然后該對象被傳遞給 Request中間件處理,如果該中間件返回了Response,則直接傳遞給Response中間件做收尾處理,否則的話 Request中間件將訪問URL映射文件。在Django框架中,url.py文件定義了系統中所有的URL路由表,通過正則表達式的方法匹配對應的URL-pattern,從而調用對應的處理函數。本項目全部的處理函數被定義在view.py文件中,根據不同的請求調用view.py文件中指定的函數,從而實現用戶的請求。當處理函數需要訪問數據庫時,Django框架通過內置的MySQL適配器訪問本系統的MySQL數據庫,將需要的數據取出并加載到用戶請求對應的模板頁面上,經過渲染成HTML代碼后響應給瀏覽器,最終展示給用戶。
整個系統包括兩部分:用戶系統和管理員系統,在登錄模塊可以識別用戶類型。
用戶系統分為兩個子模塊,分別為試件信息查詢模塊和硬度檢測模塊。用戶可以通過上傳金屬試件的巴克豪森噪聲信號文件進行在線的金屬硬度檢測,并可以查詢存儲在系統中的金屬試件信息,系統還為用戶提供了文件下載功能,可以獲取平臺提供的已經標注硬度的金屬試件的巴克豪森噪聲信號文件,以供用戶分析與研究。
管理員系統分為3個子模塊,分別為用戶信息管理模塊、試件信息管理模塊和硬度檢測模塊。管理員具有比用戶更高的權限,除了擁有在線硬度檢測和試件信息查詢功能外,還可以對用戶信息、金屬試件信息、金屬試件的巴克豪森噪聲信號文件進行管理,管理員可以添加、刪除、修改、查詢用戶的信息和金屬試件信息,上傳新的金屬試件的巴克豪森噪聲信號文件到系統服務器中,擴充系統的金屬試件樣本數量。下面對上述的子模塊從系統登錄模塊、信息管理模塊和硬度檢測模塊詳細介紹本系統。
為了實現既能隨時修改與添加存儲于系統中的金屬試件信息又能防止這些信息被非專業人員隨意修改,本系統設立了管理員和用戶兩個權限,系統登錄模塊就是實現在進入系統時區分兩種權限,這個模塊設計的好壞直接影響著用戶體驗與系統的安全性能。系統登錄的業務邏輯如圖1所示。
有效管理的課堂是指運行順利、時間使用經濟、學生能夠充分獲得學習機會的課堂。學生在學習之前需要一些必要的指導,比如該如何做、什么時候可以以什么樣的方式在教室里活動、該坐在哪里、什么時候可以或不可以打斷教師說話、音量不能超過多少分貝,等等。如果缺乏相關引導,那么教師的教學無法開展,學生的學習也無法取得成效。

圖1 系統登錄邏輯圖
在系統登錄界面需要填寫兩個信息,分別是Username和Password,提交后前端將兩個數據傳遞到后臺,與MySQL數據庫中存儲的用戶信息和管理員信息進行比較,若Username不存在,則返回用戶名錯誤,若Username正確但Password錯誤,則返回密碼錯誤,全正確后會會根據被賦予的不同權限進入各自的系統。
信息管理模塊的主要功能是實現管理員對系統中所有信息進行維護管理,包括用戶信息與金屬試件信息。由于本系統的Django框架在與數據庫交互上采用的是ORM(Object Relational Mapping)機制,可以根據對接的數據庫引擎,翻譯成對應的sql語句,無需專門編寫數據庫訪問層代碼,直接編寫python代碼即可。在用戶信息管理模塊中包括用戶名和密碼兩個信息,管理員可以對現有的用戶進行編輯與刪除操作,也可以添加新的用戶;在金屬試件信息管理系統中包括試件原號、維氏硬度和巴克豪森噪聲文件,試件原號、維氏硬度與用戶的用戶名和密碼操作相同,均為文本信息,在這里需要特別說明的是巴克豪森噪聲文件。作為金屬試件硬度檢測的依據,系統會為每一個用戶提供試件的巴克豪森噪聲文件以供研究使用。管理員可以對信號文件進行上傳與刪除處理,將上傳的文件放在服務器指定的路徑中,并與試件通過試件原號進行綁定,使得用戶在需要時可以隨時下載。
本模塊是系統中最為核心的部分,完成了對用戶上傳的金屬試件樣本的硬度檢測功能。主要分為3個步驟:特征提取、模型訓練和在線檢測。
2.3.1 特征提取
根據閱讀華中科技大學羅教授的文章可知[9],對于不同硬度材料的巴克豪森噪聲的AR譜同階展開的峰值的高度會隨著硬度的變化而變化,并且不易于受其他因素(如塑性形變、殘余應力等)的影響,與硬度呈單一關系,比基于時域的信號分析方法魯棒性與準確性更強,因此本系統采用基于基于AR譜估計的信號分析方法。AR譜分析是利用AR模型計算隨機信號的能量譜、功率譜,即隨機信號自回歸分析,是一種被廣泛使用的現代功率譜計算方法[10]。AR譜估計分為三步:第一步,假設出于觀測的數據相符合的階數P,本系統為了更好的擬合數據,使用了5個階次的展開,分別是4、8、16、32、64;第二步,根據部分采集的數據去估計AR譜中的參數。在自回歸模型中,利用式(1)檢測一個時間序列{X(n)}中的未知數據點的數值:
(1)

Y=XA+ε
(2)
其中:
Y=[x(p),x(p+1), …,x(N)]T
(3)
A=[a1,a2,…,ap]T
(4)
(5)
(6)
上述公式中,N為輸入信號的總數量,a1,a2,…,ap為所求的AR譜特征參數,u(p),u(p+1), …,u(N)為白噪聲,T表示矩陣的轉置;根據最小二乘法原理可得到模型參數A的估計為:
A=(XTX)-1XTY
(7)
從而得到AR譜特征參數。
第三步,利用步驟二所得到的參數計算功率譜與能量譜。根據AR模型的假設,計算單邊功率譜密度根據式(8)即可得到:
(8)

經過上述步驟,p值分別取4、8、16、32、64,從而得到了巴克豪森噪聲5個階次的AR譜。但是因為采集到的巴克豪森信號的 AR 譜上峰的數量并不相同,特征維度不統一,所以無法直接使用特征選擇方法結合機器學習或神經網絡來進行自動預測。本發明先對AR譜求一階導,濾除噪聲。然后求二階導數,把一階導數的兩部分融合成一個谷,從而去除冗余信息,因此最后對于每一個巴克豪森噪聲信號來說,特征源是 AR譜信號的二階導數,而提取的特征分別的是AR 二階導數的每個谷的谷寬,谷深和谷值點所在的位置3個特征。得到上述特征后再使用kmeans算法對所有谷進行聚類,并按照每個谷所歸屬的類別對得到的特征進行編碼,規則為若一個有某類谷則標1,無則標0。從而將每個樣本的特征數量進行了統一。
2.3.2 模型訓練
本步驟的輸入為上一步得到的歸一化后的特征,將特征輸入到改進BP神經網絡。BP神經網絡是一種基于感知機的多層神經網絡,其主要特點是信號前向傳遞,而誤差后向傳播,通過不斷調節網絡權重值,擬合真實輸出[12]。但由于隨機初始權值的設定導致每次訓練的結果不同,使得BP神經網絡模型的性能不穩定,為了提高模型的魯棒性,本系統采用改進的BP神經網絡模型。改進BP神經網絡的方法是先采用行采樣的方式,每次抽取訓練集的75%作為訓練子集,一共采樣10次。經過這些子集就學習出10個BP神經網絡,將需要檢測的樣本分別放入其中,得到10個檢測結果,檢測結果求和取均值則為最終檢測結果,整體流程如圖2所示。本系統的模型是在離線環境下訓練的,訓練集為720個巴克豪森噪聲信號文件,標簽為金屬的硬度,單位是維氏硬度。

圖2 集成化BP神經網絡訓練流程圖
將此模型在測試集中進行測試,其中測試集包含180個信號文件作為測試樣本,測試結果的均方誤差為82.4,而傳統算法(使用巴克豪森噪聲信號的峰值、矯頑力、左半峰寬、右半峰寬、包絡線大于閾值的平均值、剩磁作為輸入特征)結果的均方誤差為229.8,說明本模型具有良好的性能。
2.3.3 在線檢測
通過上述的步驟訓練好模型后,需要將模型導入到服務端與系統對接。為了方便調用和數據模型的持久化存儲,本系統采用的方案是將上述訓練好的10個BP神經網絡模型通過python的pickle模塊保存成.pkl格式文件,導入到服務器端以供調用。pickle模塊可以將數據對象保存到文件,在調用時可通過讀取.pkl文件重構成python對象。
用戶在線上傳需檢測的金屬試件信號文件,后臺得到文件后對其進行特征提取,將提取好的特征輸入到10個模型中,對得到的預測結果加和求均值,得到的數值則為系統預測的金屬硬度,后臺將金屬硬度傳遞到前端的展示頁面,從而完成了在線檢測功能。
本系統采用的開發模式為MTV模式,進系統分為3個部分:模型(Model)、模板(Template)和視圖(View)[13],其中模型是數據存取層,處理與數據相關的業務,負責業務對象和數據庫的關系映射(ORM);模板是展示層,負責如何把頁面展示給用戶(html);視圖是業務邏輯層,負責業務邏輯,并在適當時候調用Model和Template。這種開發模式關鍵的優勢在于各種組件都是松耦合的。這樣,每個由 Django驅動的Web應用都有著明確的目的,并且可獨立更改而不影響到其它的部分。
用戶可以在此模塊對系統中提供的信息進行查詢,包括金屬試件的硬度信息的查詢和金屬試件信號文件的下載,如圖3所示。

圖3 信息查詢頁面展示
本模塊需要管理員權限才能使用,管理員可以查詢與管理用戶和試件信息,包括對信息的增查改刪,并均已彈窗的方式進行展現,如圖詢用戶信息并對用戶進行一系列操作,包括對現有用戶的編輯與刪除和新增用戶,如圖4(a)和4(b)所示。

圖4 信息管理展示
在本模塊中,用戶可以通過上傳金屬試件的巴克豪森噪聲文件進行硬度檢測。頁面詳情如圖5(a)所示,首先點擊“選擇文件”按鈕,從本地選擇待檢測文件并上傳,后臺讀取到文件后對文件進行特征提取,將提取的特征輸入到離線訓練好的10個改進的BP神經網絡模型中,加和求均值后將最后的結果展現在頁面上,如圖5(b)所示。

圖5 在線檢測模塊
基于Django框架,結合MySQL數據庫和改進BP神經網絡模型,設計并開發了一套在線硬度檢測系統。系統包括用戶和管理員兩個權限,提供了金屬信息查詢、金屬試件巴克豪森噪聲文件下載、用戶信息維護管理和金屬硬度檢測功能。經試驗證明,系統有如下幾個優點:第一,使用了新的硬度檢測方法,在測試集(共有180個測試樣本)中的均方誤差為82.4,而傳統算法的均方誤差為229.8,說明本方法完全優于傳統方法;第二,系統能夠極大的方便金屬硬度檢測過程,并可以對金屬數據進行有效的存儲與調用下載,解決了以往數據管理不規范的問題;第三,系統搭建使用了Django,此框架方便部署,強大的緩存技術提高了頁面的加載速度,使得用戶獲得了更好的使用體驗。綜上所述,基于Django的金屬在線硬度檢測系統,在金屬試件硬度檢測方面有著廣闊的應用場景。