關鍵詞: YOLOv8-seg; 巖心CT 圖像; 顆粒目標提取
1 引言
巖心顆粒的結構與形態(tài)的研究不僅對研究巖層的演化過程[1]、形成環(huán)境、形成機制有重要的意義,也有助于研究巖層的沉積特性[2]和土壤的侵蝕特性[3]. 近年來,隨著數(shù)字巖心技術的快速發(fā)展及計算機斷層掃描技術(Computer Tomography, 簡稱CT)的廣泛應用,巖心CT 數(shù)字圖像處理技術不僅允許研究者分析單一截面內的顆粒細節(jié),而且通過運用三維重建技術,使得構建三維顆粒模型并在三維空間中進行顆粒信息分析成為可能,為深入理解巖石內部顆粒結構提供了一種新的途徑[4].
但是在將射線數(shù)據(jù)重構為巖心CT 圖像的過程中,噪聲的引入不可避免,當前的巖心CT 成像技術因此面臨著圖像質量不佳、含有不同強度噪聲以及信噪比較低的挑戰(zhàn). 并且,由于CT 數(shù)據(jù)的采集基于對巖心樣本的恒定功率掃描,無法確保樣本顆粒與背景之間的適宜對比度,存在著灰度級范圍的重疊現(xiàn)象,特別是在中心區(qū)域的亮度值往往高于周圍區(qū)域,這導致使用基于閾值分割等傳統(tǒng)圖像處理方法時容易發(fā)生過度分割或欠分割的問題.
隨著圖像處理技術的演進,眾多算法已被應用于CT 圖像顆粒分割這一關鍵領域. 高揚等[5]采用模糊距離變換方法對巖心圖像顆粒進行分割,該方法有效識別粘連顆粒,但分割得到的顆粒邊緣缺乏平滑性. Wang 等[6]基于Otsu 法的基本原理,提出依據(jù)煤體CT 圖像中不同礦物組分和孔裂縫結構,選擇不同閾值公式的MP-Otsu 閾值分割法,提高了CT 技術在觀測煤體微觀組分領域的準確性. 吳未等[7]提出一種邊界勾勒算法,通過彈性膠囊算法獲取單顆粒在分水嶺算法唯一種子點,從而獲取炸藥CT 圖像單像素顆粒邊界,有較高的算法自動化程度,大大縮減人力成本. Wang 等[8]通過分析煤巖CT 圖像灰度分布特征,提出了灰度束閾值分割方法,該方法相比其他射束閾值分割方法,更加便于操作和準確. Pandey 等[9]提出一種基于Morse 理論的框架,用于分割CT 圖像顆粒并計算顆粒集合的結構和相對排列,該方法相比分水嶺算法,能取得更高質量的細粒度集合分割. 這些研究針對CT 圖像顆粒分割提出了各類解決思路,在提高CT 圖像顆粒分割提取效率方面取得了進展.
在近年來的研究進展中,深度學習技術通過整合底層特征至高層抽象信息,有效地解決了自動特征學習的難題. Yann 等[10]開發(fā)的卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,簡稱CNN)為自然圖像分割領域提供了一種新的思路,相比傳統(tǒng)方法展現(xiàn)出更佳的性能. CNN 作為一種包含卷積計算并具備深度結構的前饋神經(jīng)網(wǎng)絡,在圖像分割任務上的成就促使研究者越來越多地采用此技術[11]. Lin 等[12]引入的特征金字塔網(wǎng)絡(FeaturePyramid Networks,簡稱FPN)采用特征金字塔結構,解決了小目標檢測中多尺度變換的挑戰(zhàn),同時保持了較低的計算成本. He 等[13]提出的Mask RCNN,通過將目標檢測和語義分割結合起來,與傳統(tǒng)的Faster R-CNN[14]相比,新增了一個預測分割mask 的分支,證明了網(wǎng)絡能夠同時學習兩項任務,并實現(xiàn)相互促進. Strudel 等[15]探索將Transformer模塊引入圖像分割領域,這一創(chuàng)新嘗試突破了CNN 在訪問圖像全局信息方面的局限性,為圖像分割技術提供了新的方向. Tang 等[16]使用Transformer模塊結合多尺度空洞卷積和注意力機制,解決顆粒之間長距離依賴問題,提高了網(wǎng)絡對于顆粒邊緣特征的提取能力. Manzoor 等[17]使用Seg?Net 實現(xiàn)對于不同類別顆粒之間的識別與分割. 這些進展不僅展示了深度學習在圖像分割領域的潛力,也為未來的研究開辟了新的路徑.
但是,針對噪點多、對比度低、光照不均、顆粒粘連甚至難以肉眼區(qū)分的巖心CT 圖像顆粒的分割,這些模型均很難取得較好的分割效果. 而YOLO(You Only Look Once)系列自從2015 年由Redmon 等[18]提出后,經(jīng)過多代的改進,并且在v5之后引入實例分割后,v8 又在實例分割方面實現(xiàn)了較大的突破. YOLOv8 相較于原來的anchorbased檢測方法,它所采用的anchor-free 方法具有更高的檢測精度和檢測速度. 但是在實際復雜實例分割任務中,僅僅使用 YOLOv8 分割算法仍存在著定位誤差和對目標感知能力不足等缺點. Yue等[19]用RepBlock 模塊代替C2f 模塊,在特征融合網(wǎng)絡中的2 次上采樣之前添加SimConv 卷積代替剩余的傳統(tǒng)卷積,提出了一種改進的YOLOv8-seg網(wǎng)絡,實現(xiàn)準確地分割受病害的番茄. 譚旭等[20]基于YOLOv8 提出了改進的實例分割模型EISYOLO,在汽車傷損實例分割方面實現(xiàn)了模型輕量的同時也提高了小目標傷損及傷損邊緣的精確識別. Pandey 等[21]結合Segment Anything Mode(l 簡稱SAM)提出了YOLOv8+SAM 的模型,在醫(yī)學圖像分割表現(xiàn)出了更高的分割精度和整體性能.
本文針對上述巖心CT 圖像顆粒目標提取中存在的分割困難問題,基于YOLOv8-seg 的改進,提出了融合CBAM[22]和BoTNet[23]的多頭處理模塊CBoTNet,使用Wise-IoU[24] 損失函數(shù)替換CIoU[25]損失函數(shù),提高模型的泛化能力和目標檢測分割精度.
2 基于改進YOLOv8-seg 的顆粒目標提取算法
2. 1 YOLOv8-seg 網(wǎng)絡模型
YOLOv8-seg 算法模型[26]分為input 端、backbone端、headamp;neck 端和output 端. 在input 端使用Mosaic 數(shù)據(jù)增強、自適應圖片縮放和灰度填充等操作進行圖片的預處理;backbone 端通過Conv、C2f、SPPF 結構進行卷積、池化,在殘差連接的同時加入跳層連接實現(xiàn)特征融合,并且在輕量化的同時包含豐富的梯度流信息;headamp;neck 端通過Upsample、Concat、C2 模塊通過上、下采樣,實現(xiàn)特征拼接;output 端使用segment 解耦頭,每個尺度都有獨立的檢測器,每個檢測器由一組卷積和全連接層組成,用于預測該尺度上的邊界框.
YOLOv8-seg 損失函數(shù)由四部分組成,分別是分割損失BCEWithLogitsLoss(BCELoss+sigmoid)、分類損失BCEWithLogitsLoss(繼承目標檢測任務)和邊界框回歸損失(CIoU Loss 和DFLLoss).
2. 2 改進的YOLOv8-seg 網(wǎng)絡模型
由于巖心CT 圖像通常是以組為單位的需要同時處理大量圖像的序列圖,因此本文使用參數(shù)量小、檢測速度快的YOLOv8n-seg 網(wǎng)絡模型. 本文提出的改進模型在backbone 端加入CBoTNet模塊,并在邊界框回歸損失中將CIoU 替換為Wise-IoU,針對自建巖心數(shù)據(jù)集粘連分割問題提升明顯,其網(wǎng)絡如圖1 所示.
2. 2. 1 CBoTNet 模塊 在巖心CT 圖像中,往往會因為圖像中存在的大量噪聲破壞像素之間的依賴關系,模型的檢測識別和分割能力也會大幅下降,從而導致漏檢和錯檢的產(chǎn)生.
引入注意力機制模塊,可以有效的提取有用的特征信息,提高模型性能. 比較典型的注意力機制包括自注意力機制、空間注意力機制和通道注意力機制.
本文使用的CBoTNet 結合了多頭自注意力機制、空間注意力機制和通道注意力機制. 多頭自注意力機制使模型能夠同時關注圖像的多個區(qū)域,提取不同區(qū)域的特征,并對這些特征進行整合;空間注意力機制通過對圖像中的特定區(qū)域進行重點處理,使模型能夠更加關注于圖像中潛在的重要部分;通道注意力機制關注不同通道的特征,能夠強化對特定特征的識別,如顏色、紋理等. 這三者結合可以使模型不僅能夠關注單個維度的特征(如僅空間或通道),而且能夠全面地理解和分析圖像數(shù)據(jù),從而提供更準確的檢測和分割結果.
CBoTNet 的結構如圖2 所示,輸入經(jīng)過Contraction之后得到的X 是一個H×W×d 的張量,代表從之前層中學到的特征. 其中,H 和W 代表空間維度,即圖像的高度和寬度,而d 代表特征維度或通道數(shù). 輸入特征圖X 首先通過3 個不同的1×1卷積層(或線性層),轉換為3 個新的特征集:查詢(Q),鍵(K),和值(V). 這些1×1 卷積層相當于對特征進行線性變換,其權重矩陣分別為 WQ,WK,WV. 位置信息以2 個獨立的編碼Rh 和Rw 形式融入,分別代表垂直和水平方向的位置信息,這些編碼相加后,引入位置信息r 以保持空間關系. 位置信息r 通過與輸入特征圖相乘的形式加入到轉換后的Q 特征中,形成內容-位置編碼qrT. 查詢(Q)和鍵(K)進行點積,生成一個注意力得分矩陣,形成內容-內容編碼qkT,表示特征之間的相互關系.這個得分矩陣的大小為H*W×H*W,其中H*W 是展平后的空間維度,代表每個位置與其他所有位置的關系強度. 兩個矩陣qrT 和qkT 相加,意味著模型在計算注意力得分時同時考慮了內容的相似性和位置關系. 通過這種方式,自注意力機制不僅能夠識別特征內容的相關性,還能保持空間或序列的結構信息. 這個合并的注意力得分矩陣將通過softmax 函數(shù)進行歸一化,并用于加權值(V)向量,生成加權的特征表示F. 自注意力后的特征F 送入通道注意力(CA)模塊,在此模塊中,特征圖首先通過最大池化和平均池化操作,以產(chǎn)生全局空間信息的兩個描述. 這兩個描述共享一個多層感知機(MLP),該MLP 有一個隱藏層(通常包含ReLU激活函數(shù)). MLP 的輸出是兩個通道注意力圖,這兩個圖隨后會通過元素加法操作合并. 最后,通過sigmoid 激活函數(shù)得到最終的通道注意力圖,該注意力圖通過廣播機制與原始輸入特征圖相乘,對每個通道的特征進行加權,得到特征圖F'. 特征圖F'再進入空間注意力(SA)模塊,經(jīng)過通道軸上的最大池化和平均池化,將通道信息壓縮成2 個二維圖. 這2 個圖像隨后被合并(通常是通過串聯(lián)),并通過一個卷積層來生成一個二維的空間注意力圖. 空間注意力圖通過sigmoid 函數(shù)激活,再用來對輸入特征圖進行加權,生成特征圖Z,最后通過Expansion 得到最終結果. 一個單頭的描述至此,而CBoTNet 使用的是多頭結構,并會將以上過程復制多次,本文多頭的數(shù)量取值為4,每個頭關注輸入數(shù)據(jù)的不同方面. 然后,所有頭的輸出會被合并或拼接起來,形成一個更為全面的輸出特征表示,這樣就可以在處理后續(xù)任務時提供更豐富的信息.網(wǎng)絡對該區(qū)域的關注度越高,在網(wǎng)絡學習中更關鍵. layer4 和layer13 分別為選取圖像經(jīng)過網(wǎng)絡第4和第13 層后的熱力圖,其中l(wèi)ayer13 為是否使用CBoTNet 的對比熱力圖. result 為上述兩個網(wǎng)絡的結果圖,圖中紅色圈區(qū)域為對比區(qū)域. 由圖3 的layer4、layer13 和result 可知,在layer4 中,是否使用CBoTNet 熱力圖相似;在layer13 中,不使用CBoTNet 模塊相比使用CBoTNet 模塊,其特征信息會大量丟失,此處在result 中表現(xiàn)為邊緣特征流失,顆粒之間存在粘連. 因此通過加入CBoTNet,可以讓網(wǎng)絡學習到更多顆粒的特征信息,并加強顆粒目標檢測和分割.
2. 2. 2 損失函數(shù)改進 在目標檢測和實例分割任務中,邊界框回歸損失函數(shù)的設計對于提升模型性能至關重要. YOLOv8-seg 的邊界框回歸損失函數(shù)CIoU,通過預測框和真實框的重疊面積、中心點距離和長寬比來計算損失, 公式如下:
其中,Bgt表示真實框,Bpred表示預測框,ρ2 ( Bgt,Bpred )表示預測框和真實框中心點的歐氏距離,C 表示能夠包含預測框和真實框的最小外接矩形的對角線長度,α 表示平衡參數(shù),ν 用來衡量長寬比是否一致.
盡管CIoU 針對目標的位置和形狀提供了一種比較精確的回歸策略,但是是在假設訓練數(shù)據(jù)的質量較高的前提下. 實際的目標檢測分割訓練集常含有質量較低的樣本,過分強調這些低質量樣本的邊界框回歸會對模型的性能提升造成負面影響. 如果預測框和gt 框的長寬比是相同的,那么長寬比的懲罰項恒為0,并且,長和寬的梯度是一對相反數(shù),兩者不能同時增大或減小,存在縱橫比模糊的問題.
針對這一問題,Zhang 等[27]提出了Focal-EIoU,在 CIOU 的懲罰項基礎上將預測框和真實框的縱橫比的影響因子拆開,分別計算預測框和真實框的長和寬,來解決 CIOU 存在的問題,并且加入FocalLoss[28],通過修改交叉熵損失,增加了一個調整因子,來解決在某些訓練情境下,尤其在一些目標檢測任務中,背景樣本數(shù)量遠大于前景樣本數(shù)量時,即正負樣本數(shù)量不平衡的問題,提升了對小目標或者在復雜環(huán)境下的檢測性能. Gevorgyan[29]在EIoU 基礎上提出了SIoU,通過融入角度考慮和規(guī)模敏感性,引入了一種更為復雜的邊界框回歸方法,解決了以往損失函數(shù)的局限性,SIoU損失函數(shù)包含四個組成部分:角度損失、距離損失、形狀損失和第4 個未指定的組成部分. 通過整合這些方面,從而實現(xiàn)更好的訓練速度和預測準確性.
但是,這些方法都是通過聚焦機制提升了對較難樣本的識別能力,但其聚焦機制是靜態(tài)的,未能充分利用非單調聚焦機制的潛力. 基于此,Tong 等[24]提出了一種動態(tài)非單調聚焦機制,并設計了名為 Wise-IoU( WIoU) 的新型損失函數(shù),公式如下:
其中,點(x,y)、(xgt,ygt)分別表示預測框中心坐標和真實框中心坐標,Wg 和Hg 表示預測框和真實框最小外接矩形的長和寬,Su表示預測框和真實框的并集.
WIoUv1 構造了基于距離注意力的邊界框損失;WIoUv2 在v1 基礎上構造了單調聚焦系數(shù),從而提高對復雜目標的分類識別能力;WIoUv3 則是在v1 基礎上采用“ 離群度”代替?zhèn)鹘y(tǒng)的交并比(IoU)來評估錨框的質量,并引入了一種動態(tài)的梯度增益分配策略. 該策略在降低高質量錨框的優(yōu)勢的同時,減少了由低質量樣本產(chǎn)生的有害梯度,從而使WIoUv3 能夠更有效地關注普通質量的錨框,提升檢測器的整體性能.
3 實驗與結果分析
3. 1 實驗環(huán)境和參數(shù)設置
實驗在Windows10 系統(tǒng)上運行,內存128 GB,CPU 為Intel(R) Core(TM) i9-12900K,GPU 為NVIDIA GeForce RTX 3060,顯存為12GB,采用的深度學習框架為Pytorch2. 2. 1,CUDA 版本為12. 1,編譯語言為python3. 10. 13. 采用YOLOv8nseg作為基底網(wǎng)絡模型,輸入圖片大小為640×640.
3. 2 實驗數(shù)據(jù)集
本文數(shù)據(jù)集采用計算機斷層掃描技術(CT)獲得的多組巖心序列圖,從6 組巖心CT 序列圖像中各選取了800 幅圖像,按照7∶3 的比例劃分訓練集和驗證集,共制作了4800 幅圖像. 為了防止過擬合,另選2 組巖心CT 序列圖像共計1600 幅圖像制作成數(shù)據(jù)集作為測試集.
由于使用CT 掃描時會不可避免的引入噪聲使得巖心CT 序列圖存在噪點多、亮度不均、對比度低等問題,從而影響訓練效果,因此本文使用對比度受限的自適應直方圖均衡化(Contrast LimitedAdaptive Histogram Equalization, 簡稱CLAHE)[30]對圖像進行增強,得到去除陰影環(huán)、亮度矯正后的圖像,如圖4 所示. 訓練之前再通過垂直翻轉、水平翻轉、對比度調整等操作進一步圖像增強,從而實現(xiàn)數(shù)據(jù)集拓展,提高模型泛化能力.
3. 3 評價指標
實驗采用精確率(Precision)、召回率(Recall)、mAP50 和mAP50: 95 評價模型精度,采用模型內存占用大?。∕odel size)、模型參數(shù)量(Param)、每秒浮點運算次數(shù)(FLOPs)和每秒檢測圖片數(shù)量(FPS)來衡量模型復雜度.
其中,TP 表示預測為正且正確的正樣本數(shù)量,F(xiàn)P表示預測為正且錯誤的負樣本數(shù)量,F(xiàn)N 表示預測為負且錯誤的正樣本數(shù)量.
3. 4 改進實驗效果對比
本文模型在顆粒分割的訓練任務中的訓練和驗證損失收斂曲線如圖5,結果表明改進的YOLOv8n-seg 網(wǎng)絡可以有效收斂.
3. 4. 1 不同網(wǎng)絡效果及模型復雜度對比 為了客觀驗證模型改進效果的可行性,使用了相同數(shù)據(jù)集經(jīng)過CLAHE 進行圖像增強后,分別在MaskR-CNN[13] 、YOLACT[31] 、SOLOv2[32] 、Query?Inst[33]、RTMDet[34]等實例分割網(wǎng)絡上進行對比實驗.
由表1 可知,改進后的YOLOv8n-seg 網(wǎng)絡不僅繼承了原網(wǎng)絡的小模型計算量,并且在檢測和分割的精確度mAP50 和mAP50:95 上均達到了最高. 相比于Mask R-CNN(ResNet50)這些指標分別提高了4. 08%、20. 51%、8. 42%、10. 36%;相比于Mask R-CNN(ResNet101)這些指標分別提高了4. 68%、16. 81%、6. 82%、7. 96%;相比于YOLACT 這些指標分別提高了26. 88%、29. 71%、20. 42%、22. 56%;相比于SOLOv2 這些指標分別提高了6. 08%、18. 11%;相比于Query?Inst 這些指標分別提高了20. 98%、28. 51%、19. 32%、21. 26%;相比于RTMDet 這些指標分別提高了2. 28%、11. 71%、2. 32%、5. 76%;相比于原網(wǎng)絡YOLOv8n-seg 這些指標分別提高了1. 30%、7. 81%、2. 66%、5. 23%.
在模型復雜度方面,本文選取648 張測試集圖片在同一硬件條件下進行測試. 由表1 可知,YOLOv8n-seg 與RTMDet 參數(shù)量Param 和每秒浮點運算次數(shù)(FLOPs)相近,但是YOLOv8n-seg 每秒檢測圖片數(shù)量(FPS)遠優(yōu)于RTMDet,且實際分割效果也優(yōu)于RTMDet. 而其余網(wǎng)絡的參數(shù)量Param和每秒浮點運算次數(shù)(FLOPs)都遠大于YOLOv8n-seg,每秒檢測圖片數(shù)量(FPS)也不如YOLOv8n-seg.
由此可見,加入多頭處理模塊CBoTNet 和邊界框回歸損失函數(shù)WIoUv3 可以在保持較小模型計算量的同時有效的提取顆粒目標特征,并且檢測速率能夠提高到21. 66 f/s.
圖6 展示了a~e 不同網(wǎng)絡下對測試集巖心圖片顆粒目標分割的效果圖. 其中,YOLACT 和QueryInst 在自制數(shù)據(jù)集的測試中未能取得有效的目標檢測和分割;SOLOv2 和Mask R-CNN 分割效果相比前兩個網(wǎng)絡較好,但是模型運算量較大;RTMDet 目標檢測和分割效果與YOLOv8n-seg 較為接近,并且模型復雜度也較為接近,但是檢測速度遠不如YOLOv8n-seg;本文方法可以在不顯著提高模型運算量的同時提高目標檢測和分割精度,并且可以實現(xiàn)在檢測速度上的提高.
3. 4. 2 損失函數(shù)改進效果對比 將WIoUv3 損失函數(shù)與CIoU、GIoU[35]、DIoU[36]、EIoU、SIoU 等損失函數(shù)進行實驗對比. 由表2 可知,使用WIoUv3損失函數(shù)的精確率、召回率和平均精度均達到最高,相比于YOLOv8n-seg 的原邊界框回歸損失函數(shù)CIoU 在精確率(Precision)上提高了0. 70%,在召回率(Recall)上提高了0. 91%,在平均精度mAP50 和mAP50:95 上分別提高了0. 61% 和3. 14%,說明改進的損失函數(shù)能夠使得預測更加準確穩(wěn)定.
3. 5 消融實驗
從表3 可知,在主干網(wǎng)絡中加入BoTNet 模塊可以將顆粒識別準確率mAP50 和mAP50:95 分別提高0. 43% 和1. 35%;使用CBoTNet 之后可以顯著的提高對小目標的識別和分割能力,在準確率mAP50 和mAP50:95 上分別能提高1. 01% 和5. 21%;在邊界框回歸損失函數(shù)中將CIoU 替換為WIoUv3 可以在不明顯提高模型大小的同時將顆粒識別準確率mAP50 和mAP50:95 提高0. 94%和4. 06%.
在模型復雜度方面,加入BoTNet 可以將FPS提高到21. 87 f/s,但是也略微增加了模型大小;使用CBoTNet 并加入WIoUv3 之后繼續(xù)增加了模型大小,F(xiàn)PS 相比原網(wǎng)絡提高了5. 30%,相比加入BoTNet 降低了0. 96%.
綜合實驗結果,同時使用CBoTNet 和WIoUv3 可以比原模型在mAP50 和mAP50:95 上分別提高1. 30% 和7. 81%,并且可以提高檢測速率FPS,達到21. 66f/s.
4 結論與展望
本文提出了一種改進的YOLOv8n-seg 的顆粒目標提取的分割網(wǎng)絡,通過加入多頭機制模塊CBoTNet 能夠顯著的提高對小目標的識別和分割能力,并通過改進邊界框回歸損失函數(shù)為WIoUv3進一步提高目標檢測精度,總體相比原YOLOv8nseg網(wǎng)絡在mAP50 和mAP50:95 上分別提高了1. 30% 和7. 81%. 檢測速率也相比原網(wǎng)絡略微提高,但是并不明顯,后期可以通過進一步輕量化模型,提高檢測速率. 并且針對本文自制數(shù)據(jù)集,網(wǎng)絡結構嘗試過在上采樣、卷積優(yōu)化等方面進行過改進,但是未能達到較好效果,因此后續(xù)工作可以在這些方面繼續(xù)改進優(yōu)化,達到更好的檢測和分割效果.