桂方俊, 李堯
(中國礦業大學(北京) 機電與信息工程學院,北京 100083)
煤矸石分選是煤炭洗選加工的重要環節,主要有人工揀矸法、濕選法和干選法3種方式。人工揀矸法效率低,濕選法存在水資源浪費等問題,干選法是目前煤矸石分選領域的研究熱點[1],符合煤礦綠色發展的要求。煤矸石識別技術是煤矸石干選的核心技術,其原理是利用提取的樣本特征判斷當前被測物是煤還是矸石。煤矸石識別方法包括傳統方法和基于圖像處理的方法:① 傳統方法有放射性探測法、密度識別法等。放射性探測法根據煤和矸石對射線吸收程度不同進行識別,需要較高的執行速度,一定程度上受煤矸石含水量的影響,并且存在射線輻射問題。密度識別法通過光電技術獲取被測物質量和厚度,計算被測物密度,以此識別當前被測物為煤或矸石,該方法流程復雜且對設備要求高。② 基于圖像處理的方法成本較低、便于推廣,近年來應用廣泛,機器學習和深度學習是其中的兩大分支。機器學習方法通過圖像特征提取和分類算法識別目標,對應用場景的要求高,魯棒性差。深度學習方法通過提取圖像高維特征并進行推理,魯棒性好,準確率高,因而在煤矸石檢測領域被逐步推廣。
將深度學習應用到煤矸石檢測中的研究已取得一定成果。文獻[2]基于LeNet-5進行改進,實現了煤矸石圖像檢測和分類。文獻[3]通過AlexNet卷積神經網絡模型提高了煤矸石檢測的準確率。文獻[4]通過CornerNet-Squeeze深度學習模型提取特征,利用圖像灰度直方圖的三階矩特征參數對煤矸石進行分類,準確率顯著提升。上述方法雖然實現了煤矸石檢測,但在性能上與超快速的區域卷積神經網絡(Faster Region-Convolutional Neural Network,Faster R-CNN)[5]、單階段多框檢測器(Single Shot MultiBox Detector,SSD)[6]、YOLO(You Only Look Once)系列[7]算法相比還有一定差距。以Faster R-CNN系列為代表的兩階段算法對區域建議網絡和主體檢測網絡分別進行訓練,準確率高,但實時性表現不佳。以SSD,YOLO系列為代表的單階段算法將種類識別和目標定位視為一個回歸問題來解決,建立端到端訓練,具有較高精度,同時保證了實時性。文獻[8]將最新的YOLOv5算法改進后應用到煤矸石檢測中,通過提升模型的特征提取能力達到優化效果,但并未針對煤矸石檢測任務中的具體特性進行分析優化。
針對煤矸石檢測中存在的特征差異不大、目標密集等問題,本文在YOLOv5基礎上,通過卷積塊注意力模塊(Convolutional Block Attention Module,CBAM)、雙向特征金字塔網絡(Bi-directional Feature Pyramid Network,BiFPN)結構、Alpha-IoU函數對模型的各部分進行改進,提出了一種基于CBA-YOLO模型的煤矸石檢測方法,通過實驗驗證了該方法的有效性。
YOLO是一種基于深度神經網絡的目標檢測與定位模型,其最大特點是運行速度快,可在實時系統中使用[9]。YOLOv5是目前YOLO系列的最新版本,繼承了YOLOv4[10]算法的優勢,同時在主干網絡中引入跨階段局部(Cross Stage Partial,CSP)結構[11],進一步提升了圖像推理速度,模型結構更加小巧。YOLOv5共有4個版本,依據網絡大小排序分別為YOLOv5s,YOLOv5m,YOLOv5l,YOLOv5x,4種模型的性能如圖1所示。

圖1 YOLOv5模型的性能Fig. 1 The performance of YOLOv5 models
圖1 中,曲線越靠近左上角區域,表示模型的精度和速度越高。由圖1可知,YOLOv5s模型的速度快但精度低,YOLOv5x模型的精度高但速度最慢,YOLOv5m和YOLOv5l模型速度和精度很均衡,但YOLOv5l模型更大,綜合考慮算力、精度和速度,本文選用速度較快、精度較高的YOLOv5m為基礎模型。
YOLOv5模型主要由輸入端、Backbone、Neck、Prediction組成。CBA-YOLO模型在YOLOv5的基礎上進行了改進:在Backbone中加入CBAM,以聚焦特征差異,降低數據維度,提升檢測性能;將Neck部分改為BiFPN結構,以提高檢測速度;在Prediction部分,采用Alpha-IoU作為損失函數,以提高檢測精度。
在實際應用中,數據集通常包含大量小目標,小目標分布不均勻的問題很突出。YOLOv5采用Mosaic數據增強方式進行數據處理,針對小目標檢測問題,將4幅圖像以隨機縮放、隨機剪切、隨機安排的方式拼接在1張圖像里,以達到豐富數據集的效果。這種隨機處理的方式增加了小目標數量,增強了模型的魯棒性,同時減少了對GPU的占用,1個GPU就可獲得較好效果。
YOLOv5的Backbone由多個卷積模塊堆疊而成,缺點是無法聚焦特征差異,而煤矸石檢測任務中,煤和矸石目標特征差異不明顯。因此,在Backbone中加入CBAM進行改進,以聚焦特征差異。
注意力機制是深度學習中的一種數據處理方法,主要作用是忽略無關信息而關注重點信息,提升信息處理的效率和準確性。注意力機制通常分為空間注意力機制[12]、通道注意力機制[13]、空間和通道混合注意力機制[14]。CBAM屬于空間和通道混合注意力機制,其結構如圖2所示。

圖2 CBAM結構Fig. 2 Structure of CBAM
通道注意力模塊同時使用最大池化和平均池化,將多層感知器(Muti-Layer Perception,MLP)層分別應用于2個通道,經過sigmoid激活函數合并通道權重,最后逐通道加權得到attention結果。空間注意力模塊在通道重定義特征基礎上進行最大池化和平均池化,得到2個單通道的特征圖,再通過一個7×7的卷積形成特征圖,最后逐通道加權獲得attention結果。這2種模塊分別學習了通道的重要性和空間的重要性,CBAM將其串聯起來,可產生更有分辨性的特征表示,同時可降低數據維度,加速網絡推理過程。
改進Backbone結構如圖3 所示。原始大小為640×640×3的圖像輸入Focus結構,采用切片操作轉換成大小為320×320×12的特征圖,再經過一次32個卷積核的卷積操作,轉換成320×320×32的特征圖后輸入CBAM模塊。通過通道注意力模塊獲得通道注意力特征,確定每層特征圖上需要關注的重點內容;再通過空間注意力模塊獲得空間注意力特征,確定需要關注的重點位置;最后將串聯結果輸入后續的跨階段局部網絡層(Cross Stage Partial Network,CSPNet) 和空間金字塔池化(Spatial Pyramid Pooling,SPP) 結構中處理。

圖3 改進Backbone結構Fig. 3 Structure of improved Backbone
YOLOv5的Neck采用特征金字塔網絡(Feature Pyramid Network,FPN) + 路 徑 聚 合 網 絡(Path Aggregation Network,PAN)結構,如圖4(a)所示。該結構通過PAN增加一個自底向上的路徑聚合網絡,解決了傳統的自頂向下的FPN受單向信息流限制的問題。但是由于煤矸石檢測任務目標密集,單張圖像中目標眾多,計算量大,導致YOLOv5模型應用于煤矸石檢測任務時實時性不佳。為了保證煤矸石檢測任務的實時性,在Neck中引入BiFPN結構[15],如圖4(b)所示。

圖4 特征網絡結構Fig. 4 Structure of features network
改進方法:① 去除只有1條輸入邊的節點,得到1個簡化的雙向網絡,若1個節點只有1個輸入,沒有特征融合,則其對以特征融合為目標的特征網絡的貢獻較小。② 當原始輸入節點與輸出節點處于同一水平時,增加1條從原始輸入節點到輸出節點的額外邊,以在不增加成本的情況下融合更多特征;③ 將每個雙向(自頂向下和自底向上)路徑視為1個特征網絡層,并將多個特征網絡層進行疊加,以實現更高級的特征融合。
YOLOv5的Prediction由損失函數和非極大值抑制組成。損失函數用于衡量模型生成的預測框與真實框之間的重疊程度,交并比(Intersection over Union,IoU)[16]是一種常用的損失函數。非極大值抑制用于目標檢測的后處理過程中,針對多目標框的篩選,抑制非極大值元素,搜索局部極大值,去除冗余的檢測框,得到最終預測結果。YOLOv5的損失函數為GIoU[17],但是當預測框和真實框出現包含現象時,無法達到優化效果。文獻[18]采用CIoU作為損失函數,通過計算檢測框之間的歐氏距離而非其IoU,解決兩框包含時出現的問題,同時增加了檢測框尺度、長和寬的損失,使預測框與真實框更相符,但其結果相對固定,不能自適應地對高IoU目標和低IoU目標的損失和梯度進行加權。因此,本文引入權重系數α,用Alpha-IoU[19]替代CIoU作為預測目標的邊界框損失函數,其計算公式為

式中:I′為Alpha-IoU的值;I為IoU的值;ρ2(b,bgt)為預測框中心點b與真實框中心點bgt的歐氏距離;d為可以包含預測框和真實框的最小閉合區域的對角線長度;β為trade-off 的參數;γ為衡量框的長寬比一致性的參數;l為損失值。
根據目標的IoU值自適應地調整權重系數α,有助于檢測器更快地學習高IoU目標,從而提高目標檢測精度。
基于CBA-YOLO模型的煤矸石檢測流程如圖5所示。輸入圖像或視頻,對視頻進行逐幀讀取并轉換為圖片格式;通過自適應算法將圖像尺寸統一調整為640×640,輸入CBA-YOLO模型;通過Backbone、Neck、Prediction進行計算處理,得到煤矸石的相關信息,以數組的方式輸出檢測結果,數組結構為[檢測框左上坐標,檢測框右下坐標,類別,置信度]。

圖5 基于CBA-YOLO模型的煤矸石檢測流程Fig. 5 Flow of coal gangue detection based on CBA-YOLO model
為了驗證本文方法的有效性,在河北某煤礦選煤廠的選矸裝置上架設Blaser工業相機進行數據采集,并通過大功率LED面光源和光源控制器提供光照均勻、穩定的照明環境,如圖6所示。

圖6 圖像采集Fig. 6 Image acquisition
設置每隔2 ms采集1張圖像,共采集1 500 張圖像。為了達到更好的網絡訓練效果,選取1 245張質量較好的圖像作為數據集,用LabelImg標注軟件對數據集進行標注,按照8∶1∶1的比例劃分為訓練集、評估集和測試集3個部分,其中訓練集995張,評估集125張,測試集125張。數據集中包含單塊煤矸石圖像和多塊煤矸石圖像。
實驗軟硬件配置如下:計算機操作系統為Ubuntu16.04,CPU運 算 核 心 為Intel?CoreTMi5-8400CPU@2.80 GHz,GPU為GeForce GTX 2080Ti,NVIDIA驅動為CUDA10.2。算法基于Pytorch框架運行。實驗訓練參數設置如下:選用ADAM作為優化器;初始學習率為0.01,學習率周期為0.2,學習率動量為0.937;權重衰減系數為0.000 5,訓練的Batch_size為16,epoch為600。
對CBA-YOLO模型進行多次訓練,選取最佳模型用于評估。訓練完成后的損失函數曲線如圖7所示。損失值越小,預測結果越準確。由圖7可知,訓練輪次超過250后,損失值下降趨于平緩,損失函數曲線已經收斂,說明模型訓練效果良好。

圖7 訓練損失Fig. 7 Training loss
利用獲得的測試集進行消融實驗,實驗1-3分別在模型中引入CBAM,BiFPN結構和Alpha-IoU,實驗4-6采用2種改進方法。為了簡潔表達,取CBAM,BiFPN,Alpha-IoU的首字母,將添加單個CBAM模塊的模型稱為YOLO-C,添加CBAM模塊和BiFPN組合結構的模型稱為YOLO-CB,其他模型依此類推。
通過設置不同閾值,得到不同模型準確率與召回率的關系曲線,即PR曲線,如圖8所示。PR曲線與坐標軸圍成的區域面積為平均精度均值(mean Average Precision,mAP),以mAP作為煤矸石檢測的精度指標,以幀率作為煤矸石檢測的速度指標,消融實驗結果見表1。

圖8 消融實驗PR曲線Fig. 8 PR curves of ablation experiment

表1 消融實驗結果Table 1 Results of ablation experiment
分析圖8和表1可知,以YOLOv5為基準模型,采用單個改進方法的模型性能如下:YOLO-C的精度和速度都有小幅提升;YOLO-B的精度小幅提升,速度提升顯著;YOLO-A的精度提升最多,但速度有所下降。上述結果表明:在Backbone中加入注意力機制可聚焦特征差異,降低了數據維度,帶來了精度和速度的提升;Neck部分引入BiFPN結構后,提升了模型計算效率,但精度提升不明顯;Prediction部分通過改進損失函數,聚焦高IoU目標,提升了檢測精度,但未能兼顧速度。
以YOLOv5為基準模型,采用組合改進方法的模型性能如下:YOLO-CA和YOLO-BA的精度提升程度相當,但后者的速度更快,說明Neck部分采用BiFPN結構可提升網絡推理速度;YOLO-CB的精度最低,但速度最快;CBA-YOLO模型的精度提升最多,比基準模型提升了3.4%,檢測速度提升了10%,說明改進損失函數雖然增加了網絡計算量,但由于Neck部分采用BiFPN結構后提升了模型計算效率,保證了模型在不損失速度性能的情況下穩定提升精度,同時,通過在Backbone中加入注意力機制進一步提高了檢測性能。
基于YOLOv5和CBA-YOLO模型的煤矸石檢測結果對比如圖9所示。可看出,CBA-YOLO模型魯棒性更強,有效避免了漏檢、誤檢和重疊現象。

圖9 煤矸石檢測結果對比Fig. 9 Comparison of coal gangue detection results
(1) 在Backbone中加入注意力機制可聚焦特征差異,降低了數據維度,帶來了精度和速度的提升;Neck部分引入BiFPN結構后,提升了模型計算效率,但精度提升不明顯;Prediction部分通過改進損失函數,聚焦高IoU目標,提升了檢測精度,但未能兼顧速度。
(2) 與YOLOv5模型相比,CBA-YOLO模型的精度提升了3.4%,檢測速度提升了10%,同時保證了檢測實時性和精度,可為選煤廠實際應用提供參考。