孟曉亮, 趙吉康, 王曉雨, 張立曄, 宋 政
(山東理工大學 計算機科學與技術學院, 山東 淄博 255000)
基于視覺的內窺鏡手術作為一種具有代表性的微創(chuàng)手術,在深度學習[1-2]時代受到越來越多的關注。與傳統(tǒng)的手術不同,微創(chuàng)手術在內窺鏡相機的輔助下通過一個小的切口進行,組織縫合需要使用專業(yè)的手術器械。然而,缺乏對手術技巧、手術質量等有針對性的、客觀的反饋是內窺鏡手術過程中存在的關鍵問題之一。手術過程中手術器械檢測與分割的準確性對評估外科醫(yī)師的手術技能具有非常重要的意義[3]。
國外針對手術器械檢測與分割的研究相對較早,且近年來已有很多研究者將深度學習成功應用于實際內窺鏡手術中。Jin 等人[4]對手術過程中的手術器械進行檢測,采用Faster-RCNN 算法框架,主干網絡使用VGG-16 卷積神經網絡,在內窺鏡手術中實現(xiàn)了對手術器械的實時檢測,可以輔助評估外科醫(yī)師的操作技能。Mahmood等人[5]提出一種基于雙流殘差密集網絡(DSRDNet)的手術器械分割方法,利用殘差和密集的空間金字塔池化模塊優(yōu)化算法,精準分割手術器械,減少因視野模糊等導致的人為失誤,并在公開可用的胃腸內窺鏡數(shù)據(jù)集上進行測試,取得了較好的實驗結果。不過此類算法的參數(shù)量和運算量較大,如果再添加額外的優(yōu)化模塊,會導致檢測和分割速度下降。基于此,文獻[6]提出一種Anchor-free 的卷積神經網絡,通過沙漏網絡對內窺鏡手術視頻進行逐幀檢測并將手術器械建模,以點作為邊界框的中心點生成檢測框,在保證精度的同時,檢測速度超過同時期以雙階段目標檢測為代表的Anchor-based 類算法。但是該網絡只能生成手術器械的定位框而未實現(xiàn)對手術器械種類的識別,功能性上略有不足。
國內對于深度學習在微創(chuàng)手術領域的研究起步較晚。2018 年,鄭騰輝等人[7]基于全卷積神經網絡(FCN)實現(xiàn)了對手術器械和手術器械收納盒的圖像分割,識別目標的準確度可達到像素級,但是檢測目標為手術器械收納盒中的靜態(tài)手術器械,因此實用性上有所欠缺。2019 年,Ni 等人[8]提出一種新的網絡Residual Attention U-Net(RAUNet)用于白內障手術中的手術器械語義分割,該網絡通過編碼-解碼結構獲取高分辨率的掩膜,同時關注高階和低階特征圖,從而在保證獲取重要特征的基礎上有效過濾干擾信息。2022 年,Ni 等人[9]為解決內窺鏡手術中照明因素對手術器械的影響,提出了一種新的網絡Surgi-Net,通過添加金字塔注意力模塊捕捉多尺度特征,通過自蒸餾消除其他的干擾信息。文獻[10]提出一種改進的DoubleUNet[11]分割方法,通過對圖像進行預處理,并使用密集連接空洞空間卷積池化金字塔(DenseASPP)模塊[12]和Focal Tversky Loss 損失函數(shù)進一步提取圖像特征。該方法可以輔助外科醫(yī)師切除結腸異常組織,從而降低息肉癌變的概率。
綜上所述,基于深度學習的手術器械檢測與分割得到很多研究者的關注。雖然RAUNet網絡已經考慮手術器械反光的問題,但在實際的內窺鏡手術中,除手術器械金屬材質自身導致的反光問題外,組織器官之間的相互遮擋、光線影響以及陰影遮擋等問題[13]也需要被考慮。文獻[14]已經證實通過對YOLO 算法的Neck 部分的下采樣進行優(yōu)化和添加注意力機制,可以在保證模型輕量化的同時進一步提高檢測的精度。但目前YOLO算法應用于內窺鏡手術的研究相對較少,且目標檢測中存在的漏檢問題仍然有改進的空間。
針對以上問題,本文提出一種改進的YOLOv5s 手術器械檢測與分割方法。對于內窺鏡圖像中存在的反光和陰影遮擋等問題,使用Gamma 校正算法優(yōu)化圖像亮度和對比度。通過添加CBAM(Convolutional Block Attention Module)[15]、動態(tài)卷積以及空間金字塔池化模塊以增強目標特征信息的權重,進一步提高手術器械檢測的準確度并降低漏檢率。最后,在模型的Neck部分添加基于特征金字塔網絡(FPN)的語義分割分支,同時實現(xiàn)手術器械的檢測和語義分割功能,輔助外科醫(yī)師提高手術效率,減小手術難度。
本文基于YOLOv5s 算法框架,針對手術器械的檢測與分割問題進行優(yōu)化,以實現(xiàn)內窺鏡圖像中手術器械的檢測與分割[16],本文算法的整體網絡結構如圖1 所示。在內窺鏡圖像進行訓練之前,需要對圖像進行圖像增強、圖像填充和錨框計算等預處理。在Backbone 部分,以YOLOv5s為基礎,添加5 個Conv 模塊和C3 模塊,每一個Conv 模塊都包含一個1×1 的卷積核。對輸入的特征圖像進行卷積操作,同時通過BatchNorm 正則化函數(shù)和SiLU 激活函數(shù)[17]進行處理。C3 模塊中包含3 個標準的Conv 卷積層,對殘差特征進行學習。特征信息進入C3 模塊后分為兩個分支:一個分支使用多個Bottleneck 和3 個標準卷積層;另一個分支經過一個卷積模塊。然后將兩個分支通過Concat 進行連接。圖像輸入尺寸為640×640,每次經過一個Conv 與C3 的組合模塊后,特征圖會變?yōu)樵瓉沓叽绲?/2,再經過5 次卷積后,輸出20×20 的特征圖。在Neck 部分,采用PANet 框架,也稱為FPN+PAN。FPN 特征金字塔是一個自頂向下的過程,如輸入FPN 的特征圖尺寸為20×20,經過2 倍上采樣后,特征圖尺寸變?yōu)?0×40。Conv 模塊輸出的40×40 特征圖經過卷積核后,在Concat 模塊和經過上采樣的特征圖融合,后續(xù)的Conv、C3 和Concat 模塊重復前述步驟。PAN 和FPN 相反,是一個自底向上的特征金字塔[18]。FPN 是自頂向下傳遞特征內容,而PAN 是自底向上傳遞特征位置,通過組合可以有效融合兩者的優(yōu)點,同時PAN 采用80×80的特征圖,經過兩次Conv 與C3 的組合模塊后,分別輸出40×40 和20×20 的特征圖。
在基于深度學習的手術器械檢測中,圖像的亮度會直接影響模型訓練的效果。內窺鏡視頻中出現(xiàn)的手術器械本身多為金屬材質,在手術環(huán)境下極易出現(xiàn)反光或陰影遮擋等情況,從而影響目標檢測的效果。因此,需要在模型訓練前對圖像進行預處理。本文采用Gamma 校正算法,對內窺鏡圖像進行預處理。
Gamma 校正算法的公式如式(1)所示:
如圖2 所示,紅色和藍色曲線分別代表灰度值過高和過低的情況,當r<1 或r>1 時,Gamma算法會對圖像灰度值進行調整。對于圖像中灰度值較高的區(qū)域,經過校正后灰度值會減小,使r的值接近于1;對于圖像中灰度值較低的區(qū)域,經過校正后灰度值會增大,使r的值接近于1。
圖2 Gamma 校正算法曲線圖Fig.2 Graph of Gamma correction algorithm
原有算法特征圖信息中每個通道的權重相等,這會導致一些無用信息的比重偏大,而關鍵信息的比重偏小。因此,我們在Backbone 底部添加注意力機制模塊CBAM,通過學習的方式獲取每個通道的比重并生成權重。CBAM 可同時應用空間和通道兩個不同的注意力維度。在語義分割部分,由于上采樣會導致部分語義信息丟失,因此,在語義分割頭的C3 部分加入CBAM,通過通道注意力模塊以減少重要信息的丟失,可防止由于單獨添加CBAM 模塊導致的網絡層數(shù)過多的問題。圖3 為CBAM 的結構圖。
圖3 CBAM 結構Fig.3 Structure of CBAM
另外,將Neck 部分的Conv 模塊更換為動態(tài)卷積ODConv 模塊[19]。注意力機制可賦予權重,通過注意力權重進行學習可以提高CNN 網絡的準確性并減少計算量。普通的動態(tài)卷積僅關注卷積核數(shù)量,而其他3 個參數(shù)(輸入通道數(shù)、輸出通道數(shù)、空間大?。┤菀妆缓雎?。本文使用的ODConv 模塊可通過對4 個維度的并行策略實現(xiàn)對內核空間互補注意力的學習,從而進一步提高模型的準確度。
YOLOv5s 使用的空間金字塔池化模塊是SPPF(Spatial Pyramid Pooling Fast),在保持SPP 效果的同時提高其速度。本文使用SPPCSPC 模塊[20](SPP-CSP-Concat),該模塊采用CSP結構[21],通過保留SPP 不同尺度的最大池化層使模型視野進一步擴大,可解決特征重復提取的問題。同時,可建立一條新的卷積分支,將原圖通過卷積核后,與通過最大池化層得到的特征圖進行二次合并,可有效減少池化后的特征損失,從而進一步提高檢測的準確度。
圖1 中,在FPN 和PAN 的連接位置增加語義分割頭,使80×80 的特征圖繼續(xù)按照FPN 特征金字塔結構的上采樣步驟進行,實現(xiàn)語義分割功能[22]。在生成80×80 的特征圖后形成兩個分支,一個分支進入PAN 模塊,另外一個分支繼續(xù)采用自頂向下的上采樣結構實現(xiàn)語義分割。因此,本文模型可同時實現(xiàn)目標檢測和語義分割。
本文數(shù)據(jù)集采用Cholec80,該數(shù)據(jù)集中包含大量的內窺鏡手術視頻,我們選取Cholec80 中的20 個內窺鏡手術視頻并按照一定的幀頻轉換成內窺鏡圖像序列,將其中不存在手術器械或者手術器械較為模糊的圖像剔除。數(shù)據(jù)集包含4 000 幅圖像,其中3 000 幅圖像用于訓練,1 000 幅圖像用于測試。本文將數(shù)據(jù)集中的手術器械分為7 類,分別標注為Grasper、 Hook、 Clipper、 Scissors、 SpecimenBag、 Bipolar和Irrigator。
由于模型需要同時實現(xiàn)目標檢測和語義分割功能,本文分別通過LabelImg 和Labelme 制作兩種不同格式的標簽。目標檢測標簽設定為txt格式,語義分割標簽設定為png 格式記錄掩膜,并對數(shù)據(jù)集通過Gamma 校正算法進行調整優(yōu)化。通過實驗發(fā)現(xiàn),如果數(shù)據(jù)集中不同類別手術器械的數(shù)量相對平均時,Grasper 類型的手術器械識別的準確度明顯低于其他6 類手術器械。因此,我們在數(shù)據(jù)集中提高了Grasper 類型的比例,將Grasper 類型的圖像數(shù)量提高至1 000 幅,其余6 類手術器械各為500 幅圖像。
圖4 為數(shù)據(jù)集樣本的部分圖像。由圖4(a)可以看出,數(shù)據(jù)集中手術器械受環(huán)境的影響較大,導致圖像中亮度分布不均,即使是同一幅圖像,手術器械的金屬部分反光強烈導致亮度過高,而周圍環(huán)境和手術器械的其余部分相對較暗。因此,通過Gamma 校正算法,可使數(shù)據(jù)集中的圖像亮度分布相對均勻,減少外界因素對目標檢測的影響,如圖4(b)所示。圖4(c)為分割掩膜結果。
圖4 數(shù)據(jù)集樣本。 (a) 原圖; (b) Gamma 校正后結果;(c) 分割掩膜。Fig.4 Dataset sample. (a) Original image ;(b) Results after Gamma correction ;(c) Segmentation mask.
本文的模型訓練在Windows 10 操作系統(tǒng)上進行,模型由Python 編程語言實現(xiàn),編程軟件采用PyCharm。采用CPU 進行模型訓練相對緩慢,因此,我們通過GPU 對網絡框架進行模型訓練,GPU 的硬件配置如表1 所示。
表1 GPU 硬件配置Tab.1 Hardware configuration of GPU
3.3.1 模型衡量指標
本文需要同時衡量目標檢測和語義分割的效果。對于目標檢測,本文選用mAP@0.5 和 損失作為模型的衡量指標;語義分割通過mIoU 進行衡量。最后,通過測試集驗證實際檢測和分割的效果。
3.3.2 目標檢測效果分析
對于目標檢測而言,召回率(Recall)和精確度(Precision)是衡量目標檢測結果的兩個非常重要的指標。AP 為通過計算每一個召回率對應精確度的值并進行平均得到的一個衡量標準;mAP是將目標檢測中所有種類的AP 取平均值的結果。本文將所提方法與其他目標檢測算法的AP和mAP 進行比較,結果如表2 所示。
表2 不同方法的AP 和mAP 比較Tab.2 Comparison of AP and mAP with different methods
由表2 可以看出,無論是在不同手術器械的單項AP 上還是整體的mAP 上,本文方法都要優(yōu)于其他方法。相較于YOLOv5s,優(yōu)化后算法在本文手術器械數(shù)據(jù)集上的mAP@0.5 提高了1.8%,達到了98.2%。在單階段檢測方法中,本文算法在mAP@0.5 上仍然具有優(yōu)勢,相較于目前流行的SSD 和RetinaNet 算法,mAP 分別高出3.2%和2.8%;相較于經典的雙階段檢測方法Faster-RCNN,本文算法的mAP@0.5 提高了11.4%,驗證了本文方法在AP 上的優(yōu)勢。
將本文所提方法和YOLOv5s 方法的損失曲線進行對比分析,結果分別如圖5 和圖6所示。
圖5 本文所提方法的損失曲線Fig.5 Loss curve of the proposed method
圖6 YOLOv5s 方法的損失曲線Fig.6 Loss curve of the YOLOv5s method
從圖5 和圖6 可以看出,對于bounding box 檢測框損失,本文所提方法和YOLOv5s 方法都接近0.02。對于obj 目標檢測損失,最終兩者在數(shù)值上比較接近。但在驗證集val 的obj 損失曲線上, YOLOv5s 在降低到0.012 后緩慢回升,并在0.014 附近上下波動;而本文所提方法在降低到0.012 后,一直較為平穩(wěn)的維持在0.014 以下。從曲線和數(shù)據(jù)上可以看出,YOLOv5s 在測試集val 上的損失曲線更加平滑,當epoch 為100 時,訓練集損失曲線也趨于平穩(wěn)。本文所提方法由于引入語義分割模塊,訓練集train 的obj 損失曲線和測試集val 的損失曲線幾乎趨近于90°,在訓練集train 最終損失值相差不大的情況下,本文所提方法的損失曲線下降速度最快,在進入平穩(wěn)期后波動也最小,不會像YOLOv5s 一樣出現(xiàn)明顯的上下波動。在驗證集val 上,本文所提方法的損失曲線無論是在訓練的波動幅度還是最終損失值上都優(yōu)于YOLOv5s 方法,進一步驗證了本文方法的有效性和優(yōu)勢。
3.3.3 語義分割效果分析
mIoU 是評價語義分割效果的重要指標[23]。本文通過添加基于FPN 網絡的語義分割頭實現(xiàn)了語義分割功能,目標檢測算法的mIoU 通過矩形框計算。為更好地比較分析語義分割的效果,本文在相同條件下訓練其他語義分割網絡并與本文方法進行比較。由于目標檢測部分已經實現(xiàn)對于手術器械的分類功能,語義分割只需將手術器械和背景進行區(qū)分即可,因此語義分割的類別這里只定義Instruments 和Background 兩類,將所提方法的mIoU 值與其他語義分割方法進行比較,結果如表3 所示。
表3 不同方法的mIoU 值比較Tab.3 Comparison of mIoU with different methods
由表3 可以看出,本文方法在語義分割方面有著良好的表現(xiàn),mIoU 值達到了94.0%,遠高于經典分割網絡FCN。相較于Deeplabv3 和UNet圖像分割網絡,本文方法的mIoU 分別高出2.2%和1.3%。相較于目前流行的語義分割網絡PSPNet,mIoU 提高了0.9%,進一步驗證了本文方法的有效性和優(yōu)勢。
3.3.4 檢測與分割結果
本文選取數(shù)據(jù)集中具有代表性的兩幀圖像進行檢測與分割結果分析,結果如圖7 所示。
圖7 手術器械檢測與分割結果Fig.7 Detection and segmentation results of surgical instruments
由圖7(a)可以看出,本文方法能夠較好地實現(xiàn)手術器械的檢測和語義分割,在多個手術器械同時存在的情況下也能夠進行準確識別。但也會存在漏檢的情況,如圖7(b)所示,相較于被檢測出的Scissors 類型的手術器械,漏檢的手術器械在圖像中所占比例相對較小,且受到手術環(huán)境的遮擋,導致模型提取的特征信息不足,被檢測器誤認為是背景信息,因此出現(xiàn)了漏檢現(xiàn)象。但是語義分割模塊卻能夠很好地識別該手術器械并進行準確地分割,在一定程度上彌補了目標檢測的漏檢問題。
本文采用改進的YOLOv5s 結合FPN 的方法實現(xiàn)了手術器械的檢測與語義分割功能。通過Gamma 校正算法,減輕反光和陰影等因素的影響;通過CBAM、動態(tài)卷積模塊、空間金字塔池化模塊和FPN 語義分割模塊,提高檢測與分割的準確度,并降低漏檢率。實驗結果表明,手術器械的檢測與語義分割效果良好,手術器械檢測的mAP@0.5 為98.2%,語義分割的mIoU 為94.0%。所提方法可輔助外科醫(yī)師提高手術效率,減小手術難度,實現(xiàn)術中精準導航。