1.南京大學醫學院附屬鼓樓醫院 a.臨床醫學工程處;b.婦產科,江蘇 南京 210008;2.東南大學 生物科學與醫學工程學院,江蘇 南京 210096
中孕期是胎兒各個系統發育成熟的最佳時期,超聲檢查顯示圖像清晰,并可以多角度觀察胎兒臟器,對明確畸形診斷,有效降低缺陷胎兒的出生率具有重要意義[1]。與此同時,中孕期胎兒結構篩查工作也存在很大風險,檢查過程的不規范可能導致胎兒的畸形不能夠被檢出,導致缺陷兒的出生,也可能導致正常胎兒被誤診而因此引產[2]。因此,中孕期胎兒超聲檢查的質量控制尤為重要。
在實際的臨床超聲檢查工作中,超聲檢查質量控制主要是由具有豐富經驗的專家醫師制定超聲圖像的質量評價標準,在標準中規定需要存取的切面,然后根據每個切面制定相應的評價內容,然后根據評價標準進行手動評價[2-3]。然而,手動評價存在很多缺點,如評價結果傾向于評價專家的主觀性、評價過程耗時耗力,增加了評價專家的工作負擔,實際工作中很難實現。為此,我們需要一種胎兒超聲圖像的自動質量控制解決方案,該方案能夠根據專家醫師制定的質量評價標準對醫生采集的圖像進行自動評價。然而,自動質量控制的第一步就是要精確識別醫生采集的圖像為哪一個切面,因此,精確識別胎兒超聲篩查圖像對中孕期胎兒超聲篩查圖像的自動質量控制至關重要。
近年來,隨著計算機硬件水平的飛速提升和互聯網技術的蓬勃發展,深度學習方法不斷地在實踐中取得革命性進展,在視覺和聽覺等感知問題上取得了令人矚目的成果。卷積神經網絡(Convolutional Neural Networks,CNN)作為深度學習中的經典模型之一,在計算機視覺任務上取得了巨大成功,對處理圖像的分類問題有著極高的效率[4]。在醫學領域,深度學習方法也發展迅速并在多個方面成功應用,郭磊[5]構造了一個CNN,對宮頸細胞正常細胞與病變細胞進行識別分類;王媛媛[6]以肺部PET/CT三模態圖像為研究對象,構建CNN,用于肺部腫瘤的分類和輔助診斷;余鎮等[7]基于CNN和遷移學習方法,完成了對胎兒顏面部超聲圖像的自動識別;熊彪[8]基于CNN,搭建圖像分類模型,應用于糖尿病視網膜病變的眼底圖像分類。受以上研究啟發,本研究將基于深度學習方法,利用CNN,完成對中孕期胎兒超聲篩查切面的自動識別。
本研究主要基于Vgg16網絡模型,在該模型基礎上進行模型微調,完成對中孕期胎兒超聲篩查切面的精確自動識別。下面將對該方法進行詳細介紹,主要包括CNN原理、Vgg16網絡介紹及模型微調原理。
1962年,生物學家Huble和Wiesel在研究貓腦視覺皮層過程中,提出“感受野”概念[9]。感受野中的細胞有著復雜的神經網絡結構,不同細胞選擇性地響應不同刺激模式的特征,因此能夠更好地展示出自然圖像中的局部空間相關性。CNN就是受此研究的啟發而提出的[10],與傳統神經網絡不同,CNN用卷積層和池化層替代了全連接層,通過權值共享、局部感受野和下采樣,大大減少了訓練參數的數量,并使其可以更加有效地學習越來越復雜、越來越抽象的視覺概念[11]。CNN主要由輸入層、卷積層、池化層(降采樣層)、全連接層和輸出層組成(圖1)。

圖1 CNN結構圖
輸入層用來接收輸入數據,對于圖像數據,輸入數據為多維的像素值矩陣。卷積層的主要作用是通過卷積運算完成對輸入圖像的特征提取,卷積運算由預先設定的卷積核在輸入圖像上以一定的步長滑動來完成,卷積核內的數值即為需要訓練的權重,卷積運算后輸出的圖像稱為特征圖。卷積層由很多神經元組成,每個神經元對輸入圖像在卷積核尺寸大小的范圍內進行局部連接,通過自身的權重與輸入數值的加權,得到輸出值。卷積層運算可用式(1)表示。

其中,l代表CNN的層數,k為卷積核,表示前一層的輸出的一個特征圖,表示卷積核的權重,為每個輸出特征圖的偏置,σ()為激活函數。激活函數的主要作用是用來加入非線性因素,表示輸入輸出之間非線性的復雜的任意函數映射,以解決線性模型表達能力不足的缺陷,常見的激活函數主要有Sigmoid函數、Tanh函數和ReLU函數。
池化層的主要作用是進行池化操作,池化是縮小高、長方向上的空間的運算,其主要作用是對特征圖進行下采樣,減少需要處理的特征圖的元素個數。池化一般分為最大池化(Max Pooling)和平均池化(Average Pooling),最大池化是從目標區域中取出最大值,平均池化則是計算目標區域的平均值。
全連接層作用是將所有二維圖像的特征圖連接為一維特征作為全連接網絡的輸入,通過輸入加權求和并通過激活函數的響應得到全連接層的輸出。Softmax層為CNN的最后一層,以Softmax函數作為激活函數,廣泛應用于多分類的神經網絡中。Softmax函數公式如式(2)所示:

Softmax函數的作用就是如果判斷輸入屬于某一個類的概率大于屬于其他類的概率,那么這個類對應的值就逼近于1,其他類的值就逼近于0。其本質是將一個K維的任意實數向量映射成K維的實數向量,其中向量中的每個元素取值都介于(0,1)之間,且所有元素的和為1[12]。
CNN訓練的目的就是獲得合適的權重值。輸入圖像進入網絡后,首先經過連續的卷積和池化運算得到預測值,然后通過損失函數計算預測值和真實值之間的損失值,通過優化器來更新權重值,優化器一般使用梯度下降算法,經過多次迭代循環,直到獲得合適的權重值,使得損失值最小。損失函數主要有交叉熵誤差(Crossentropy Error)和均方誤差(Mean Squared Error),常用的優化其算法主要有隨機梯度下降算法、Momentum算法、AdaGrad算法、RMSprop算法和Adam算法。CNN的訓練過程[13],見圖2。

圖2 卷積神經網絡學習過程示意圖
Vgg16網絡是由牛津大學的Simonyan等[14]提出的一種深度CNN模型(圖3),并且在當年的ILSVRC比賽中取得了92.3%的Top-5正確率[14]。
如圖3所示,Vgg16網絡由16層含有可訓練參數的層組成,其中黑色表示卷積層,紅色表示池化層,藍色表示全連接層,棕色表示Softmax層。所有的卷積層都采用3×3的卷積核,步長為2,并進行0值填充,激活函數采用ReLU函數,所有的池化層池化范圍為2×2,步長為2。這里我們用(長度×寬度×維數)來表示輸入圖像、特征圖和卷積核的大小。圖中輸入圖像大小為(224×224×3),第1、2層為含有64個大小為(3×3×3)的卷積核的卷積層,輸出特征圖大小為(224×224×64),經過池化層后,輸出特征圖大小為(112×112×64);第3、4層為含有128個大小(3×3×64)的卷積核的卷積層,輸出特征圖大小為(112×112×128),經過池化后變為(56×56×128);第5、6、7層為含有256個大小(3×3×128)的卷積核的卷積層,輸出特征圖大小為(56×56×256),經過池化后變為(28×28×256);第8、9、10層為含有512個大小(3×3×256)的卷積核的卷積層,輸出特征圖大小為(28×28×512),經過池化后變為(14×14×512);第11、12、13層為含有512個大小(3×3×512)的卷積核的卷積層,輸出特征圖大小為(14×14×512),經過池化后變為(7×7×512);第14、15、16層為含有4096個神經元的全連接層,最后經過Softmax層完成1000個類別的分類。

圖3 Vgg16網絡結構
模型微調是一種廣泛使用的模型復用方法,是指凍結預訓練模型中的一些層,而只訓練剩余的網絡層。預訓練模型是指已經在大型數據集上訓練好的模型,如果這個原始數據集足夠大且足夠通用,那么預訓練網絡學到的特征的空間層次結構可以有效地作為視覺世界的通用模型,因此這些特征可用于各種不同的計算機視覺問題,即使這些新問題涉及的類別和原始任務完全不同。該方法可以大大加快網絡訓練速度,同時避免訓練數據量過小而出現的過擬合現象[15-17]。本研究所使用的預訓練模型為在ImageNet[18]數據集上訓練好的Vgg16網絡模型,ImageNet為一個包含140萬張標記圖像,共1000個不同類別的數據集。本研究中,我們將微調最后6個卷積層和最后的全連接層。微調網絡的步驟如下:① 在已經訓練好的基網絡(Base Network)上根據自己的分類需要更改全連接層分類器;② 凍結基網絡的相關層;③ 訓練所添加的部分;④ 解凍基網絡的一些層;⑤ 聯合訓練解凍的這些層和添加的部分。
1.4.1 實驗數據集
本實驗中,所有數據均采集自南京鼓樓醫院婦產科超聲診斷中心,共采集2016—2018年孕18~24周胎兒結構篩查圖像76260張,包含31個切面圖像(表1)。其中,將68386張圖像作為訓練集,7874張圖像作為測試集,訓練集和測試集圖像均包含31個切面,訓練集中每個切面圖像數量均為2206張,測試集中每個切面圖像數量均為254張。

表1 采集切面名稱及分類序號
1.4.2 實驗環境
本研究采用基于Tensor flow為后端的Keras深度學習庫為主要框架。TensorFlow是Google開源的一個深度學習框架,其擁有有完整的數據流向與處理機制,同時還封裝了大量高效可用的算法及神經網絡搭建方面的函數,是當今深度學習領域中最火的框架之一[19]。Keras[13]是一個模型級(Model-level)的庫,為開發深度學習模型提供了高層次的構建模塊。它不處理張量操作、求微分等低層次的運算。相反,它依賴于一個專門的、高度優化的張量庫來完成這些運算,這個張量庫就是Keras的后端引擎(Backend Engine)。目前,Keras有三個后端實現:TensorFlow后端、Theano后端和微軟認知工具包(Microsoft Cognitive Toolkit,CNTK)后端。實驗軟件環境為Windows 10 64位操作系統,Python3.6.5,Tensor flow1.8.0,Keras 2.2.4,硬件環境為Intel i7 8700 3.20GHz CPU,NVIDIA GeForce GTX 1070 8G GPU,16G內存。
本研究在基于Vgg16微調模型的基礎上,將輸入圖像調整大小為224×224,采用categorical crossentropy損失函數,Adam優化器,設置學習率為0.001,為充分利用所有的數據,進行了1000次迭代,每次迭代選擇64個樣本數據進行梯度計算。在每次迭代后,分別計算訓練數據的準確率和損失值及驗證數據的準確率和損失值。根據訓練結果,準確率及損失值曲線見圖4~5。圖4和圖5中橫軸表示訓練迭代次數,縱軸表示準確率和損失值。如圖4和圖5所示,在進行了約60次迭代后,模型開始收斂,經過1000次迭代后,測試集準確率為94.8%。

圖4 訓練集及測試集準確率曲線

圖5 訓練集及測試集損失值曲線
為了更加直觀地查看分類效果,我們通過混淆矩陣來查看各個類別具體的分類結果,歸一化的混淆矩陣見圖6。圖6中的行代表該模型對超聲圖像預測的類別,列表示被預測圖像的實際類別,對角線表示預測的類別與實際類別相同的圖像所占比例。從圖6中可以看出,除鼻骨切面、主肺動脈管徑切面、腹壁臍帶插入部位切面、宮頸切面識別準確率較低外,總體而言,該模型對圖像的分類效果良好。
此外,我們采用國際通用分類評價參數:精確率、召回率、F1分數對每一個類別的分類結果進行定量評價。其中,精確率是指被預測為該類的數據中確實為該類別的數據所占的比例,召回率是指某一類別的數據中被預測為該類別的數據所占的比例,F1分數是精確率和召回率的調和均值,取值為0~1,其值越大,表明網絡模型越穩定。各類別分類結果參數,見表2。

圖6 歸一化后的混淆矩陣

表2 各類別識別結果
中孕期胎兒超聲結構篩查關乎胎兒的健康出生及家庭幸福,因此,超聲篩查圖像的質量控制至關重要。然而,目前手動評分的質量控制方法在實際的臨床工作中耗時耗力,很難實現。隨著深度學習方法的興起,人工智能在日常生活中的很多領域取得成功,超聲圖像的自動質量控制也成為可能,精確識別超聲切面圖像是自動質量控制的重要內容,也是其他質量控制內容自動化的基礎。本研究利用CNN,通過在Vgg16網絡模型上微調,對胎兒超聲篩查圖像的識別準確率為94.8%,能夠基本準確識別超聲圖像,但對其中少數類別的識別準確率偏低,在今后的研究中還需優化網絡結構和訓練技巧,進一步提高模型的泛化能力。本研究為胎兒超聲圖像的自動質量控制打下了堅實的基礎,并可應用于其他醫學圖像的分類識別,具有良好的應用價值。