禹 晨,張 飛,郝 斌
(內(nèi)蒙古科技大學(xué)信息工程學(xué)院,內(nèi)蒙古 包頭 014000)
當(dāng)煤與空氣接觸并達到其燃點時,它會發(fā)生局部自燃,這不僅導(dǎo)致煤炭資源的浪費,還會向大氣中排放大量的一氧化碳、二氧化硫和其他有害氣體,對環(huán)境造成污染。同時,運輸和處理煤炭過程中產(chǎn)生的揚塵無法完全避免,這不僅會污染周圍環(huán)境,還會對工作人員的健康產(chǎn)生危害。因此,為了降低經(jīng)濟損失、減少環(huán)境污染并改善工作環(huán)境質(zhì)量,對火煤和揚塵的監(jiān)測和預(yù)警變得至關(guān)重要。
近年來,深度學(xué)習(xí)技術(shù)在目標(biāo)識別領(lǐng)域已經(jīng)有了廣泛應(yīng)用,目標(biāo)檢測的主要功能是檢測圖像中出現(xiàn)的既定目標(biāo)類別以及目標(biāo)的位置信息。學(xué)術(shù)界同時也涌現(xiàn)出許多基于煙塵的檢測方法,主要分為兩類:一類是以Faster R-CNN[1]與Mask R-CNN[2]等為代表的兩階段檢測算法;另一類是以YOLO[3]等為代表的一階段目標(biāo)檢測算法。很多學(xué)者為提高檢測精度和速度做了大量工作,文獻[4]通過使用MobileNetv3[5]重構(gòu)SSD[6]的主干使模型輕量化;文獻[7]使用深度可分離卷積來替換YOLOv4[8]網(wǎng)絡(luò)中的普通卷積實現(xiàn)模型的輕量化。但是模型的輕量化往往會帶來檢測精度下降的問題,隨著YOLO系列的快速更迭,YOLOv8 相對于其他目標(biāo)檢測算法,在保持高精度的同時,具有更快的推理速度,采用輕量級網(wǎng)絡(luò)結(jié)構(gòu)使其在移動設(shè)備上運行更加流暢。
煤場環(huán)境下的火煤和揚塵檢測,對模型的輕量化和檢測精度都提出了很高的要求,而且煤炭自燃初期,產(chǎn)生的煙往往是通過小目標(biāo)呈現(xiàn)的,煤場環(huán)境下的塵霧、燈光這些類煙霧等物體都會對檢測造成干擾,所以提高復(fù)雜場景下對分辨率低圖片中煙塵的小目標(biāo)檢測速度、精度是亟待解決的問題。
文章針對以上問題,對YOLOv8模型進行改進,在主干特征提取網(wǎng)絡(luò)Backbone 層部分,引入SPDConv 代替原有的普通卷積,提高模型對于分辨率低的圖像中煙塵和其呈現(xiàn)為小目標(biāo)狀態(tài)下的檢測精度;在特征融合Neck 層采用BottleNeckCSP 模塊替換之前的C2f 模塊,可以在主干特征提取階段減少運算參數(shù)量,既保證了推理的速度和準(zhǔn)確性,還減小了模型尺寸,使模型更加輕量化,提高了檢測速度。除此之外,還改進YOLOv8 損失函數(shù)由CIoU 變?yōu)镋IoU,以達到使模型訓(xùn)練時收斂更加快速的目的,能夠有效地描述回歸任務(wù),以便更精準(zhǔn)地對火煤和揚塵進行檢測。
YOLO 是一種經(jīng)典的一階段目標(biāo)檢測算法。YOLOv1[9]提出了一個全新的目標(biāo)檢測框架,將目標(biāo)檢測任務(wù)轉(zhuǎn)化為一個回歸問題,通過一個單一的神經(jīng)網(wǎng)絡(luò)模型同時預(yù)測目標(biāo)的位置和類別。YOLOv2[10]在YOLOv1的基礎(chǔ)上進行了改進,引入了anchor boxes,使得模型能夠更好地處理不同大小的目標(biāo)。同時,YOLOv2 還采用了更復(fù)雜的損失函數(shù),提高了模型的訓(xùn)練效果。YOLOv3、YOLOv4 在YOLOv2 的基礎(chǔ)上進一步改進,采用了更深的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),提高了模型的性能,同時還引入了多尺度特征融合,使得模型能夠更好地處理不同尺度的目標(biāo)。YOLOv5 采用了新的CSPNet 骨干網(wǎng)絡(luò)架構(gòu),計算效率和精確率都有所提升。
相比于之前的YOLO系列,YOLOv8在訓(xùn)練時間和檢測精度上都得到提升,而且模型的權(quán)重文件相比之前的YOLO 系列進一步輕量化,可以部署到任一嵌入式設(shè)備中,它憑借自身快速、高效的性能可以很好地滿足實時檢測的需求。
YOLOv8 的網(wǎng)絡(luò)結(jié)構(gòu)由三個部分組成:主干網(wǎng)絡(luò)(backbone)、特 征 增 強 網(wǎng) 絡(luò)(neck)、檢 測 頭(head)。其中主干網(wǎng)絡(luò)依然使用CSP的思想。而在特征增強網(wǎng)絡(luò)方面,YOLOv8 使用PAN-FPN 的思想。在檢測頭部分,YOLOv8 使用解耦頭替換了以往的耦合頭[11],將分類和回歸解耦為兩個獨立的分支,通過解耦使各個任務(wù)更加專注,從而解決復(fù)雜場景下定位不準(zhǔn)及分類錯誤的問題。同時YOLOv8采用了Anchor-free 目標(biāo)檢測方法[12],這是一種基于回歸的目標(biāo)檢測方法,它不需要預(yù)先定義錨點框來預(yù)測目標(biāo)的位置。在傳統(tǒng)的目標(biāo)檢測方法中,通常需要預(yù)先定義錨點框,這些錨點框用于作為預(yù)測目標(biāo)位置的參考。然而,這種方法存在一些問題,如錨點框的選擇和調(diào)整比較繁瑣,而且對于不同尺度和形狀的目標(biāo),可能需要不同的錨點框。相比之下,YOLOv8 的Anchor-free 目標(biāo)檢測方法采用了一種回歸的方式,直接預(yù)測目標(biāo)的位置和大小,讓網(wǎng)絡(luò)更快地聚焦到目標(biāo)位置的鄰近點,使預(yù)測框更接近于實際邊界框區(qū)域。
SPD Conv 是一種用于替代跨步卷積與池化操作的特殊卷積,它由一個空間到深度(SPD)層和一個非步長卷積(Conv)層組成??臻g到深度(SPD)層的作用是將輸入特征圖的每個空間維度降低到通道維度,同時保留通道內(nèi)的信息。這可以通過將輸入特征圖的每個像素或特征映射到一個通道來實現(xiàn),SPD Conv 模塊采樣(見圖1)。在這個過程中,空間維度的大小會減小,而通道維度的大小會增加。非步長卷積(Conv)層是一種標(biāo)準(zhǔn)的卷積操作,它在SPD層之后進行。與步長卷積不同,非步長卷積不會在特征圖上移動,而是對每個像素或特征映射進行卷積操作。這有助于減少在SPD層中可能出現(xiàn)的過度下采樣問題,并保留更多的細粒度信息。SPD Conv的組合方式是將SPD層和Conv層串聯(lián)起來。具體來說,輸入特征圖首先通過SPD層進行轉(zhuǎn)換,然后輸出結(jié)果再通過Conv層進行卷積操作。這種組合方式可以在不丟失信息的情況下減少空間維度的尺寸,同時保留通道內(nèi)的信息,有助于提高對低分辨率圖像和小型物體的檢測性能。在火煤自燃的初期,通常在產(chǎn)生火焰之前,首先會產(chǎn)生煙霧,但是初期煙霧在圖象中所占面積比例很少,以小目標(biāo)形式出現(xiàn),而且圖象質(zhì)量受環(huán)境影響,很多時候用于檢測的圖像,分辨率并不高,引入SPD Conv 模塊代替主干特征提取網(wǎng)絡(luò)中的普通卷積來提高分辨率低的圖像中煙塵和其呈現(xiàn)為小目標(biāo)狀態(tài)下的檢測精度。
圖1 SPD ConvFig.1 SPD Conv
在網(wǎng)絡(luò)的特征提取部分,采用了BottleNeckCSP模塊來替換之前的C2f 模塊(見圖2)。這一改進的目的是為了更好地學(xué)習(xí)和提取網(wǎng)絡(luò)殘差特征,同時調(diào)整特征圖的深度和寬度。與原網(wǎng)絡(luò)中的C2f模塊相比,BottleNeckCSP 模塊能夠減少內(nèi)存消耗和計算瓶頸,提高網(wǎng)絡(luò)的效率和性能。BottleNeck 結(jié)構(gòu)通過卷積計算改變數(shù)據(jù)的通道數(shù),從而調(diào)整特征圖的深度和寬度。這種設(shè)計可以在主干特征提取階段減少運算參數(shù)量,既保證了推理的速度和準(zhǔn)確性,還減小了模型尺寸,使模型更加輕量化。
圖2 BottleNeckCSP模塊結(jié)構(gòu)Fig.2 BottleNeckCSP module structure
損失函數(shù)是判斷模型預(yù)測值和預(yù)期值差距的一項重要指標(biāo),在一定程度上反映了模型對預(yù)測結(jié)果的準(zhǔn)確度,預(yù)測值和預(yù)期值越接近,損失函數(shù)就越小。合適的損失函數(shù)可以使模型訓(xùn)練時收斂更加快速,所以在訓(xùn)練模型中選擇合適的損失函數(shù)尤為重要[13]。在YOLOv8 中使用CIoU 作為坐標(biāo)損失函數(shù),如公式(1)所示。
式中:b為目標(biāo)框的中心點;bgt為預(yù)測框的中心點;c為目標(biāo)框和預(yù)測框的最小外接框的對角線距離;ρ為目標(biāo)框和預(yù)測框中心點的歐氏距離;α為權(quán)重參數(shù)。
在原始YOLOv8中,CIoU損失函數(shù)在預(yù)測框回歸過程中,當(dāng)預(yù)測框和真實框?qū)捀呖v橫比呈現(xiàn)線性比例時,預(yù)測框?qū)捄透卟荒芡瑫r增加或減少,不能有效地描述回歸任務(wù),從而使整體損失函數(shù)收斂變慢[14]。文章根據(jù)原YOLOv8損失函數(shù)不足之處,采用EIoU損失函數(shù)替換YOLOv8中使用的CIoU損失函數(shù)。
EIoU 損失函數(shù)主要是在CIoU 的基礎(chǔ)懲罰項上,將預(yù)測框和真實框的橫縱比影響因子拆分后分別計算預(yù)測框和真實框的長、寬。EIoU 公式如公式(2)所示。
式中:LIoU、Ldis、Lasp分別為IoU 損失、中心距離損失、方位損失;wc、hc分別為最小閉合框的寬和高。
CIoU 和EIoU 損失函數(shù)迭代過程見圖3。其中,點線框代表真實框,黑實線框代表預(yù)先設(shè)定的錨框,點劃線框代表CIoU 的預(yù)測框回歸過程,虛線框代表EIoU 的預(yù)測框回歸過程。從圖3 可以看出,使用CIoU 時,預(yù)測框的寬和高不能同時增大或減小,EIoU很好地解決了這個難題。
在設(shè)計階段加強對BIM技術(shù)的應(yīng)用可以提高工程造價管理的有效性,工程造價管理的關(guān)鍵是在項目策劃和設(shè)計階段,而在項目投資決策后,造價控制的重點就是在設(shè)計階段[4]。要想真正提高工程造價管理效率,需要積極做好設(shè)計階段的造價管理。將BIM技術(shù)應(yīng)用其中,可對信息進行整合,保證各個專業(yè)之間的數(shù)據(jù)能夠準(zhǔn)確、及時傳遞,使各個部門與單位參與其中,經(jīng)過討論與分析,保證工程設(shè)計的完善性,減少后期因設(shè)計變更導(dǎo)致的成本浪費。同時,利用軟件中強大的可視化建模功能,可實現(xiàn)三大目標(biāo):設(shè)計階段的合理造價、提高資金利用率、提高投資控制的效率。
圖3 損失函數(shù)迭代過程Fig.3 Loss function iterative process
文章在YOLOv8 的基礎(chǔ)上,針對以上內(nèi)容進行改進設(shè)計,構(gòu)建Smoke-YOLOv8s火煤和揚塵的檢測網(wǎng)絡(luò),用于火煤和揚塵的檢測實驗研究見圖4。
圖4 Smoke-YOLOv8s整體網(wǎng)絡(luò)結(jié)構(gòu)Fig.4 Smoke-YOLOv8s overall network structure
從企業(yè)收集了6 744 張火煤和揚塵圖像構(gòu)成本實驗的數(shù)據(jù)集,考慮到燈光和霧等一些干擾因素的影響,數(shù)據(jù)集中也包含了一些類火和類煙的圖像。這些圖像具有代表性和多樣性,確保模型能夠?qū)W習(xí)到足夠多的信息。在收集到圖像后,對這些圖像進行清洗和預(yù)處理,以提高模型的訓(xùn)練效率和效果。隨后使用Labelimg工具對圖像中的目標(biāo)物體進行分類、框選等操作標(biāo)注,并對標(biāo)注好的圖像進行審核,保證標(biāo)注質(zhì)量。最后將標(biāo)注好的數(shù)據(jù)集劃分為訓(xùn)練集、驗證集和測試集,以便對模型進行訓(xùn)練、評估和優(yōu)化,比例為8∶1∶1,5 420 張用作訓(xùn)練集,677 張用作測試集和677張用作驗證集。
實驗環(huán)境硬件包括:CPU 為Intel(R)Core(TM)i5-13600KF,工作頻率為3.5 GHZ,內(nèi)存大小為32 G,顯卡為Nvidia GeForce RTX4060ti16G。軟件環(huán)境為Python3.8.18,PyTorch 2.0.0,GPU加速器為cuda11.8。預(yù)訓(xùn)練模型為YOLOv8s.pt,輸入圖片設(shè)置為640 × 640,初始學(xué)習(xí)率設(shè)置為0.01,Batch-size 設(shè)置為4,每次實驗設(shè)置200個epoch。
研究通過實驗評估改進的Smoke-YOLOv8s 算法,將精確率P(precision)、召回率R(recall)、平均精度AP(average precision)、平均精度均值mAP(mean Average Precision)作為算法的評價指標(biāo)。公式如(3)、(4)、(5)、(6)所示。
式中:AP為檢測的平均精度即為精確率—召回率(PrecisionRecall,P-R)曲線的曲線下面積;TP為分類正確的正樣本個數(shù);FP為分類錯誤的正樣本個數(shù);FN為分類錯誤的負(fù)樣本個數(shù)。
3.4.1 性能對比實驗
圖5 模型改進前和改進后的mAP@0.5對比情況Fig.5 Comparison of mAP@0.5 before and after model improvement
3.4.2 算法對比實驗
為進一步驗證改進算法與以往算法在煙塵檢測上的性能差異,實驗選擇目標(biāo)檢測領(lǐng)域經(jīng)典的YOLOv3-tiny、YOLOv5s、YOLOv8s 和Smoke-YOLOv8s算法進行對比實驗,所有實驗均在同一實驗環(huán)境、同一數(shù)據(jù)集下進行,經(jīng)各算法訓(xùn)練后的模型性能見表1。
表1 不同模型性能對比Tab.1 Performance comparison of different models
由表1 可知,相比以往的YOLO 模型,改進的Smoke-YOLOv8s 模型在精確率和mAP@0.5 均有顯著的提高,在模型的大小方面,文章改進模型的大小為25.4 MB,可以很好地滿足嵌入式設(shè)備對火煤和揚塵檢測模型輕量化的要求。
3.4.3 消融實驗
為了驗證不同的改進策略對原始網(wǎng)絡(luò)的影響,針對YOLOv8s 模型進行了3 組消融實驗,即增加SPD Conv 模塊,將特征提取模塊改為Bottle-NeckCSP ,將損失函數(shù)由CIoU 改進為EIoU。實驗結(jié)果見表2。在每組實驗中,所有實驗均在同一個數(shù)據(jù)集和相同的訓(xùn)練參數(shù)下完成。
表2 消融實驗結(jié)果Tab.2 Ablation experiment results
由表2 可知,在主干特征提取網(wǎng)絡(luò)Backbone 層部分,引入SPD Conv 代替原有的普通卷積后,原模型的各項性能均得到明顯改善,精確率在原模型基礎(chǔ)上提高了1.3%,mAP @0.5 直接在原模型的基礎(chǔ)上增長了2.1%,在特征融合Neck 層采用Bottle-NeckCSP 模塊替換之前的C2f 模塊和改進損失函數(shù)為EIoU 后,mAP @0.5 繼續(xù)增長了1.8%,達到了97.3%,模型大小降低了1.4 MB,將該模型部署到嵌入式設(shè)備中進行實時火煤和揚塵檢測,模型的大小、平均分類性能等參考指標(biāo)都達到較高水平。
3.4.4 測試結(jié)果
YOLOv8s 與文章改進算法Smoke-YOLOv8s 實際運行效果見圖6,在火煤和揚塵檢測的準(zhǔn)確度上有顯著提高,而且提高了對火煤和揚塵的低分辨率圖像和呈現(xiàn)小目標(biāo)狀態(tài)下的檢測性能[15]。
圖6 YOLOv8s和Smoke-YOLOv8s檢測效果對比Fig.6 Comparison of detection performance between YOLOv8s and Smoke-YOLOv8s
文章設(shè)計了一種在復(fù)雜背景下進行火煤和揚塵檢測的改進YOLOv8s 算法,與YOLOv8s 算法相比,改進之后的模型平均精度均值達到97.3%,提升了1.2%的精確率,同時降低了模型權(quán)重文件的內(nèi)存存儲和對硬件環(huán)境的依賴,可以滿足儲煤場場景下對模型檢測精度、輕量化要求。