范明凱,肖滿生,胡一凡,吳宇杰
(湖南工業大學計算機學院,湖南 株洲 412007)
gangxinjiaoyongg@163.com;349407041@qq.com;373502340@qq.com;2275128586@qq.com
胃癌是最常見的消化道腫瘤之一,是一種嚴重威脅人的生命健康的重大疾病。胃中的大多數息肉具有惡性潛能,并且具有與胃癌相同的一些危險因素和機理,因此可能發生癌變[1-2]。胃息肉如果能在早期發現和治療,對預防胃癌至關重要。然而由于胃結構復雜,息肉影像數據量大,小目標息肉不易識別,僅通過醫生判別可疑病變息肉,效率低下,而且精準度不高[3-4]。人工智能系統可以自動勾畫病灶,提高影像醫生的診斷效率。作為人工智能發展的一個方向,深度學習(Deep Learning,DL)為自動病變檢測的醫學圖像分析提供了新的思路[5]。DL模型對胃腸病學的主要貢獻之一是其快速、可靠的息肉檢測能力,提高了診斷質量[6]。
近年來,智能化圖像識別技術在醫療診斷領域得到了極大發展,如DL方法在胃息肉檢測中的應用。HIRASAWA等[7]利用13,584 張內窺鏡圖像數據集,通過訓練One-Stage的目標檢測模型[8](SSD)檢測胃內鏡照片癌變區域,同時用一套獨立的測試圖像集進行測試,共包括連續69 例患者的2,296 張胃部內窺鏡圖像,檢測結果中含有77 個胃癌病灶,最終正確診斷為71 個,整體敏感性為92.2%,但沒有改變SSD的任何細節。WANG等[9]使用改進的Faster RCNN[10]算法(Faster Region-based Convolutional Neural Network)檢測息肉,在Faster RCNN中用ROI(Region Of Interest)對齊操作代替ROI池操作,用GIoU(Generalized Intersection Over Union)損失代替原有平滑L1損失,用Soft-NMS(Soft Non-Maximum Suppression)代替傳統的NMS,在胃息肉圖像檢測中取得了良好的效果,但網絡較為復雜;ZHANG等[11]提出了一種基于增強的SSD架構(SSD-gpnet)用于息肉檢測的卷積神經網絡方法(Convolutional Neural Network,CNN),共收集了215 名胃息肉患者的404 張內窺鏡圖像。經過增強處理后,隨機選取708 幅圖像和50 幅圖像分別進行訓練和測試步驟,該研究的平均精度(mAP)為90.4%;LADDHA等[12]提出了檢測胃息肉的YOLOv3模型,數據集的來源為文獻[10]采用的數據集,測試結果mAP為82%;XIA等[13]開發出基于Faster-RCNN的胃病變自動檢測系統,用于檢測糜爛、息肉、潰瘍、黏膜下腫瘤、黃瘤、正常黏膜和無效圖像。系統接收器工作特性(ROC)分析給出了84%的結果,使用787 名患者的1,023,955 張內窺鏡圖像數據集,得到準確率、召回率和調和平均指標(F1-Score)分別為78.96%、76.07%和77.49%,但準確率不夠高。CAO等[14]使用1,941 張圖像組成的私人數據集,使用YOLOv3進行胃息肉檢測,該方法的計算準確率為91.6%,召回率為86.2%,F1-Score為88.8%。
以上方法各有優勢,但都存在不足,特別是精確度可以繼續提升。檢測中的主干網絡CNN模型在訓練過程中,數據集過小、含有大量噪聲等,或者模型過于復雜、訓練參數過多、訓練過度等,都極有可能使模型陷入過擬合。基于此,本文在充分分析CNN特點及目前國內外學者對CNN模型過擬合問題的研究基礎上,提出了一種面向最大值池化Dropout與權重衰減過擬合問題算法,并將該算法與SSD[8]網絡相結合,并通過理論推導與實驗對比,證明了該方法能有效避免檢測中主干CNN模型訓練過程的過擬合問題,提高了模型的泛化能力,進一步提高了目標的檢測能力。
SSD算法是一種目標檢測算法,由LIU等[8]在歐洲計算機視覺國際會議(ECCV2016)上提出。SSD借鑒Faster-RCNN[10]中的錨框機制,在特征圖上生成具有不同長寬比例的默認框進行預測,并使用金字塔結構,在低層檢測小尺寸目標,在高層檢測大尺寸目標。
SSD網絡結構如圖1所示,該結構由兩個部分組成,一部分是VGG16[15]基礎網絡,另一部分是附加特征層。其中,基礎網絡用來提取低尺度的特征映射圖,附加特征層用來提取高尺度的特征映射圖。SSD將VGG16網絡中的全連接層FC6和FC7替換成卷積層,去掉DropOut層和FC8層,將池化層pool5從2×2的大小及步長為2更改為3×3的大小和步長為1。VGG16中的Conv4_3作為第一個特征圖,經過多次卷積得到大小不同的特征圖Conv7、Conv8_2、Conv9_2、Conv10_2、Conv11_2,通過對多個特征圖同時進行分類預測和位置回歸,最后經過非極大值抑制(Non-Maximum Suppression,NMS)策略過濾掉重疊度較大的預測框,完成對不同大小目標的檢測。

圖1 SSD模型圖Fig.1 The SSD model diagram
SSD借鑒了Faster-RCNN中的預定義邊框(Anchor Box)的理念,為每個單元設置了寬高比不同的先驗框。每個單元有k個先驗框,每個先驗框會預測c個分類的分數和4 個位置偏移量,大小為m×n的特征圖將會產生(4+c)×k×m×n個預測參數。
先驗框架的比例隨著特征圖大小的減小,其線性增加,設Sk表示第k個特征圖先驗框和原圖大小的比例,m是特征圖的個數,則默認框大小計算公式(1)如下:
在模型訓練過程中,需要確定真實目標匹配的默認框。第一,每個默認框找到與其交并比(Intersection over Union,IoU)最大的先驗框,作為正樣本,如果一個先驗框沒有與任何默認框匹配,則作為負樣本;第二,在未匹配的先驗框中,如果存在與某個默認框的IoU大于一個閾值,那么也作為正樣本。設真實目標的默認框大小為SGT、先驗框的目標大小為SPB,則IoU計算如公式(2)所示:
SSD不同層提取的特征圖感受野如圖2所示,圖2(a)為低層特征圖的感受野,圖2(b)為中層特征圖的感受野,圖2(c)為高層特征圖的感受野,模型的低層特征由于經過的卷積運算較少,所以特征圖包含更多的紋理和細節信息,但語義信息不足,難以區分目標和背景,高層特征圖包含較多的語義信息,但是在層層卷積下采樣過程中丟失了大量細節信息。SSD采用金字塔結構的特征層進行目標檢測,利用大感受野的高級特征層預測大目標,利用小感受野的低級特征層預測小目標。然而,不同類別的特征層是獨立的,低層特征圖沒有利用高層特征圖的語義信息,導致真實目標與先驗框難以匹配,無法滿足檢測小目標更加精確的要求。同時,每個特征層是獨立的,信息不能共享。綜上,SSD算法對于小目標的檢測并不理想。

圖2 特征圖感受野示意圖Fig.2 Schematic diagram of receptive field on the feature map
上文介紹了傳統的SSD模型,本部分在上述基礎上設計一種最大值池Dropout與權重衰減CNN模型,與傳統的SSD模型相結合,以求在模型訓練過程中最大限度地避免過擬合情況的發生,并且將高層語義信息與底層細節信息進行融合,通過反卷積將SSD網絡結構中富含語義信息的高層特征映射到低層網絡,以求模型能更好地檢測小目標。
第二部分已說明,最大值池化是CNN池化層常用的方法,為了在模型訓練過程中避免過擬合,本文在CNN池化層引入最大值池化Dropout。
分析公式(3)可知,在池化區域執行最大值池化Dropout時,通過多項式排列選擇池化區域中經過遞增排列的第j個激活值,作為該池化區域的輸出值,即
假設第l層有r個Feature Map,每一個的大小為s,池化區域大小為t×t,又設池化步長為t,即不考慮重疊池化,則有rs/t個池化區域,則第l層要訓練的模型參數為 (t+1)rs/t(其中加一個偏置),即最大值池化要訓練的模型數量與輸入池化層的池化區域單元數量呈指數關系。引入最大值池化Dropout后,池化單元被隨機抑制,即t減少,要訓練的模型參數量則呈指數減少,這樣有效降低了模型復雜度,因而能更有效地抑制過擬合。
在訓練大型CNN時,除了使用上述最大值池化Dropout抑制單元避免過擬合,如果模型在某些區域里函數值變化劇烈,則意味著函數的參數值(權重)偏大,使得該區域里的導數值絕對值大、模型也變得復雜,權重衰減通過約束參數的范數使其不能過大,以此降低模型的復雜度,減小噪聲輸入的影響,從而在一定程度上減少過擬合發生,該方法也叫正則化方法。
設模型的損失函數L0如公式(5)所示,進行權重衰減計算時,在原損失函數L0中加一個懲罰項,即
公式(6)中,L0是原損失函數,w是網絡權重,即神經元的連接系數,λ(λ> 0)是懲罰項系數,用來衡量懲罰項與L0的比例關系,1/2是為了求導方便而設計的。上述懲罰項為網絡權重w的平方和,對公式(6)進行求導:
公式(7)中,b為網絡神經單元(如卷積核)的偏置,其包含在L0的on中,即on=w·xn-1+b,可以發現加上懲罰項后,對偏置b的更新沒有影響,設η為學習率,對于權重值w有公式如下:
分析公式(8)得出,在沒加懲罰項前,權重值w前的系數為1,即,加上懲罰項后,w前的系數變為1-ηλ,由于η、λ都為小于1的正數,所以1-ηλ< 1,即公式(8)的作用是為了減小w值,這就是權重衰減的理論意義。注意公式(8)中項是反向傳播的權重變化梯度,無論加不加懲罰項,其表達式都一樣。因此,這里所說的權重衰減項不包括此項。進一步對公式(8)進行分析,當w為正時,更新后的w'變小,當w為負值時,更新后的w'變大,由于|w|< 1(網絡歸一化后的權重),因此公式(8)的效果就是讓w向0靠近,即|w|→ 0,使w的值盡可能變小,也相當于減小了網絡的權重,降低了網絡復雜度,從而避免過擬合。需要指出的是,公式(8)中參數λ值的大小設置很重要,λ太大,權重w減小過快,可能會出現欠擬合,甚至無法訓練,而λ太小,又會出現過擬合。λ大小設置可采用基于Bayes決策規則調整法,該方法假定網絡的權重與偏置是具有特定分布的隨機變量,用統計方法進行自動計算,其詳細內容可參考文獻[16],限于篇幅,此處不做詳述。其中,權重衰減的計算流程如下。

低層特征層包含的細節信息較多,豐富其特征細節信息可以更準確地檢測小目標。本文采用反卷積[17-18]操作,通過參數調整將高層低分辨率特征圖映射為高分辨率特征圖,然后將高分辨率特征圖和低層對應的高分辨率特征圖進行拼接,使用于檢測小目標的低層特征圖的特征更加豐富,提高特征表達能力。反卷積操作過程與卷積操作相反,具體操作過程如圖3所示。
圖3(a)表示卷積過程,其將3×3卷積核作用于4×4特征圖中,卷積得到2×2的特征圖。圖3(b)表示反卷積過程,其操作與卷積相反,輸入2×2的特征圖,通過填充補零,并將3×3卷積核作用于特征圖,得到4×4特征圖。

圖3 操作示意圖Fig.3 Diagram of the operation
為了表示方便,本文提出的最大值池化Dropout與權重衰減方法簡稱為MDWS(Maxpooling Dropout and Weight Scaled),并將此方法與傳統SSD方法相結合,將傳統SSD的池化操作替換為MDWS,如圖4所示,網絡的基本結構為VGG16,遵循特征金字塔進行目標檢測,輸入的圖片經過改進的SSD網絡(SSD+MDWS網絡)主要提取出Conv4第三次卷積的特征,Fc7卷積的特征,Conv6、Conv7、Conv8、Conv9第二次卷積的特征,其中Conv4_3和Fc7提取到38×38、19×19的特征圖是用來檢測小目標的,為了讓小目標檢測效果更佳,將Fc7提取到的特征圖進行反卷積,與Conv4_3提取到的特征進行融合,將Conv6提取到的特征圖進行反卷積與Fc7提取到的特征進行融合,以增加特征,融合的過程如圖5所示,并且在Conv4和Fc7的池化處理中設置MDWS模塊,對于這兩種特征圖進行分類和回歸預測,在訓練的時候減少網絡的復雜度,抑制過擬合,提高特征圖內物體種類識別的精確度,有利于先驗框參數的調整。

圖4 SSD+MDWS網絡模型圖Fig.4 Diagram of SSD+MDWS network model

圖5 特征融合模塊Fig.5 Feature fusion module
操作系統為Ubuntu 18.04;處理器為Intel Core i7 CPU@3.00,RAM 16 GB;GPU為NVIDIA GeForce GTX 1080Ti(11 GB);深度學習框架為Tensorflow;利用CUDA 10.1和cuDNN 9.1加速訓練;使用Python作為主要編程語言。
實驗采用兩個數據集,分別是Hyper-Kvasir[19]和CVCClincDB[20]。Hyper-Kvasir是一個大型的多類公共胃腸道數據集,數據來自挪威Baerum醫院,所有的標簽都是由經驗豐富的醫生制作的;該數據集包含異常(不健康)和正常(健康)患者的110,079 張圖像和374 個視頻,共產生約100萬張圖像和視頻幀。本文采用Hyper-Kvasir-Segmented-Images數據集,該數據集提供了來自息肉類的1,000 張原始圖像,并提供了分割掩碼和邊界框,這個數據集是由制作Hyper-Kvasir數據集的作者提供的。CVC-ClincDB包含23 位病人的31 個序列的612 個標準清晰圖片,每張圖片的分辨率為384×288。部分樣本如圖6所示。

圖6 部分數據集內容Fig.6 Contents of partial dataset
訓練時將數據集按照8:2劃分為訓練集和測試集,輸入圖像分辨率設置為300×300,初始學習率為1e-4,如果損失連續在10 個輪次之后不降低,則自動調節下降學習率,本實驗采用與傳統SSD相同的圖像增強方法。
對于檢測任務,使用精確率(Precision)、召回率(Recall)、F1分數(F1-Score)及平均精確率均值(mAP)作為評估指標。設TP(True Positive)表示被正確判定為正類的樣本;FP(False Positive)表示被錯誤判定為正類的負樣本;FN(False Negative)表示被錯誤判定為負類的正樣本;TN(True Negative)表示被正確判定為負類的負樣本。
精確率(Precision)表示預測的正樣本的樣本數占所有預測為正樣本的樣本數的比例。精確度越高,分類器的性能越好,其定義見公式(9):
召回率(Recall)表示正確預測為正樣本的樣本數占實際正樣本數的比率,其定義見公式(10):
F1-Score表示調和平均指標,其定義見公式(11):
得到模型的精確率和召回率,繪制PR曲線,PR曲線下的面積代表平均精確率(AP)。計算方法是先確定目標的得分置信度閾值,然后計算出符合條件的各個置信度下,測試集各圖像中每類目標的精確率和召回率,接著繪制PR曲線圖,最后計算PR曲線圖的曲線下的面積,得到該類目標在該圖像上的AP值。將所有的圖像樣本求平均,即可得到該類目標的最終AP標準值,然后對所有類別的AP求平均,得到mAP,見定義公式(12)(其中N是類別數目):
4.4.1 Hyper-Kvasir數據集實驗
首先,將改進后的算法SSD+MDWS與其他四種流行的模型在Hyper-Kvasir的100 張圖片的測試集中做對比,模型為傳統SSD[7]、YoLoV3[12-13]、Faster R-CNN[9]和SSDgpnet[11]。相應的實驗結果如表1所示。分析表1中的數據發現,SSD+MDWS的整體性能是最好的,并且取得了最高的mAP,為92.23%,雖然在召回率的表現上,Faster R-CNN比SSD+MDWS多了約2%,但是準確率和F1-Score,都是本文提出的SSD+MDWS的效果更好,也在一定程度反映出網絡訓練時能夠更好地減少過擬合。

表1 Hyper-Kvasir實驗不同算法測試結果對比Tab.1 Test results comparison of different algorithms in Hyper-Kvasir experiment
4.4.2 CVC-ClincDB數據集實驗
同“4.2”部分介紹的實驗,采取上述四種模型(SSD、YoLoV3、Faster R-CNN和SSD-gpnet),用劃分好的測試集在各自訓練好的網絡中測試,得到的結果如表2所示。分析表2中的數據發現,SSD-gpnet的mAP、F1-Score、召回率分別為96.26%、94.00%、95.35%,比其他四個模型表現更好,但YOLOv3、Faster R-CNN、SSD-gpnet的準確率比SSD+MDWS表現更好,最高的多出4.66%。綜上所述,SSD+MDWS算法的綜合表現最好。圖7展示了本算法的檢測效果。

表2 CVC-ClincDB實驗不同算法測試結果對比Tab.2 Test results comparison of different algorithms in CVC-ClincDB

圖7 檢測效果圖Fig.7 Detection rendering
本文采用改進的SSD算法檢測息肉,在模型設計中,通過反卷積將低層和高層的語義信息進行融合,提高對小息肉的檢測能力,并且通過在池化層設計一個最大池化Dropout方法及在反向傳播中引入權重衰減機制,減少模型的復雜度,進而避免了模型訓練中的過擬合現象。本文的創新點主要有兩個:一是最大值池化Dropout的設計,采用池化區域單元值排序設計單元(神經元)丟棄方式,二是在反向傳播中引入懲罰項設計權重衰減的執行過程。通過理論分析與實驗對比驗證了本文提出的方法能有效避免過擬合現象,提高網絡泛化性能。通過實驗評估,本文設計的網絡顯示出更大的息肉檢測潛力。在每個評價指標中,都取得了比以前其他方法更好的結果。并且,良好的召回率和F1-Score表明本文提出的方法可以降低胃鏡檢查中誤檢和漏檢的風險,可以為醫生和患者提供更多的幫助。下一步,將該方法與更好的分類網絡相結合,以期準確分析息肉的類別,通過改進CNN架構和功能模塊實現更好的性能。