李大舟,張詩瑞,高 巍
(沈陽化工大學 計算機科學與技術學院,遼寧 沈陽 110142)
退行性脊柱疾病是導致腰背疼痛的主要原因,是脊柱外科中最常見的疾病脊椎疾病。《1990~2016年中國及省級行政區疾病負擔報告》顯示脊椎問題,包括頸部和下腰部,一直是影響國內各省級行政區人群生命質量的最重要疾病,嚴重制約了人群健康期望壽命的提高[1]。脊椎疾病不僅帶來了巨大的醫療開銷,而且因患病導致的殘疾造成了巨大的社會成本。
脊椎疾病的診斷難度大、早期發現效率低,給及時治療帶來了很大的難度。磁共振成像因其很好地對人體軟組織(例如神經組織)進行成像,是目前臨床上診斷脊椎疾病的常用手段。放射科醫生根據核磁圖像能夠確定神經根受壓的位置、病因和嚴重程度,生成具有逐級詳細信息的區域,并將這些發現傳達給醫師及患者。但是,核磁共振數據復雜、包含多個切片和多個模態數據,造成醫生的工作重復量大、效率低。為了解決這個問題,國內外研究者引入人工智能技術來提高診斷效率,降低漏診、誤診率,實現了醫生診斷的一致性。
針對脊柱磁共振圖像的特點,該文提出了一種針對性的處理方法和訓練方法,解決了在醫學領域中醫學數據的采集、標注困難和醫療數據集數量少的問題。同時,著重于提高網絡的計算效率,降低內存占用,以滿足該模型在嵌入式設備、移動設備等資源有限的應用場景的需要,解決了訓練深度卷積神經網絡過程中計算和內存需求量大的問題,將卷積神經網絡應用在退行性脊柱疾病的自動化篩查領域。
早期的脊椎圖像特征提取依靠人工實現特征工程。2008年,Corso等人使用概率圖模型來進行脊椎的定位和分割任務[2]。2008年,趙燕燕等人使用形態學的分水嶺算法,實現了脊柱圖像的特征提取并完成了分割任務[3]。2011年,Koompairojn S等利用T2軸狀位圖像,使用手工制作的多層感知器特征進行脊椎疾病的分類[4]。2012年,Ghosh等[5];2013年,Oktay和Akgul等[6]使用人工設計的梯度方向直方圖特征來對脊椎特征進行提取。2018年,吳裕浩提出了一種基于隨機森林的椎骨CT圖像檢測算法,實現了椎骨特征提取和椎骨檢測[7]。
2019年,付光華等人使用邊緣檢測和區域生長的方法,實現了脊椎區域的分割[8]。這些基于人工特征工程的傳統算法需要耗費大量的時間在特征工程的設計上,而且針對特定數據集所設計的特征工程往往存在著嚴重的過擬合。一旦更換數據集,則需要重新設計特征工程。在實際應用場景下的使用復雜,分析過程難以理解。
近年來,神經網絡逐步取代傳統算法。基于卷積神經網絡算法自動進行特征工程學習的算法取代了傳統的人工設計特征的方法,在計算機視覺領域的各方面均取得了最優的成績。1995年,LoSCB等人使用含有兩個隱藏層的卷積神經網絡算法,對胸部CT圖像中的肺結節進行了檢測[9]。2017年,Rajpurkar P等人使用改良的DenseNet,使用150 000個訓練樣本,對14種不同的肺部疾病進行了分類[10]。2017年,Jamaludin等開發了多任務VGG-M結構,用于對椎間盤退變、中央管狹窄和其他脊柱疾病的分級[11]。2018年,田娟秀等人基于Unet網絡[12]對腫瘤圖像特征進行了提取和分析[13]。2019年,劉帆將卷積神經網絡方法和機器學習中經典特征提取方法相結合,實現了對脊柱側彎疾病的分級診斷[14]。2019年,洪雁飛等人使用了卷積神經網絡的方法提取脊椎圖像特征[15]。這些算法雖然取得了比傳統算法識別率更高的效果,但模型訓練時間長、占用資源大、不利于模型在實際應用場景中的使用。
醫學圖像數據集具有數據量少、樣本之間差異性小的特點。該文提出的Depthwise-ResNet模型針對經典的ResNet殘差結構進行了改進,保證了在模型擬合能力不降低的同時,可以減緩模型對內存的過度依賴,提高了模型的運算效率。
針對脊柱醫學圖像提出了針對性的數據處理方法。提出的模型將深度可分離卷積引入了傳統的ResNet的殘差結構中。提出的改進的結構能在保證模型效果的同時,減少參數數量,提高運算速度并減少內存占用,模型的主要結構如圖1所示。

圖1 設計的脊椎疾病分類模型
磁共振圖像在采集過程中,存在對比度低,圖像含有較多的噪聲等問題。在將圖像輸入網絡中進行訓練之前,使用自適應直方圖均衡化對輸入圖像進行了對比度增強,使用中值濾波,實現了對圖像噪聲的處理。
2.2.1 自適應直方圖均衡化
醫學圖像由于本身及成像條件的限制,圖像的對比度很低,主要以圖像的低頻部分組成。但是,考慮到人眼對高頻信號(圖像邊緣部分)比較敏感,因此該文通過提高圖像高頻部分達到了提高視覺效果的目的。
采用自適應直方圖均衡化算法增強醫學圖像的對比度,以增強圖像的高頻部分。自適應直方圖均衡化(AHE)是一種提升圖像對比度的計算機圖像處理技術。AHE算法將原始圖像分為不重疊的局部小塊,然后在每一局部塊進行直方圖均衡化,其計算方法如公式(1)所示:
(1)
式中,Sk表示均衡化之后的灰度值,nj表示原圖中某個灰度色階j的橡樹數量,N表示圖像像素總和。
通過自適應直方圖均衡化算法很好地增強了核磁共振中脊椎部位的圖片局部信息。
2.2.2 中值濾波
磁共振圖像在采集過程中,存在脈沖干擾,因此核磁共振脊柱圖像具有較強的噪聲。為了消除該噪聲,該文選用非線性平滑中值濾波預處理核磁共振脊柱部位圖片。中值濾波是一種去除噪聲的非線性處理方法。中值濾波的基本思想是用一點的一個領域中各值的中值替代像中該點的值。該文使用中值濾波在輸入模型前對圖片進行了處理。
該文使用中間幀與相鄰幀構成的三通道彩色圖作為提出的Depthwise-ResNet模型的輸入,核磁共振成像從不同角度提供了對于身體某個部位的切片掃描信息。在數據集中不僅包含專家標注信息的中間幀的圖像,還包含著大量的可用信息在其他的切片。通過對核磁共振影像數據集的研究分析,發現矢狀位中間幀的鄰近幀的關鍵點位置以及相關的醫學特征與數據集中專家標注的中間幀具有高相似性。因此,將含有專家標注的中間幀與其前一幀和后一幀圖像數據在通道維度上組合,輸入模型進行訓練。
使用one-hot編碼方式對輸入模型的標簽值進行編碼。在脊椎磁共振數據集中,由于不同的疾病類別之間的相似度大,不同專家的標注信息(真實標簽值)并不具有一致性,標注錯誤時有發生。傳統的one-hot編碼方式將樣本的真實標簽所對應的分類所映射的整數值為1,其他位均為0。忽略了錯誤的損失值,同時對標注標簽過度自信。此時使用傳統的one-hot編碼訓練模型將會導致模型過度自信而缺乏泛化性。
標簽平滑是機器學習中的一種針對標簽的正則化方法。標簽平滑把one-hot編碼中標簽為1的那一項進行衰減,衰減的那一部分平均分配到其他的每一個類別之中去,從而避免了過分相信訓練樣本。假設原標簽分布為q(k|x)=δk,y,那么標簽平滑之后的標簽分布q'(k|x)如公式(2)所示:
q'(k|x)=(1-ε)δk,y+εu(k)
(2)
其中,u(k)為一個概率分布。該文采用均勻分布,并假設需要分類的類別共有K類,該文使用的標簽平滑之后的標簽分布如公式(3)所示:
(3)

將經過預處理的圖片數據和經過one-hot編碼的標簽值輸入到提出的Depthwise-ResNet模型中進行訓練。在傳統的ResNet網絡的殘差結構的基礎上,將深度可分離卷積引入到殘差結構中。將標準卷積分解成了深度卷積和一個1*1卷積,輸入x先經歷一個3*3 的深度卷積,再經過一個1*1卷積,在每次卷積操作之后緊接一個批標準化層和一個ReLu激活函數。模型結構單元如圖2所示。

圖2 Depthwise-ResNet模型結構單元
2.5.1 深度卷積
圖2中卷積核尺寸為3*3的深度卷積將卷積核拆解成單通道形式,深度卷積的卷積核個數等于輸入特征圖的通道數,其每個卷積核對應著輸入圖像的一個通道。圖3展示了一個當輸入特征圖通道數為3時的深度卷積過程。相比標準卷積,在深度卷積部分,卷積核的每個通道與圖片的單個通道一一對應。每一個卷積核只提取一個通道的特征,卷積核尺寸為3*3時的深度卷積的參數量僅為標準卷積的1/9。

圖3 深度卷積過程
2.5.2 批標準化層
圖3中3*3深度卷積運算之后生成的特征圖具有不同的數據分布,這不利于模型特征的學習。該文在3*3深度卷積輸出后緊接批標準化層,對每一個最小訓練批次進行歸一化操作,批標準化將每個輸入批次的數據轉換為以0為均值,1為方差的正態分布,來保證輸入卷積層的數據分布具有一致性。這樣,使得模型更加專注于特征的提取,不必為不一致的分布增加額外的運算操作和參數,從而提高了該模型的運算速度,減少了模型的參數量。此外,為了恢復部分被修改的特征,在批標準化加入了γ,β。為了提高模型的運算效率,將批標準化引入殘差結構中,批標準化的計算公式為:
(4)

2.5.3 1*1卷積
圖3中3*3深度卷積生成的通道分離的特征圖作為1*1卷積層的輸入,將由3*3深度卷積得到的多個通道的特征圖在通道維度上進行信息的交互并實現特征圖通道數的變化。1*1卷積過程的卷積核深度等于輸入特征圖的通道數,卷積核個數等于輸出特征圖的通道數。該文在每一個3*3深度卷積之后均使用一個1*1卷積用于融合特征圖的通道信息以及特征圖維度的變換。
文中使用的數據集是脊柱的磁共振影像數據集,共包含訓練集150例和測試集50例。磁共振成像是放射學中常用到的一種醫學成像技術。磁共振成像技術使用強磁場、磁場梯度和無線電波來生成人體器官的圖像。在脊柱磁共振的影像數據中,神經、脊髓、椎體和椎間盤的氫原子含量不同,因此呈現出的亮度也不同。
文中使用的數據集中每一例數據包括訓練所需要的灰度圖像和與圖像相對應的標注數據。灰度圖像數據包含從胸12(T12)腰1(L1)間的椎間盤開始到腰5(L5)骶1(S1)間的椎間盤結束的共6塊椎體和5塊椎間盤的圖像像素數據信息。標注信息包含與之相對應的各個椎骨和椎間盤質心關鍵點的坐標,以及每個椎骨和椎間盤所屬的病變類型。數據集中椎體病變類型分成2類:正常和退行性病變;椎間盤病變類型分成5類:正常、膨出、突出、脫出、椎體內疝出。椎體和椎間盤病變類型及編碼見表1。

表1 椎體、椎間盤分類編碼
評價指標采用了精確率、召回率、F1-Score、內存性能和一次完整迭代所需要時間。FP代表把負類預測為正類的樣本數;FN代表把正類預測為負類的樣本數;TP代表把正類預測為正類的樣本數;TN代表把負類預測為負類的樣本數。選用的5個評價指標的計算公式如下:
精確率的計算公式:
(5)
召回率的計算公式:

(6)
F1-Score的計算公式:
(7)
內存占用(兆字節):
N=模型占用的內存大小
(8)
運算速度(個/秒):
S=病例樣本的平均運算速度
(9)
在進行實驗訓練的過程中,針對醫學圖像的數據特點以及在訓練過程中所遇到的過擬合等問題,對該脊椎數據集采取了多種針對性的處理和訓練方法。這些方法主要包括尺度擾動、帶權重的損失函數和過采樣。
3.3.1 尺度擾動
該文在對椎骨椎間盤圖片進行裁取時采用了尺度擾動的方法。在數據集數據統計結果的基礎上,以關鍵點為中心,上下兩個關鍵點垂直距離h為基準,隨機截取垂直長度為h到1.2h,水平寬度為0.8h到h的矩形范圍。在實際訓練時,使用上述的尺度擾動方法截取的隨機尺寸圖像作為模型的輸入圖像。
3.3.2 帶權重的損失函數
所用數據集一共包含7個病變類別。椎體包含2類:正常、退行性改變。椎間盤包含5類:正常、膨出、突出、脫出和椎體內疝出。對數據集中每個類的類別進行統計后,發現數據集中椎間盤-脫出共有32例,椎間盤-椎體內疝出共有5例,而椎體-退行性改變有587例,數據集中存在類別不均衡的情況。為了緩解類別不均衡給模型效果帶來的不利影響,使模型學到更多的少數類特征,采用了帶權重的損失函數和過采樣方法來解決數據集類別不均衡問題。
帶權重的損失函數是一種改善類別不均衡的方法。通過對少數類的損失值乘上一個大于1的系數,以此來定向提升模型的召回率,增加少數類錯分的懲罰代價,并將此代價直接體現在目標函數里。通過該方法優化目標函數調整模型在小樣本上的注意力。在實現過程中,使用PyTorch框架的CrossEntropyLoss損失函數的weight參數來設置損失函數的權重。根據訓練集中各個類數量所占訓練集樣本總數的比例的倒數,對帶損失的交叉熵損失函數的權重向量進行了初始化并進行訓練。
3.3.3 過采樣
數據不平衡是指在分類樣本中,各個類別所占的比例不均等。通過對數據集中各個類別樣本數量進行統計后發現,該數據集中不同類別樣本存在著嚴重的類別不平衡。為了解決不平衡問題,采用了過采樣技術。過采樣方法利用現有的正樣本生成新的正樣本。過采樣增加了正樣本數量以及正樣本的多樣性,提升了模型對正樣本的分類效果。
為了保證模型能學習到足夠多的特征,增大正樣本的抽樣比例。此外,采取的生成新樣本的方式是,在將正樣本圖片輸入模型進行訓練之前隨機添加隨機高斯噪聲,并對正樣本圖像進行小角度的隨機旋轉。
3.4.1 模型層數選擇
提出的Depthwise_ResNet模型的卷積層層數會影響模型的表達能力。為了選擇最優的Depthwise_ResNet模型層數,使用不同的單元數量進行訓練。圖4記錄了精確率、召回率、F1-Score的數值與層數的關系。

(a)迭代輪數與精確率

(b)迭代輪數與召回率

(c)迭代輪數與F1-Score圖4 模型參數的選擇
從圖4的實驗結果可以看到,當Depthwise_ResNet模型結構單元數量為6時,模型的精確率、召回率和F1-Score均為最高,所以使用的最終模型的Depthwise_ResNet模型結構單元數量為6,模型總層數為13。
模型結構見圖5。

圖5 提出的Depthwise_ResNet模型網絡結構
在每一個卷積操作之后,緊接一個批標準化層和一個線性激活函數ReLu層。每一個3*3的深度卷積都緊接一個1*1卷積來融合通道信息以及改變輸出特征圖的維度。將卷積操作得到的特征圖送入輸入維度為512,輸出維度為7的全連接層中,計算并輸出分類結果。
3.4.2 標簽平滑系數的選擇
對one-hot 編碼進行了標簽平滑。圖6展現了在不同的標簽平滑系數ε下模型的F-Score分數,橫軸是平滑系數ε,縱軸是F1-Score的值。在基準模型下,圖6表明不添加標簽平滑時,模型的F1-Score為0.671;當標簽平滑參數ε取0.001時,模型的F1-Score最高,達到了0.710。該結果證明了在模型中加入標簽平滑解決了過擬合問題。

圖6 標簽平滑系數選擇
3.4.3 實驗結果分析
表2展示了使用不同的數據處理方法和訓練方法進行訓練的結果。表2中基準模型是該文提出的結構單元數量為6的Depthwise_ResNet模型。表2每一行表明了對提出的Depthwise_ResNet模型使用不同的訓練方法進行訓練的結果。

表2 訓練細節的處理
表2中還可以看到鄰近幀擴充可以提升F1-Score 0.015個百分點;尺度擾動可以提高F1-Score 0.013個百分點;帶權重的損失函數可以提升F1-Score 0.02個百分點;標簽平滑能提高F1-Score 0.01個百分點;過采樣操作可以提高F1-Score 0.017個百分點。該結果表明鄰近幀擴充的數據增強方式和帶權重的損失函數能夠在一定程度上降低過擬合,提高模型的表現能力。綜上,所用的最終的模型的F1-Score 為0.710,比基準模型提高0.038個百分點。
3.4.4 與經典模型的比較
在控制其他變量不變的情況下,該文提出的Depthwise_ResNet模型與AlexNet[16]、ResNet[17]、VGG[18]等經典卷積神經網絡進行了比較。表3給出了上述5種算法在5種評價指標下的比較結果。

表3 提出的Depthwise_ResNet模型與經典模型的比較
表3中結果表明,在保證模型能力的同時,提出的Depthwise_ResNet模型結構在F1-Score、精確率、運算速度、內存占用方面均取得了比傳統算法更好的結果。Depthwise_ResNet模型減少35%到85%的計算時間,降低70%以上的內存占用。
在資源有限的應用場景中,Depthwise_ResNet模型比傳統的模型占用更小的內存消耗和更低的延遲,節省更大的計算成本。
提出了一種輕量化的Depthwise_ResNet模型,實現依據核磁共振圖像了對脊椎疾病進行分類。針對醫學影像的核磁共振數據處理,提出的鄰近幀擴充、尺度擾動方法能夠小幅度提高Depthwise_ResNet模型的表現能力。與傳統的AlexNet、ResNet和VGG相比,提出的模型能夠減少85%的內存占用和60%的計算時間,并且提高了預測效果。