趙學(xué)軍李建
中國礦業(yè)大學(xué)(北京) 機(jī)電與信息工程學(xué)院,北京 100083
煤炭是我國的主要能源,煤礦行業(yè)肩負(fù)著保障我國能源安全和民生的重任。 如何保障煤炭產(chǎn)品質(zhì)量和進(jìn)一步提升煤礦的安全生產(chǎn),是煤礦行業(yè)一直備受關(guān)注的核心問題[1-2]。 從煤礦中直接開采出未經(jīng)任何處理的原煤,由于其形成過程的復(fù)雜因素,或多或少含有影響煤炭品質(zhì)的矸石。 為了提高煤炭純度、改善煤炭質(zhì)量,大多數(shù)煤礦企業(yè)會設(shè)置選煤廠分選原煤[3-4]。 在選煤廠的所有工序中,選矸是不可或缺的步驟,其主要目標(biāo)就是將大塊矸石從煤塊中分選出來。 目前,國內(nèi)大部分煤礦依舊使用人工排矸的方法,而人工分選存在工作環(huán)境惡劣、工人勞動強(qiáng)度大、分選效率低以及安全事故頻發(fā)等問題。 人工排矸的工作方式已經(jīng)不能滿足國家倡導(dǎo)的建設(shè)綠色礦山、智慧礦山發(fā)展要求,急需自動化程度高、檢測效果好的煤矸石檢測方法[5]。
近年,隨著計算機(jī)技術(shù)和人工智能技術(shù)的快速發(fā)展,賦予了機(jī)器具有類似于人類的視覺分析能力,即機(jī)器視覺技術(shù)。 目前,機(jī)器視覺技術(shù)已在社會生產(chǎn)生活的各個領(lǐng)域得到廣泛應(yīng)用,包括工業(yè)[6]、農(nóng)業(yè)[7]、醫(yī)學(xué)[8]、安防、航空航天、軍事等領(lǐng)域,提高了各自領(lǐng)域的效率。 目標(biāo)檢測是機(jī)器視覺領(lǐng)域的四大主要任務(wù)之一,是近年備受關(guān)注的前沿研究方向。 目標(biāo)檢測是將定位和識別合二為一,既要檢測出物體在圖像中的位置,還需要識別出物體的類別。 傳統(tǒng)目標(biāo)檢測主要分為3 步:區(qū)域選擇、特征提取、分類回歸[9],因此存在算法上的瓶頸。例如,區(qū)域選擇策略效果差,事件復(fù)雜度高,嚴(yán)重依賴棘手的特征工程提取數(shù)據(jù)集的特征,無法針對任務(wù)進(jìn)行端到端的學(xué)習(xí)[9],并且任務(wù)的泛化能力有限,制約了算法性能,在一定程度上阻礙了技術(shù)的發(fā)展與應(yīng)用。
近年,深度學(xué)習(xí)得到蓬勃發(fā)展。 通過將深度學(xué)習(xí)引入到目標(biāo)檢測任務(wù)中,使得目標(biāo)檢測這一機(jī)器視覺領(lǐng)域得到了質(zhì)的飛躍,無論是在檢測精度還是算法復(fù)雜度上,都大大領(lǐng)先傳統(tǒng)檢測算法。 本文旨在利用目標(biāo)檢測原理,通過機(jī)器視覺技術(shù)實(shí)現(xiàn)煤與矸石混合體中矸石的智能檢測,可以為選煤環(huán)節(jié)的分揀機(jī)器人提供算法支撐。 選煤廠視覺環(huán)境復(fù)雜,受光照條件制約以及煤塵粉粒等干擾,導(dǎo)致能夠獲取的視頻圖像質(zhì)量較差,為后續(xù)基于圖像的機(jī)器視覺分析帶來了極大的挑戰(zhàn)[10]。 傳統(tǒng)基于人工主觀設(shè)計特征工程的檢測方法,如灰度閾值檢測[11-12]或邊緣檢測[13],在此任務(wù)上的表現(xiàn)不盡人意,有很大的局限性。 基于深度學(xué)習(xí)的算法,借助卷積神經(jīng)網(wǎng)絡(luò)強(qiáng)大的特征提取能力和非線性學(xué)習(xí)能力,能夠在煤與矸石灰度值嚴(yán)重混疊,顏色、邊緣梯度區(qū)分不明顯等場景下,進(jìn)行有效檢測。 在實(shí)際應(yīng)用場景下,需要實(shí)時處理攝像頭獲取的視頻序列,對檢測算法的精度和速度都有較高要求。 為了縮減模型大小,提高運(yùn)行速度和改善檢測精度,本文對YOLOv3[14]算法模型的特征提取、特征融合、損失函數(shù)設(shè)計做了必要的修改,以更好地滿足實(shí)際應(yīng)用需求。
出于視頻檢測算法實(shí)時性的需求,以及邊緣設(shè)備計算能力的制約,在YOLOv3 使用的骨干網(wǎng)絡(luò)(Backbone)Darknet-53 的基礎(chǔ)上提出輕量高效的特征提取骨干網(wǎng)絡(luò)Darknet-Squeeze。 在Darknet-53 網(wǎng)絡(luò)中有53 個卷積層,其中有23 個殘差塊(Residual)[15]結(jié)構(gòu),每個殘差塊由1×1 和3×3 的卷積層加上跳躍連接構(gòu)成。 為了進(jìn)一步加快模型的推理速度和縮減模型尺寸,受到SqueezeNet 模型[16]的啟發(fā),使用其中fire module 模塊的思想取代Darknet-53 中的殘差塊。 在fire module 模塊中,首先使用一個由1 × 1 卷積構(gòu)成的squeeze 層來減少輸入通道數(shù),然后將輸出結(jié)果輸入到由1 ×1 卷積和3×3 卷積混合構(gòu)成的expand 層。 此外,為了進(jìn)一步縮短推理時間,受MobileNets 模型[17]的啟發(fā),使用3×3 的深度可分離卷積(depth-wise separable convolution)替換原來的標(biāo)準(zhǔn)3×3 卷積。表1 展示了Darknet-53 中殘差塊與改進(jìn)后Darknet-Squeeze 中fire module 模塊的比較。
表1 Darknet-53 中的殘差塊與Darknet-Squeeze 中的fire module 模塊比較Tab.1 Comparison between the residual block in Darknet-53 and the fire module in Darknet-Squeeze
通過使用fire module 模塊替換Darknet-53 中的殘差塊,其余部分遵循原來的架構(gòu),得到Darknet-Squeeze 骨干網(wǎng)絡(luò)。 Darknet-Squeeze 由23 個fire module 模塊和其間的幾個負(fù)責(zé)下采樣的卷積層構(gòu)成。 相比Darknet-53 骨干網(wǎng)絡(luò),Darknet-Squeeze在保障特征提取能力的同時,極大地縮減了模型尺寸,加快了推理速度。 Darknet-Squeeze 的總體架構(gòu)如圖1 所示。
圖1 Darknet-SqueezeFig.1 Darknet-Squeeze
相較于大多數(shù)目標(biāo)檢測任務(wù),煤矸石檢測任務(wù)有其特殊性。 煤矸石檢測基本上對應(yīng)的是小尺度物體,且煤與矸石在顏色、紋理、形狀等特征上差異較小,增加了檢測難度。 因此,煤矸石檢測要求檢測模型能夠有效地融合各級特征,改善小尺度物體的檢測性能。 骨干網(wǎng)絡(luò)后的特征融合neck 部分,是提升不同尺度的物體檢測性能的關(guān)鍵。 因此,一個設(shè)計良好的特征融合neck 模塊對于檢測模型的整體性能至關(guān)重要。 在YOLOv3 模型的上采樣部分,使用4×4 的轉(zhuǎn)置卷積(transpose convolution)代替原最近鄰(the nearest neighbor)的采樣。 原基于最近鄰插值的采樣方式,是一種人為設(shè)計的特征工程,然而,基于轉(zhuǎn)置卷積的上采樣方式有可學(xué)習(xí)的權(quán)重參數(shù),是通過網(wǎng)絡(luò)學(xué)習(xí)的一種較優(yōu)的上采樣方法。 空間金字塔池化(Spatial Pyramid Pooling,SPP)結(jié)構(gòu)[18]最早提出解決的2 個主要問題:
(1) 有效地避免需統(tǒng)一輸入圖像尺寸對圖像區(qū)域進(jìn)行剪裁、縮放操作導(dǎo)致的圖像物體信息丟失以及形狀扭曲失真等問題。
(2) 解決了卷積神經(jīng)網(wǎng)絡(luò)對圖像特征重復(fù)提取的問題,大大提高了產(chǎn)生候選框的速度,且節(jié)省了計算成本。
在YOLOv3 中引入SPP 結(jié)構(gòu)不是為了解決上述2 個問題,而是借鑒金字塔池化的思想進(jìn)行多級特征圖的信息融合。 特征圖經(jīng)過局部特征與全局特征相融合后,豐富了特征圖的表達(dá)能力,有利于煤與矸石圖像中待檢測物體之間特征差異較小、小物體偏多的情況,對于檢測的精度有明顯的提升。 跟隨文獻(xiàn)[19]中的設(shè)置,在檢測前引入SPP 結(jié)構(gòu),采用3 個核大小分別為5×5、9×9、 13×13 的最大池化和一個跳躍連接,將經(jīng)過池化后的特征圖重新串聯(lián)到一起。 采用的SPP結(jié)構(gòu)如圖2 所示。
圖2 空間特征金字塔池化結(jié)構(gòu)Fig.2 Spatial Pyramid Pooling(SPP)
目標(biāo)檢測器需要執(zhí)行分類和定位兩個任務(wù),因此在訓(xùn)練工程中會整合分類損失函數(shù)和定位損失函數(shù)來指導(dǎo)模型收斂。 但是,如果整合的兩個任務(wù)沒有做到恰當(dāng)?shù)钠胶?將會導(dǎo)致其中一個任務(wù)受到抑制,影響模型的整體性能[20]。 實(shí)驗(yàn)數(shù)據(jù)在標(biāo)注過程中難免有誤標(biāo)注和漏標(biāo)注的情況,產(chǎn)生難訓(xùn)練樣本,進(jìn)而出現(xiàn)不平衡學(xué)習(xí)。 在不平衡的學(xué)習(xí)任務(wù)中,容易訓(xùn)練樣本產(chǎn)生的小梯度易被難訓(xùn)練的樣本產(chǎn)生的大梯度所掩蓋,從而限制了模型性能的進(jìn)一步提升。 因此,為了使得模型能夠更好地學(xué)習(xí)收斂,需要重新平衡所涉及的任務(wù)和樣本。 為了更好地平衡學(xué)習(xí)分類和定位任務(wù),采用在文獻(xiàn)[21]中提到的平衡L1 損失函數(shù)(balanced L1 loss)。 由于矸石檢測是一個單分類任務(wù),所以僅在定位任務(wù)上使用平衡L1 損失函數(shù)。 在YOLOv3 中,分類和定位任務(wù)是在多任務(wù)損失的指導(dǎo)下被同時求解,其總體損失可表示為
式中,Lcls、Lloc、Lconf分別為分類、定位和目標(biāo)置信度損失函數(shù);p、u分別為預(yù)測值和實(shí)際值;tu為對應(yīng)類u的回歸結(jié)果,u≥1;v為回歸目標(biāo)。
在平衡L1 損失函數(shù)中,將損失大于等于1.0的樣本叫作離群值(outliers),其他樣本叫作內(nèi)部值(inliers)。 離群值可視作難訓(xùn)練樣本,會產(chǎn)生比較大的梯度值,有損訓(xùn)練過程;內(nèi)部值可視作易訓(xùn)練樣本,對總體梯度貢獻(xiàn)較小。 具體來說,每個內(nèi)部值相比離群值只貢獻(xiàn)了30% 的梯度[21]。 為了解決此問題,平衡L1 損失函數(shù)采取提升來自內(nèi)部值的回歸梯度,以重新平衡相關(guān)樣本和任務(wù),從而實(shí)現(xiàn)在分類和定位任務(wù)上的平衡訓(xùn)練,同時也盡量消除數(shù)據(jù)誤標(biāo)注和漏標(biāo)注帶來的影響。 平衡L1 損失函數(shù)的定位損失Lloc可以表示為
式中,a為控制內(nèi)部值梯度提升的因子;r為控制整體提升量的參數(shù),用于調(diào)整回歸誤差的上界,有助于目標(biāo)函數(shù)更好地平衡所涉及的任務(wù);b為用于確保式(3)兩個分支在Lb(x=1)的情況下有相同的值。
在煤矸石檢測任務(wù)中,經(jīng)常出現(xiàn)煤與矸石、矸石與矸石之間重疊遮擋的情況,加大了精確定位待檢測物體的難度。 為進(jìn)一步提升煤矸石檢測的定位精度,充分考慮待檢測物體間的位置關(guān)系,將距離交并比(Intersection over Union,IoU)作為損失函數(shù)來指導(dǎo)模型回歸訓(xùn)練。 大多數(shù)目標(biāo)檢測算法中,邊界框回歸是定位目標(biāo)物體矩形框的關(guān)鍵步驟,交并比是最常用的度量回歸邊界框的指標(biāo),可表示為
式中,Bgt={xgt,ygt,wgt,hgt}為目標(biāo)邊界框的實(shí)際值;B={x,y,w,h}為預(yù)測的目標(biāo)邊界框;ln范數(shù)用來度量邊界框B和Bgt之間的距離[22]。
在文獻(xiàn)[23]中,使用基于歐式距離的ln范數(shù)損失函數(shù)的前提是假設(shè)4 個坐標(biāo)變量相互獨(dú)立,但實(shí)際上它們是相互關(guān)聯(lián)的,因此不是一個合適的選擇。文中提出直接使用IoU 作為損失函數(shù),可表示為
然而,LIoU損失函數(shù)僅在兩個邊界框重疊的情況下起作用,無法優(yōu)化兩個不相交的邊界框。 為了解決LIoU損失函數(shù)存在的問題,文獻(xiàn)[24]中提出一個廣義的IoU 損失函數(shù)(Generalized IoU,GIoU):
式中,C為兩個框最小外接矩形面積。
GIoU 損失函數(shù)在IoU 損失函數(shù)的基礎(chǔ)上添加了一個懲罰項,雖然GIoU 損失函數(shù)可以處理兩個邊界框不相交的情況,但當(dāng)目標(biāo)邊界框完全包含預(yù)測邊界框時,GIoU 損失函數(shù)會退化為IoU 損失函數(shù),導(dǎo)致訓(xùn)練過程收斂慢。 為了解決GIoU 損失函數(shù)存在的不足,文獻(xiàn)[25]提出一種距離IoU(Distance-IoU,DIoU)損失函數(shù),同時考慮兩個框的重疊面積和中心的距離兩個幾何因素來加快收斂速度和回歸精度,可表示為
式中,b、bgt分別為邊界框B和Bgt的中心點(diǎn);ρ(·)為兩個中心點(diǎn)間的歐式距離;c為可以同時覆蓋邊界框B和Bgt的最小矩形的對角線距離。
DIoU 損失函數(shù)通過對預(yù)測框與目標(biāo)框之間的歸一化距離進(jìn)行建模,直接最小化兩者之間的距離,加快訓(xùn)練時模型的收斂速度。 通過在模型中引入DIoU 損失函數(shù),在實(shí)驗(yàn)中顯著地提高了模型預(yù)測精度,并且不會產(chǎn)生過擬合問題。
為了使實(shí)驗(yàn)數(shù)據(jù)盡可能地與實(shí)際選煤廠工作環(huán)境相一致,在選煤廠實(shí)地進(jìn)行數(shù)據(jù)采集。 從采集到的視頻中截取1350 張煤與矸石混合場景下的圖像,并采用labelImg 標(biāo)注軟件對圖像進(jìn)行詳細(xì)的人工標(biāo)注,選取其中1137 張圖像用于模型訓(xùn)練,其余的213 張圖像用于模型測試,所有對比模型在訓(xùn)練時均使用水平翻轉(zhuǎn)和隨機(jī)裁剪等圖像增強(qiáng)方法。實(shí)驗(yàn)環(huán)境為pytorch1.2、python3.6,使用一張GTX 1080Ti 顯卡。 實(shí)驗(yàn)中用到精度(Precision,P)、召回(Recall,R)、F1 值、mAP(mean Average Precision)值、幀率(FPS)、推理時間(Latency)、FLOPs 值和Params 值等評價指標(biāo)。 TP(true positives)表示真正例,FP(false positives)表示假正例,FN(false negatives)表示假反例,TN(true negatives)表示真反例。 相關(guān)評價指標(biāo)計算公式為
精度值P越高,表示檢測結(jié)果的準(zhǔn)確度越高;召回值R越高,表示檢測結(jié)果的漏檢率越低;F1 值越高,表示檢測結(jié)果越好;mAP 值越高,表示檢測結(jié)果越好;幀率越高,表示推理速度越快;推理時間Latency 越低,表示模型速度越快;FLOPs 值越低,表示計算量越小;Params 值越低,表示模型參數(shù)量越少。
為了與原YOLOv3 模型進(jìn)行比較,同時訓(xùn)練Darknet-53 骨干網(wǎng)絡(luò)和改進(jìn)后的Darknet-Squeeze骨干網(wǎng)絡(luò)檢測模型,訓(xùn)練過程中使用同樣的Adam優(yōu)化器,參數(shù)均使用默認(rèn)值,2 個模型同樣訓(xùn)練50個epoch,見表2。 使用Darknet-53 檢測模型最終得到66.8 的mAP 值,使用Darknet-Squeeze 的檢測模型得到67.5 的mAP 值,比修改前增加了0.7個點(diǎn),推理時間和模型參數(shù)量都大幅減少。 圖像分辨率為416 像素×416 像素,推理時間Latency 和FLOPs 為在一張GTX 1080Ti 顯卡上的測試結(jié)果。
表2 Darknet-53 與Darknet-Squeeze 比較Tab.2 Comparison between Darknet-53 and Darknet-Squeeze
在骨干網(wǎng)絡(luò)Darknet-Squeeze 的基礎(chǔ)上,為進(jìn)一步增強(qiáng)YOLOv3 的neck 部分的各級特征融合能力,以適應(yīng)煤矸石圖像中小尺度物體較多的特點(diǎn),引入SPP 結(jié)構(gòu),并采用轉(zhuǎn)置卷積進(jìn)行上采樣。 在同樣的實(shí)驗(yàn)環(huán)境和訓(xùn)練設(shè)置下,實(shí)驗(yàn)結(jié)果見表3。 其中,輸入圖像分辨率為416 像素×416 像素,推理時間Latency 和FLOPs 為在一張GTX 1080Ti 顯卡上的測試結(jié)果。 改進(jìn)后的特征融合neck 模型在小幅增加模型大小的情況下,取得69.2 的mAP 值,在原來的YOLOv3 模型基礎(chǔ)上提升了2.4 個點(diǎn),在Darknet-Squeeze 模型基礎(chǔ)上增加了1.7 個點(diǎn),證明了該方法的有效性。
表3 精度、速度和大小比較Tab.3 Comparisons of accuracy,speed and size
為了平衡訓(xùn)練過程中的各項任務(wù),進(jìn)一步增強(qiáng)檢測目標(biāo)的定位準(zhǔn)確性,盡量消除數(shù)據(jù)誤標(biāo)注和漏標(biāo)注帶來的影響,減輕難訓(xùn)練樣本對最后模型精度的影響,在之前的模型基礎(chǔ)上加入平衡L1 損失函數(shù)和DIoU 損失函數(shù),在訓(xùn)練中參數(shù)a=0.5,r=1.5。 由于引入的損失函數(shù)僅在訓(xùn)練時起到優(yōu)化模型的作用,因此不會改變模型的大小和推理時間成本。 實(shí)驗(yàn)結(jié)果表明,在不引入任何推理時間成本的前提下,模型檢測精度大幅增加,mAP 值達(dá)到72.7,相比原來的YOLOv3 模型提升了5.9 個點(diǎn),相比實(shí)驗(yàn)3.2 設(shè)置下的模型提升了3.5 個點(diǎn),并改善了漏檢現(xiàn)象。 各項具體參數(shù)比較見表4,圖像分辨率為416 像素×416 像素,幀率(FPS)是在一張GTX 1080Ti 顯卡上的測試結(jié)果。 矸石檢測的可視化結(jié)果如圖3 所示,圖3(a) 對應(yīng)原始的YOLOv3 模型檢測結(jié)果,圖3(b)對應(yīng)改進(jìn)骨干網(wǎng)絡(luò)、特征融合neck、引入平衡L1 損失函數(shù)和距離IOU 損失函數(shù)后的最終模型的檢測結(jié)果。由圖3 可見,改進(jìn)后的模型在檢測結(jié)果和定位精度上明顯好于YOLOv3 基準(zhǔn)模型。 實(shí)驗(yàn)結(jié)果表明,無論是檢測精度還是推理速度,本文提出的方法都能較好地滿足實(shí)際運(yùn)行需求。
圖3 矸石檢測結(jié)果Fig.3 Detection results of coal gangue
表4 最終模型的檢測結(jié)果Tab.4 Detection results of final model
(1) 通過引入fire module 模塊替代原來模型中的殘差結(jié)構(gòu),改進(jìn)原來的特征提取骨干網(wǎng)絡(luò),在同樣的實(shí)驗(yàn)設(shè)置下,改進(jìn)后的Darknet-Squeeze 模型在mAP 值、推理時間和模型大小上都優(yōu)于原模型。
(2) 使用轉(zhuǎn)置卷積替換最近鄰上采樣,引入空間金字塔池化SPP 模塊來改進(jìn)多級特征融合機(jī)制,在相同的實(shí)驗(yàn)設(shè)置下mAP 值進(jìn)一步提高,達(dá)到69.2。
(3) 引入平衡損失函數(shù)和距離IoU 損失函數(shù),在沒有增加推理時間成本的情況下,改善了模型訓(xùn)練過程,在相同的實(shí)驗(yàn)設(shè)置下mAP 值進(jìn)一步提高,達(dá)到72.7。
(4) 在一張GTX 1080Ti 顯卡下,改進(jìn)后的模型檢測速度可達(dá)89 FPS,檢測mAP 值可達(dá)72.7。極大地縮減了模型尺寸,加速了模型推理,并大幅提高了模型的檢測精度。
實(shí)驗(yàn)表明,該方法能夠較好地處理選煤廠中煤與矸石混合的復(fù)雜場景,具有較高的適應(yīng)性和檢測準(zhǔn)確性,能夠較好地滿足生產(chǎn)現(xiàn)場的實(shí)際需求。