陳 力
(1 浙江農(nóng)林大學(xué) 信息工程學(xué)院, 杭州311300;2 林業(yè)感知技術(shù)與智能裝備國家林業(yè)局重點實驗室, 杭州311300)
由于木材無損檢測技術(shù)在古樹名木保護、木質(zhì)資源利用領(lǐng)域中存在著重要的研究意義和應(yīng)用價值,而迅速發(fā)展成一項實用技術(shù)[1]。 相比于傳統(tǒng)的破壞性檢測技術(shù),其非形變的優(yōu)勢突破了被測木材形狀和尺寸的桎梏,可以廣泛應(yīng)用于古建筑木材檢測、古樹名木保護、城市林業(yè)、木材加工等領(lǐng)域[2]。
21 世紀以來,研究者用一些傳統(tǒng)檢測技術(shù)在木材無損檢測領(lǐng)域做了一些嘗試。 孫吉男、李華等分別利用超聲波技術(shù)探測了紅櫟木材和永樂大鐘木結(jié)構(gòu)鐘架的內(nèi)部缺陷,為超聲波檢測木材內(nèi)部腐朽開了先河[3-4];楊學(xué)春、王立海以東北林區(qū)12 種樹種為對象進行實驗分析,證明了應(yīng)力波無損檢測系統(tǒng)檢測木材內(nèi)部缺陷的可行性[5];趙更寅利用X 射線在木材內(nèi)部的穿透能力,對原木內(nèi)部缺陷進行測定,為后人在該方向的研究上提供了理論前提和技術(shù)基礎(chǔ)[6]。 總結(jié)前期的研究均存在著檢測效率、檢測準確率、檢測成本等方面的不足。
隨著近些年計算機性能的發(fā)展,部分研究者采用機器學(xué)習(xí)算法結(jié)合傳統(tǒng)方法,構(gòu)建缺陷識別模型,顯著提升了木材內(nèi)部缺陷識別的準確度。 在此基礎(chǔ)上,本文將應(yīng)力波無損檢測技術(shù)和卷積神經(jīng)網(wǎng)絡(luò)結(jié)合,通過實現(xiàn)應(yīng)力波特征矩陣仿真程序來構(gòu)建特征矩陣圖像數(shù)據(jù)集——Eigen Matrix Net,用以生成深度學(xué)習(xí)模型,并用該模型實現(xiàn)木材內(nèi)部缺陷特征的識別[7]。
應(yīng)力波木材無損檢測技術(shù)基于應(yīng)力波特性,敲擊時木材中生成的應(yīng)力波在木材中以一定速率傳播,當木材內(nèi)部出現(xiàn)異常時,應(yīng)力波不能沿直線進行傳播,傳播時間會增加,即應(yīng)力波在木材中的傳播時間與傳播截面的紋理角、裂痕、空洞和腐朽等情況存在正相關(guān)[8]。
應(yīng)力波木材無損檢測設(shè)備的每個傳感器都是獨立的檢測通道,兩兩之間組成應(yīng)力波信號傳播通道來獲取數(shù)據(jù)。 如圖1 所示,當檢測裝備的傳感器數(shù)量為x 時,總信號通道數(shù)y 為x 的組合數(shù),見公式(1)。
圖1 應(yīng)力波無損檢測傳感原理示意圖Fig.1 Schematic diagram of sensing principle for stress wave nondestructive testing
因在每次敲擊傳感器后,該傳感器為該組數(shù)據(jù)的信號發(fā)起點,其余傳感器為該組數(shù)據(jù)的信號接收點,因此單次敲v(x1,x2)擊實際可獲得x × (x - 1) 個速度數(shù)據(jù),一次完整的實驗可獲取一個x ×x 的二維矩陣。 公式(2)為速度矩陣中坐標(x1,x2) 位置的速度數(shù)值;x1為信號發(fā)起點的傳感器編號, x2為信號接收點的傳感器編號。
其中,π ≥θ =∠( x1,x2) ,S 為橫截面的周長。
一次木材無損檢測實驗最終得到的矩陣公式(3):
應(yīng)力波速度特征矩陣在轉(zhuǎn)化為特征矩陣圖的過程中,首先需要對矩陣進行歸一化處理,使數(shù)值間的絕對值關(guān)系轉(zhuǎn)化為相對值關(guān)系。 通過公式(4)將原矩陣A 轉(zhuǎn)化為處理完成的矩陣B。
其中A(xi,xj)為原矩陣中坐標 ( xi,xj) 位置的數(shù)值;B(xi,xj)為處理后矩陣中坐標 ( xi,xj) 位置的數(shù)值; AMIN和 AMAX分別表示去除了坐標為A(xi,xj)(i =j(luò)) 后矩陣A 中數(shù)值的極值。
將矩陣B 各值以顏色通道對應(yīng)表示上色,轉(zhuǎn)化為特征矩陣圖,整個轉(zhuǎn)化過程如圖2 所示。
仿真程序基于pyhton 開發(fā),桌面端程序的開發(fā)應(yīng)用了pypi 里的wxPython 界面庫來開發(fā)前端界面。整體系統(tǒng)設(shè)計采用了MVC 模式,使用MVC 框架的目的是將View 和Model 的實現(xiàn)進行代碼分離,從而使仿真程序可以使用不同的表現(xiàn)形式。 即保持系統(tǒng)全程低耦合度,系統(tǒng)設(shè)計框架如圖3 所示。
圖2 應(yīng)力波速度矩陣轉(zhuǎn)化特征矩陣圖Fig.2 Stress Wave Velocity Matrix Transform to Eigen Matrix
圖3 仿真程序系統(tǒng)設(shè)計框架Fig.3 System Design Framework of Simulator
系統(tǒng)分為以下幾個模塊:
(1)Model(模型)。 用于處理應(yīng)用程序數(shù)據(jù)邏輯的部分。 模型對象主要負責(zé)在數(shù)據(jù)庫中存取數(shù)據(jù),包括記錄用戶操作、傳輸數(shù)據(jù)、將左側(cè)繪圖區(qū)的缺陷特征信息以數(shù)據(jù)的形式保存下來并傳輸?shù)接覀?cè),以及記錄、保存圖片和相關(guān)標注信息。
(2)View(視圖)。 是仿真程序中處理數(shù)據(jù)顯示的部分。 程序中負責(zé)展示仿真程序生成的圖像和效果。
(3)Controller(控制器)。 是仿真程序中用以處理用戶交互的部分,控制器負責(zé)從視圖當中讀取數(shù)據(jù)、向模型發(fā)送數(shù)據(jù)并控制用戶輸入。
如圖4、圖5 所示,仿真程序共包含3 個區(qū)域,分別為繪畫區(qū)、展示區(qū)和選擇區(qū),下方是選擇區(qū),其中包含了空洞、裂縫、腐朽3 種不同的缺陷類別可供選擇。 當選擇空洞時,將用戶輸入的2 個點具象為缺陷圓心和缺陷圓周上的點,以此確定缺陷在坐標軸上的位置和大小,并在繪畫區(qū)以白色的圓表示出來,從而和灰色的背景區(qū)別開來。 與此同時,右側(cè)展示區(qū)將最終的特征矩陣圖展示出來,并可以保存到預(yù)設(shè)路徑中。 選擇裂縫和缺陷流程類似。
圖4 仿真程序界面Fig.4 Interface of simulation program
圖5 仿真程序運行效果Fig.5 Running effect of simulation program
該程序左上角功能菜單中有清除功能、保存功能、自動保存功能(如圖6 所示)。
圖6 仿真程序功能菜單Fig.6 Simulator Function Menu
其中,清除功能主要用于清理繪畫區(qū)和展示區(qū)的圖像,恢復(fù)初始狀態(tài),以方便用戶再次工作。 保存功能將展示區(qū)的特征矩陣圖以png 格式保存到系統(tǒng)預(yù)設(shè)的路徑中。 同時,目錄中還會針對每張?zhí)卣骶仃噲D生成對應(yīng)的xml 格式的標注文檔(如圖7 所示),該標注文檔中記錄了特征矩陣圖中的缺陷特征信息,免去深度學(xué)習(xí)訓(xùn)練時人工手動標注的困擾。自動保存功能是仿真程序的核心功能,可以在繪圖區(qū)隨機設(shè)定缺陷位置、缺陷形狀(針對裂縫和腐朽類型缺陷)和缺陷大小,并將生成的對應(yīng)展示區(qū)的特征矩陣圖像自動保存到系統(tǒng)預(yù)設(shè)的路徑中。 自動生成圖片的張數(shù)由程序預(yù)先設(shè)定,因此可以批量生成大量的特征矩陣圖像,滿足深度學(xué)習(xí)訓(xùn)練需要。
圖7 特征矩陣圖標注文檔Fig.7 Eigen matrix graph Tagging document
本文基于python 開發(fā)實現(xiàn)應(yīng)力波特征矩陣仿真程序,通過程序構(gòu)建了一個特征矩陣圖像數(shù)據(jù)集——Eigen Matrix Net,在使用卷積神經(jīng)網(wǎng)絡(luò)Faster R-CNN訓(xùn)練該圖集后,根據(jù)生成模型對木材內(nèi)部缺陷的實際識別效果驗證可以得出:該程序生成的仿真數(shù)據(jù)能較好地代替真實數(shù)據(jù),取得了滿意的應(yīng)用效果。