蘇鈺桐,楊煒毅,李俊霖
(中國礦業(yè)大學 信息與控制工程學院,江蘇 徐州221008)
現(xiàn)有的研究表明巖體內部的結構面分布決定了巖體的穩(wěn)定性[1-2]。在煤礦生產(chǎn)過程中,為了評價巷道圍巖穩(wěn)定性,常采用煤巖體鉆孔窺視的方法了解圍巖裂隙發(fā)育狀況[3-4],目前鉆孔圖像的裂隙識別、分類等工作多采用人工的方式。由于鉆孔圖像數(shù)量較多,工作量大,容易由于人為差別造成漏識別或識別誤差[5]。采用機器智能識別可以有效減少誤差,提高工作效率。
煤巖體鉆孔裂隙機器識別的核心任務是確實裂隙分布的位置和大小,針對該問題,王川嬰[6]通過觀察鉆孔圖像上裂隙的產(chǎn)狀,將正弦函數(shù)作為特征函數(shù),提出了一種鉆孔圖像結構面識別方法,可以有效識別產(chǎn)狀為正弦曲線的裂隙。夏丁[7]等首先對鉆孔圖像進行預處理,獲取目標區(qū)域,采用低精度Hough變換快速檢測和聚類算法計算出結構面的傾向、傾角等信息。對于破碎的巷道圍巖,其圍巖內部裂隙并不都是呈正弦曲線狀,以上方法不能有效的識別非正弦曲線裂隙。為了解決這個問題,鄒先堅[8]為了識別鉆孔圖像非正弦曲線特征裂隙,提出一種針對全景鉆孔圖像的結構面全自動識別方法,把非正弦曲線裂隙劃分到距離最近正弦曲線裂隙中,以保證識別的完整性。針對非正弦結構狀裂隙,李立[9]等基于自適應HSV 顏色空間模型,提出了鉆孔圖像中溶隙結構識別方法,此方法能對鉆孔圖像上的溶隙和土質層進行定位和識別。針對鉆孔錄像橫向截圖,鄧兆鵬[10]等提出了一種基于改進的區(qū)域生長和Hough變換的鉆孔孔壁圖像水平裂隙識別算法,該裂隙識別算法對于不同的水平裂隙和離層圖像都可以準確、自動地檢測出裂隙。目前采用卷積神經(jīng)網(wǎng)絡進行鉆孔圖像裂隙識別鮮有報道。
卷積神經(jīng)網(wǎng)絡(Convolutional Neural Networks,CNN)是一種深度學習模型或類似于人工神經(jīng)網(wǎng)絡的多層感知器,在圖像處理領域應用廣泛,它可以將大數(shù)據(jù)量的圖片降維成小數(shù)據(jù)量,并保留圖片特征,符合圖片處理的原則[11]。相比通用的目標檢測任務,煤礦井下鉆孔孔壁展開圖像質量低,裂隙辨識度低,特別是煤體裂隙,需要將裂隙準確檢測出來,這對目標檢測算法的準確度提出了更高的要求。綜合考慮,采用同時兼顧速度和檢測精度的YOLO v3 算法,并建立煤巖體鉆孔圖像裂隙智能識別模型[12]。
鉆孔圖像裂隙檢測過程如圖1。
YOLO v3 算法采用一個單獨的卷積神經(jīng)網(wǎng)絡模型實現(xiàn)end-to-end 的目標檢測,先將圖片分成S×S個網(wǎng)格單元(gird cell)進行圖像特征提取。每個單元格會預測B 個邊界框(bounding box)以及邊界框的置信度C(confidence score)。每個邊界框包含x、y、w、h 和置信度C 共5 個值,其中:x、y 為邊界框中心點的置;w、h 為邊界框的寬度和高度。置信度包含2個方面:①這個框中目標存在的可能性大小Pr(obj),若框中沒有裂隙,則Pr(obj)=0,若含有裂隙則Pr(obj)=1;②這個邊界框的位置準確度,采用IOU(交并比)的方法判斷邊界框的位置的準確度,即預測的框與真實框(ground truth)合并面積交并比記做IOU(intersection over union),IOU 計算示意圖如圖2。置信度為這個方面取值的乘積,置信度用來評判預測最準確的邊界框。當多個邊界框檢測到同一目標時,通過非極大值抑制(NMS)來選擇最終的結果,NMS 就是通過打分來選出最好的結果,與這個結果重疊的對象去掉,是一個不斷迭代的過程。
圖2 IOU 計算示意圖Fig.2 IOU calculation diagram
YOLO v3 目標邊界框坐標的預測過程如圖3,圖中σ 函數(shù)是sigmoid 函數(shù),其目的是將預測偏移量縮放到0 到1 之間。假設1 個網(wǎng)格相對于圖像左上角的偏移量是cx和cy,邊框的寬度和高度分別為pw和ph。圖中虛線矩形框為錨框(anchor box),實線矩形框為通過網(wǎng)絡預測的偏移量計算得到的預測邊界框(bounding box),錨框與預測邊界框的對應關系如圖中公式所示。預測偏移量(offsets)用tx、ty、tw、th表示,其中tx、ty是預測的坐標偏移值,tw、th是尺度縮放。偏移量根據(jù)原圖尺寸進行歸一化處理,可以有效的確保目標中心處于執(zhí)行預測的網(wǎng)格單元中,防止偏移過多。
圖3 目標邊界框位置的預測過程Fig.3 Prediction process of target bounding box position
YOLOv3 架構圖如圖4。YOLO v3 調整了網(wǎng)絡結構,圖像特征提取采用的是Darknet-53 的網(wǎng)絡結構,含有53 個卷積層,并借鑒了殘差網(wǎng)絡的做法,在一些層之間設置了快捷鏈路(shortcut connections),并增加了跳層的殘差模塊。YOLO v3 利用多尺度特征進行對象檢測,網(wǎng)絡在3 個不同尺度特征圖中(82、94、106 層)進行對象檢測。同時在每個尺度的特征圖的每個網(wǎng)格設置3 個先驗框。使用Logistic 取代Softmax 進行對象分類,支持多標簽對象。YOLO v3進行5 次下采樣提取特征,輸出3 個不同尺寸的特征圖。然后在85 層進行上采樣,同樣的操作在98層。
圖4 YOLO v3 架構圖Fig.4 The architecture diagram of YOLO v3
YOLO v3 的損失函數(shù)置信度損失和分類損失為二值交叉熵損失,其能刻畫2 個概率分布之間的距離,也就是說,交叉熵值越小,2 個概率分布越接近,同時利用sigmoid 將神經(jīng)網(wǎng)絡的輸出映射到一個(0,1)區(qū)間[13]。YOLO v3 的損失函數(shù)定義如下:
挑選不同煤礦井下頂板300 張鉆孔圖像作為樣本,采用開源工具LabelImg 軟件綠色矩形框對鉆孔圖像的裂隙進行人工標記、注釋和編號,制作VOC 2007 數(shù)據(jù)集,將xml 格式文件全部放入Annotations文件夾,將所JPEG 格式圖片文件放入JPEGImg 文件夾中,然后將文件夾中20%的圖片作為驗證集,80%圖片作為訓練集,其中1 號孔~6 號孔鉆孔圖像裂隙分布數(shù)據(jù)集如圖5。
圖5 鉆孔圖像裂隙分布數(shù)據(jù)集Fig.5 Fractures distribution data sets of borehole image
在目標檢測中xml 格式訓練數(shù)據(jù)的標簽通常是基于絕對坐標的表示方式的,而在訓練的過程中通常會有尺度大小的變換,這就需要將邊框坐標轉換為歸一化后的形式,即txt 格式數(shù)據(jù),轉換如式(2),通過編寫Python 小程序轉后的txt 格式文件分別包含類別序列(label),標注邊界框(ground truth)中心點x 方向坐標,目標中心點y 方向坐標y,標注框寬w,標注框高h。
式中:xmax、ymax為邊框右下角坐;xmin、ymin為邊框左上角坐標;a、b 分別為圖像寬和高。
基于TensorFlow 及Keras 框架搭建神經(jīng)網(wǎng)絡,試驗采用DarkNet53 深度學習框架。計算機配置為Intel Core i7-8700H CPU,2.20 GHz 6 核12 線程,顯卡為NVIDIA Quadro P1000 4GB 獨立顯卡,32 G 內存,所有程序均在Windows 10 系統(tǒng)下用Python 3 語言編寫,圖像顯示處理調用OpenCV 庫、數(shù)據(jù)計算調用CUDA、CuDNN 等。
采用k-means 算法對訓練集上的預測框(boudnding box)尺度做聚類,圖像轉換為416×416 像素,以適于YOLO v3 的輸入。然后再分成13×13 像素的網(wǎng)格單元,以便于輸入網(wǎng)絡進行訓練。以1 幅圖像為1 個批次,每訓練1 批圖像,更新1 次權值參數(shù)。權值的衰減速率(decay)設為0.000 5,學習率調整策略采用steps,動量因子(momentum)設為0.9,最大訓練次數(shù)設置為50 020,初始學習率(learning rate)設為0.000 1。在開始訓練時設置burn_in 參數(shù)用于穩(wěn)定模型,burn_in 設置為1 000 在迭代次數(shù)為40 000和45 000 時,學習率降低為初值的10%和1%,使模型在訓練后期振蕩減小,從而更加接近最優(yōu)解。
在訓練過程中,通過繪制模型損失曲線觀察訓練動態(tài)過程,損失函數(shù)的輸出結果如圖6。由圖6 可看出,模型在前期迭代中損失值快速縮減,模型快速擬合,第1 個循環(huán)結束損失值下降至53,第11 次循環(huán)時,損失值收斂至35 時,不在變化,結束訓練。
圖6 損失函數(shù)的輸出結果Fig.6 Output results of loss function
訓練完成后,將測試集分別輸入到訓練好的網(wǎng)絡模型中進行測試驗證,得到目標檢測算法對測試集中鉆孔圖像裂隙的檢測結果,識別速度為2 s 左右,裂隙識別結果如圖7(圖7 中橫坐標為x 像素坐標,縱坐標為y 像素坐標),裂隙識別位置信息見表1。
圖7 裂隙識別結果Fig.7 Recognition results of fractures
表1 裂隙識別位置信息Table 1 Location information of fracture recognition
由圖7 可以看出,鉆孔圖像上的裂隙基本被識別出并進行了標記。從圖7(a)可以看出,不僅橫向裂隙別識別出來,縱向裂隙也被識別出;從圖7(b)可以看出,對于裂隙分布比較密集的鉆孔圖像,所有裂隙均被識別出來,識別精度較高;從圖7(c)可以看出,對于裂隙分布不明顯的圖像,不明顯裂隙均被識別出;從圖7(d)可以看出,由于鉆孔設備造成的類似裂隙痕跡的完整鉆孔圖像,識別結果為無裂隙,表明網(wǎng)絡模型具有一定的抗干擾能力。表1為程序自動生成的裂隙坐標位置與裂隙率,可以大概估計裂隙數(shù)量和裂隙分布面積,有助于評價巖體穩(wěn)定性。
為了實現(xiàn)煤巖體中各種特征裂隙智能快速識別,提出了基于深度神經(jīng)網(wǎng)絡YOLO v3 算法的裂隙檢測方法。方法采用最新Darknet-53 網(wǎng)絡模型,增加跳層的殘差模塊以改進網(wǎng)絡結構,同時融合多維度特征。試驗結果表明YOLO v3 算法可以快速識別鉆孔圖像不同發(fā)育特征裂隙,滿足煤巖體裂隙檢測的要求。