周思雨,儲岳中,張學鋒
(安徽工業大學 計算機科學與技術學院,馬鞍山 243032)
在燒結礦生產中,燒結礦的FeO 含量是燒結礦強度的一個關鍵因素. 當FeO 含量較高時,會導致燒結礦還原性能變差,從而影響燒結礦的強度. 一個燒結礦的氣孔數量和面積可以判斷其FeO 含量,因此檢測燒結礦氣孔數量和面積是很重要的研究方向. 傳統的檢測氣孔數量和面積的方法是通過人工進行的,由于燒結礦數量多,導致工作量大,使得檢測困難. 因此,很多小型企業只是對氣孔進行粗略的觀察,并沒有進行正規檢測和記錄.
隨著科學技術的發展,自動化以及信息化等技術逐步應用到工業領域中. 各種圖像分割技術應用到工業中,文獻[1,2]都是利用圖像分割,對礦石進行粒度檢測. 文獻[3]利用圖像分割技術進行鋼鐵的缺陷檢測. 針對傳統圖像分割,常用的方法有閾值分割[4]、邊緣檢測[5]、形態學分水嶺算法[6]、Hough 變換算法和輪廓查找算法[7]等. 由于燒結礦氣孔的圖像存在氣孔形狀不規則、輪廓不清晰、氣孔相互粘連,增加了氣孔的分割難度,從而出現了很多改進傳統的分割算法的研究,如針對粘連圖像進行分水嶺算法的改進[8]. 近年來,運用卷積神經網絡對圖像進行分割,具有很大的優勢并取得了較大的進展[9,10]. Shelhamer 等[11]提出的全卷積網絡(FCN)使得語義分割得到了快速發展,該網絡相比傳統的CNN 分割的網絡更加高效,減少了像素塊帶來的冗余存儲和計算. Ronneberger 等[12]提出的UNet網絡主要用于生物醫學圖像的分割,使用小數據集訓練得到不錯的結果,使得很多研究者關注. Zhou 等[13]提出了UNet++使用密集跳躍連接,通過疊加不同層次的特征,減小了編碼特征和解碼特征之間的語義鴻溝.仝真等[14]提出結合殘差網絡的方式,形成Res-UNet 網絡進行圖像輪廓優化. 文獻[15]結合特征層密集連接的方式,提出Dense-UNet 模型用以改善分割性能. 這些網絡都是在UNet 網絡基礎上進行改進,存在著在上采樣時冗余和丟失部分特征,不適用于燒結礦氣孔細節特征分割.
為了獲得更高的準確度,本文提出先對原始燒結礦氣孔圖像進行OpenCV 圖像處理[16–18]后進行圖像分割. 為減少燒結礦圖像分割氣孔信息的丟失,在原始的UNet 上結合殘差連接和拼接連接的思想提出改進的編碼器,加強了氣孔輪廓邊緣特征的提取.
由于受到現場的光線、灰塵等因素干擾,需要對圖像進行去噪處理. 為減少干擾,只進行單個燒結礦的采集和處理. 圖像預處理的過程如圖1 所示.

圖1 圖像預處理的過程
通過對燒結礦圖像進行像素相加處理,如圖2(a),消除部分噪聲,提高像素亮度. 使用非線性濾波器中值濾波處理,如圖2(b),中值濾波對于消除圖像中的隨機噪聲和脈沖噪聲具有較好的效果,又能很好的保護細節信息[19]. 之后將圖像二值化,如圖2(c),增強了燒結礦圖像中氣孔和其他地方的對比度,看出燒結礦圖像上仍存在噪聲信息. 最后通過運用形態濾波,開運算和閉運算聯合,有效的去除二值圖像中存在的前景和背景噪聲,并在一定程度上平滑了邊界,如圖2(d).

圖2 圖像預處理
本實驗利用傳統的邊緣檢測算法和分水嶺分割算法對燒結礦圖像進行分割,基于邊緣檢測的圖像分割算法是通過檢測包含不同區域的邊緣來解決分割問題,是最先想到也是研究最多的方法之一. 分水嶺算法是一種基于拓撲理論的數學形態學的分割方法. 通過實驗,邊緣檢測算法對圖像中的噪聲進行了分割,將部分背景也分割成氣孔. 分水嶺算法存在著過度分割圖像的現象. 利用形態學的處理,結合開運算和閉運算的操作,減少噪聲再進行分水嶺分割,仍然存在燒結礦氣孔像素信息相近的背景進行了分割. 開運算是對圖像先進行腐蝕然后膨脹,閉運算是對圖像先進行膨脹后進行腐蝕. 式(1)是開運算的定義. 式(2)是閉運算的定義.

其中,X代表原圖,Y代表結構元,⊙是腐蝕操作,⊕是膨脹操作.
如圖3 所示. 由于傳統的分割方法需要找到最佳閾值,當分割不同燒結礦圖像時,都要改變閾值才能得到更好的效果,這個過程極其復雜. 傳統分割算法不具有靈活性,導致分割出來的氣孔誤差率較大. 所以不能很好地適用于燒結礦氣孔的分割.

圖3 傳統圖像分割
UNet 網絡最早是應用在醫學影像分割中,相比于另外幾種經典的語義分割網絡具有訓練數據量少并且精度高的特點,符合燒結礦氣孔分割的要求. 圖4 為UNet 網絡結構. 網絡由編碼器和解碼器兩個部分組成.編碼部分是通過Conv3×3 卷積、ReLU 激活函數和2×2 最大池化對輸入圖片進行降維和特征提取,使得特征圖的尺寸逐漸減小、特征維度逐漸增加. 解碼部分通過對特征圖進行2×2 轉置卷積以及1×1 卷積,使特征圖片尺寸增加,維度增加,加強了氣孔特征的細節提取. 解碼器與編碼器之間通過跳躍連接進行特征圖融合,使得不同層氣孔特征融合連接到解碼相對應層中,其中淺層特征用來分割氣孔,深層特征用來定位氣孔的位置,二者的有效結合有助于增加氣孔特征的多樣性. 因此,UNet 網絡非常適用于分割燒結礦氣孔圖像.

圖4 UNet 網絡結構
為獲取更多的燒結礦氣孔的信息和特征,可以通過加深網絡來實現. 用一種“短路” (shortcut connections)的模型來幫助多層的非線性的神經網絡的擬合[20].結合殘差結構思想解決網絡加深所帶來網絡退化的問題,使網絡可以加深到更深的層次,利用到更多的信息.

當輸入為xl時,學習殘差是F(xl),xl+1表示下一層輸入. 當殘差為0 時,此時堆積層僅僅做了恒等映射,此時把該處的深度忽略掉,這樣保證網絡性能至少不會下降. 但是實際上殘差不會為0,這也會使得堆積層在輸入特征基礎上能學習到新的特征,從而擁有更好的性能. 如果殘差映射F(xl)的結果的維度與跳躍連接xl的維度不同,對xl進行升維操作,兩個維度相同,然后進行相加計算. 如圖5 所示.

圖5 殘差結構
殘差結構可以認為是燒結礦氣孔圖像的信息,且圖像的信息可以直接進行傳遞,所以在卷積層上學到的東西就比較少,只是學習特殊的表達特征,而全部的信息是可以用殘差的另一個恒等式保存下來,一定程度上解決網絡退化問題,提升了梯度的反向傳播,使得網絡更容易訓練. 所以殘差結構使得網絡需要學習的燒結礦氣孔特征變少,容易學習.
由于殘差連接可以通過前后層特征相加實現特征重用,使訓練過程中梯度的反向傳播更容易. 為使燒結礦氣孔特征不容易丟失,可以采用拼接連接,當提取到新的特征的時候,拼接前面層特征. 所以,為了使燒結礦氣孔能更加準確地分割,本文提出了一種結合殘差拼接連接思想的模塊,在原始UNet 網絡的解碼器的基礎上,在進行一次卷積過后,將其結果直接與下一次卷積結果進行拼接,使氣孔特征更少地丟失,提取到更多的氣孔特征. 加入特征映射,將提取的原始氣孔特征和新的氣孔特征進行多尺度融合,使用1×1 的卷積進行相加操作. 最后將特征融合學習得到新特征進行輸出.

其中,X1和X2是通過BN (batch normalization)、ReLU、3×3 卷積操作得到的結果,C(·)是拼接函數. 通過將X1和X2特征進行拼接,能得到更多的燒結礦氣孔特征,且X1直接與輸出連接,在反向傳播過程中,使這部分傳遞的更容易. 輸入通過1×1 卷積操作,使與前面輸出維度相同,然后進行相加計算,最后輸出結果,如圖6.

圖6 擴展連接結構
UNet 網絡能夠高效地利用不同層的特征,但是作為獨立模型使用時還存在著很多不足,每一層提取特征使用了兩次Conv3×3 卷積 ,很多氣孔的細節信息丟失,分割效果較差,網絡層數還較淺,提取氣孔特征較少,使得特征學習次數也有限,表達性不強. 本文使用改進的殘差拼接連接結構作為特征提取模塊,結合UNet 網絡的設計思路,網絡結構如圖7 所示. 采用改進的殘差拼接結構Block 移植到編碼器部分,進行燒結礦氣孔特征的提取. 操作過程如下: 在特征提取部分,將得到的尺寸為512×512 燒結礦氣孔圖像輸入到改進的UNet 網絡特征提取模塊中,采用不同Block 模塊數量,加深網絡,形成多層特征融合,學習到更多的新特征,提取了更高級的燒結礦特征. 利用上采樣對燒結礦氣孔圖像進行還原圖像分辨率,使用特征復制拼接操作將特征提取部分和上采樣部分相同尺度的特征進行拼接融合. 上采樣部分的終層卷積使用Sigmoid 分類器目標分類函數,以提高學習效率,保證分類的準確率.本文方法可以有效地解決UNet 燒結礦氣孔特征遺失的問題,減少網絡參數并且很大程度上防止梯度消失和爆炸.

圖7 改進網絡架構
本文利用工業相機采集了尺寸為3024 像素×4032像素的燒結礦圖像200 張,并挑選出100 張作為數據樣本. 為增加訓練速度和效果,將燒結礦圖像裁剪成為512 像素×512 像素尺寸. 將數據集(100 張圖片)劃分為訓練集、驗證集和測試集,訓練集用以訓練模型,驗證集用以對模型進行調優工作,測試集用以測試模型的性能. 利用 labelme 對數據樣本進行標注,制作標簽集,樣本集與對應的標簽集即構成了新的數據集. 圖8(a)是原圖,圖8(b)是通過人工分割氣孔,進行標注的標簽圖像.

圖8 數據與標簽
原始的燒結礦圖像樣本是進行預處理過的數據集.為擴充樣本的數量,對訓練集和驗證集進行數據增強.通過隨機旋轉、翻轉和鏡像等處理將數據集擴充到200 張. 測試集不作處理. 用生成的樣本數據訓練網絡模型,模型初始設置中網絡模型權重為隨機值,批量大小設置為2,采用Adam 作為模型的優化器,學習率設置為0.000 01,訓練批次設置為100,損失函數使用經典的二分類交叉熵損失函數,如式(6)所示.yi表示樣本i的label,正類為1,負類為0,pi表示樣本i預測為正類的概率根據訓練集和驗證集的損失,來判斷網絡模型是否收斂.

實驗環境為Intel Xeon E5 v3 處理器,32 GB 內存,NVIDIA GeForce RTX 2080 Ti 11 GB 顯卡,采用CUDA 10.0
架構,使用PyTorch 深度學習框架,Python 3.6 語言編寫.
本文為了對燒結礦氣孔分割網絡性能進行評估,采用準確率(Accuracy)和Dice 系數(Dice)、平均交并比(MIoU)來量化分析本文算法分割結果,計算公式如式(7)–式(9):

式(7)和式(8)中,Rgt表示ground truth 的氣孔區域面積;Rpred表示本文算法預測的分割結果;TP表示算法圖和標準圖中各個氣孔像素均為1 的像素點數量;TN為結果圖和標準圖中像素值均為0 的像素點數量;FP表示測試結果圖中像素值為1 而標準圖像素值為0 的像素點數量;FN表示結果圖像素值為0 且標準圖像素值為1 的像素點數量. 式(9)中pij表示真實值為i,被預測為j的數量,k+1是類別個數(包含空類).pii是真正的數量.pij和pji則分別表示假正和假負.
由圖9 可知,改進的UNet 網絡(UNetnext)相較原始UNet 網絡,損失函數收斂的更快,并且收斂于更小的值,因此改進后的UNet 網絡具有更高的訓練效率.

圖9 網絡訓練過程的損失函數
為了驗證本算法的分割能力,本文選取傳統的UNet和具有密集連接的UNet++進行對比實驗,其中各網絡的數據集和參數設置與本文算法相同,計算得到各模型網絡的精度評價指標.
從表1 評價指標可知,UNet 網絡準確率達到95.55%,UNet++網絡準率達到95.73%,改進網絡準確率達到95.56%,可以看出,各網絡的準確率都很高,可能是由于前景氣孔面積過小,導致分割的準確率都高,并不能說明氣孔分割的準確. UNet++網絡的MIoU和Dice系數高于原始的UNet 網絡,說明密集連接提取到了更多的燒結礦的特征. 改進的網絡模型的MIoU和Dice系數也優于原始的UNet 網絡,改進的殘差拼接連接提取到了更多的特征.

表1 網絡模型的評價指標 (%)
為了測試本文改進的模型網絡應用效果更好,進行可視化效果顯示,結果見圖10 所示. 每一行是一個燒結礦的樣本,圖10(a)為原始燒結礦圖像,圖10(b)為真值圖像,圖10(c)–圖10(e)分別為UNet、UNet++和本文網絡的分割結果.
從圖10 中虛線方框中可以看出,UNet 網絡可以大致分割出燒結礦的氣孔,但是由于氣孔輪廓模糊,很多氣孔都沒有分割出來,存在著欠分割現象,UNet++網絡由于存在密集連接使模型能在一定程度上提高了對細節部分的檢測能力,對輪廓模糊的氣孔進行了分割,但是對氣孔輪廓分割不夠精細,有些氣孔還存在了過分割的現象,相比,改進的網絡結合了殘差和拼接連接,更準確地分割燒結礦氣孔.

圖10 網絡分割效果
將前面的輪廓圖二值化. 利用 OpenCV 的相關算法獲取各個模型算法輪廓圖的參數,利用findContours函數算法,檢測出每個圖像中的輪廓的個數,由于燒結礦氣孔大小不一,統計沒有規律,設置一定的周長或面積的限制,排除特小的氣孔輪廓,再進行氣孔個數統計.
如表2 所示,通過與原始的圖像氣孔數量進行比較,改進網絡分割出來的燒結礦氣孔數量比OpenCV 改進的分水嶺算法檢測出的氣孔數更加準確,比UNet 和UNet++網絡分割出來的氣孔數量誤差率較小.

表2 各算法法分割氣孔的個數
本文通過傳統圖像分割算法分割燒結礦氣孔效果較差的不足,應用圖像語義分割技術,提出UNet 網絡,結合殘差和拼接連接的思想,分割燒結礦氣孔圖像. 利用擴展連接模塊將UNet 的每個子模塊替換,通過不斷增加提取模塊,進行多層特征融合,使得網絡在保持原本空間信息的情況下,獲取更多氣孔的局部特征. 使用殘差連接,解決了網絡退化的問題. 使用拼接連接,保證了更多的特征信息. 該思想能夠有效分割出氣孔區域,有利于更好判斷氣孔的占比和數量,對于燒結礦的燒結質量具有重要價值. 然而,由于燒結礦氣孔圖像樣本是人工標注,氣孔圖像不清晰等諸多因素的影響,改進后的網絡仍然存在氣孔邊緣輪廓不精確,錯把背景當成氣孔檢測出來等問題. 因此,后續模型的改進方向仍然是提升模型的分割精度,并且對氣孔實現更加精確的語義標注.