1.南京大學醫(yī)學院附屬鼓樓醫(yī)院 a.臨床醫(yī)學工程處;b.婦產(chǎn)科,江蘇 南京 210008;2.東南大學 生物科學與醫(yī)學工程學院,江蘇 南京 210096
中孕期是胎兒各個系統(tǒng)發(fā)育成熟的最佳時期,超聲檢查顯示圖像清晰,并可以多角度觀察胎兒臟器,對明確畸形診斷,有效降低缺陷胎兒的出生率具有重要意義[1]。與此同時,中孕期胎兒結(jié)構(gòu)篩查工作也存在很大風險,檢查過程的不規(guī)范可能導致胎兒的畸形不能夠被檢出,導致缺陷兒的出生,也可能導致正常胎兒被誤診而因此引產(chǎn)[2]。因此,中孕期胎兒超聲檢查的質(zhì)量控制尤為重要。
在實際的臨床超聲檢查工作中,超聲檢查質(zhì)量控制主要是由具有豐富經(jīng)驗的專家醫(yī)師制定超聲圖像的質(zhì)量評價標準,在標準中規(guī)定需要存取的切面,然后根據(jù)每個切面制定相應的評價內(nèi)容,然后根據(jù)評價標準進行手動評價[2-3]。然而,手動評價存在很多缺點,如評價結(jié)果傾向于評價專家的主觀性、評價過程耗時耗力,增加了評價專家的工作負擔,實際工作中很難實現(xiàn)。為此,我們需要一種胎兒超聲圖像的自動質(zhì)量控制解決方案,該方案能夠根據(jù)專家醫(yī)師制定的質(zhì)量評價標準對醫(yī)生采集的圖像進行自動評價。然而,自動質(zhì)量控制的第一步就是要精確識別醫(yī)生采集的圖像為哪一個切面,因此,精確識別胎兒超聲篩查圖像對中孕期胎兒超聲篩查圖像的自動質(zhì)量控制至關(guān)重要。
近年來,隨著計算機硬件水平的飛速提升和互聯(lián)網(wǎng)技術(shù)的蓬勃發(fā)展,深度學習方法不斷地在實踐中取得革命性進展,在視覺和聽覺等感知問題上取得了令人矚目的成果。卷積神經(jīng)網(wǎng)絡(Convolutional Neural Networks,CNN)作為深度學習中的經(jīng)典模型之一,在計算機視覺任務上取得了巨大成功,對處理圖像的分類問題有著極高的效率[4]。在醫(yī)學領(lǐng)域,深度學習方法也發(fā)展迅速并在多個方面成功應用,郭磊[5]構(gòu)造了一個CNN,對宮頸細胞正常細胞與病變細胞進行識別分類;王媛媛[6]以肺部PET/CT三模態(tài)圖像為研究對象,構(gòu)建CNN,用于肺部腫瘤的分類和輔助診斷;余鎮(zhèn)等[7]基于CNN和遷移學習方法,完成了對胎兒顏面部超聲圖像的自動識別;熊彪[8]基于CNN,搭建圖像分類模型,應用于糖尿病視網(wǎng)膜病變的眼底圖像分類。受以上研究啟發(fā),本研究將基于深度學習方法,利用CNN,完成對中孕期胎兒超聲篩查切面的自動識別。
本研究主要基于Vgg16網(wǎng)絡模型,在該模型基礎上進行模型微調(diào),完成對中孕期胎兒超聲篩查切面的精確自動識別。下面將對該方法進行詳細介紹,主要包括CNN原理、Vgg16網(wǎng)絡介紹及模型微調(diào)原理。
1962年,生物學家Huble和Wiesel在研究貓腦視覺皮層過程中,提出“感受野”概念[9]。感受野中的細胞有著復雜的神經(jīng)網(wǎng)絡結(jié)構(gòu),不同細胞選擇性地響應不同刺激模式的特征,因此能夠更好地展示出自然圖像中的局部空間相關(guān)性。CNN就是受此研究的啟發(fā)而提出的[10],與傳統(tǒng)神經(jīng)網(wǎng)絡不同,CNN用卷積層和池化層替代了全連接層,通過權(quán)值共享、局部感受野和下采樣,大大減少了訓練參數(shù)的數(shù)量,并使其可以更加有效地學習越來越復雜、越來越抽象的視覺概念[11]。CNN主要由輸入層、卷積層、池化層(降采樣層)、全連接層和輸出層組成(圖1)。
圖1 CNN結(jié)構(gòu)圖
輸入層用來接收輸入數(shù)據(jù),對于圖像數(shù)據(jù),輸入數(shù)據(jù)為多維的像素值矩陣。卷積層的主要作用是通過卷積運算完成對輸入圖像的特征提取,卷積運算由預先設定的卷積核在輸入圖像上以一定的步長滑動來完成,卷積核內(nèi)的數(shù)值即為需要訓練的權(quán)重,卷積運算后輸出的圖像稱為特征圖。卷積層由很多神經(jīng)元組成,每個神經(jīng)元對輸入圖像在卷積核尺寸大小的范圍內(nèi)進行局部連接,通過自身的權(quán)重與輸入數(shù)值的加權(quán),得到輸出值。卷積層運算可用式(1)表示。
其中,l代表CNN的層數(shù),k為卷積核,表示前一層的輸出的一個特征圖,表示卷積核的權(quán)重,為每個輸出特征圖的偏置,σ()為激活函數(shù)。激活函數(shù)的主要作用是用來加入非線性因素,表示輸入輸出之間非線性的復雜的任意函數(shù)映射,以解決線性模型表達能力不足的缺陷,常見的激活函數(shù)主要有Sigmoid函數(shù)、Tanh函數(shù)和ReLU函數(shù)。
池化層的主要作用是進行池化操作,池化是縮小高、長方向上的空間的運算,其主要作用是對特征圖進行下采樣,減少需要處理的特征圖的元素個數(shù)。池化一般分為最大池化(Max Pooling)和平均池化(Average Pooling),最大池化是從目標區(qū)域中取出最大值,平均池化則是計算目標區(qū)域的平均值。
全連接層作用是將所有二維圖像的特征圖連接為一維特征作為全連接網(wǎng)絡的輸入,通過輸入加權(quán)求和并通過激活函數(shù)的響應得到全連接層的輸出。Softmax層為CNN的最后一層,以Softmax函數(shù)作為激活函數(shù),廣泛應用于多分類的神經(jīng)網(wǎng)絡中。Softmax函數(shù)公式如式(2)所示:
Softmax函數(shù)的作用就是如果判斷輸入屬于某一個類的概率大于屬于其他類的概率,那么這個類對應的值就逼近于1,其他類的值就逼近于0。其本質(zhì)是將一個K維的任意實數(shù)向量映射成K維的實數(shù)向量,其中向量中的每個元素取值都介于(0,1)之間,且所有元素的和為1[12]。
CNN訓練的目的就是獲得合適的權(quán)重值。輸入圖像進入網(wǎng)絡后,首先經(jīng)過連續(xù)的卷積和池化運算得到預測值,然后通過損失函數(shù)計算預測值和真實值之間的損失值,通過優(yōu)化器來更新權(quán)重值,優(yōu)化器一般使用梯度下降算法,經(jīng)過多次迭代循環(huán),直到獲得合適的權(quán)重值,使得損失值最小。損失函數(shù)主要有交叉熵誤差(Crossentropy Error)和均方誤差(Mean Squared Error),常用的優(yōu)化其算法主要有隨機梯度下降算法、Momentum算法、AdaGrad算法、RMSprop算法和Adam算法。CNN的訓練過程[13],見圖2。
圖2 卷積神經(jīng)網(wǎng)絡學習過程示意圖
Vgg16網(wǎng)絡是由牛津大學的Simonyan等[14]提出的一種深度CNN模型(圖3),并且在當年的ILSVRC比賽中取得了92.3%的Top-5正確率[14]。
如圖3所示,Vgg16網(wǎng)絡由16層含有可訓練參數(shù)的層組成,其中黑色表示卷積層,紅色表示池化層,藍色表示全連接層,棕色表示Softmax層。所有的卷積層都采用3×3的卷積核,步長為2,并進行0值填充,激活函數(shù)采用ReLU函數(shù),所有的池化層池化范圍為2×2,步長為2。這里我們用(長度×寬度×維數(shù))來表示輸入圖像、特征圖和卷積核的大小。圖中輸入圖像大小為(224×224×3),第1、2層為含有64個大小為(3×3×3)的卷積核的卷積層,輸出特征圖大小為(224×224×64),經(jīng)過池化層后,輸出特征圖大小為(112×112×64);第3、4層為含有128個大小(3×3×64)的卷積核的卷積層,輸出特征圖大小為(112×112×128),經(jīng)過池化后變?yōu)椋?6×56×128);第5、6、7層為含有256個大小(3×3×128)的卷積核的卷積層,輸出特征圖大小為(56×56×256),經(jīng)過池化后變?yōu)椋?8×28×256);第8、9、10層為含有512個大?。?×3×256)的卷積核的卷積層,輸出特征圖大小為(28×28×512),經(jīng)過池化后變?yōu)椋?4×14×512);第11、12、13層為含有512個大?。?×3×512)的卷積核的卷積層,輸出特征圖大小為(14×14×512),經(jīng)過池化后變?yōu)椋?×7×512);第14、15、16層為含有4096個神經(jīng)元的全連接層,最后經(jīng)過Softmax層完成1000個類別的分類。
圖3 Vgg16網(wǎng)絡結(jié)構(gòu)
模型微調(diào)是一種廣泛使用的模型復用方法,是指凍結(jié)預訓練模型中的一些層,而只訓練剩余的網(wǎng)絡層。預訓練模型是指已經(jīng)在大型數(shù)據(jù)集上訓練好的模型,如果這個原始數(shù)據(jù)集足夠大且足夠通用,那么預訓練網(wǎng)絡學到的特征的空間層次結(jié)構(gòu)可以有效地作為視覺世界的通用模型,因此這些特征可用于各種不同的計算機視覺問題,即使這些新問題涉及的類別和原始任務完全不同。該方法可以大大加快網(wǎng)絡訓練速度,同時避免訓練數(shù)據(jù)量過小而出現(xiàn)的過擬合現(xiàn)象[15-17]。本研究所使用的預訓練模型為在ImageNet[18]數(shù)據(jù)集上訓練好的Vgg16網(wǎng)絡模型,ImageNet為一個包含140萬張標記圖像,共1000個不同類別的數(shù)據(jù)集。本研究中,我們將微調(diào)最后6個卷積層和最后的全連接層。微調(diào)網(wǎng)絡的步驟如下:① 在已經(jīng)訓練好的基網(wǎng)絡(Base Network)上根據(jù)自己的分類需要更改全連接層分類器;② 凍結(jié)基網(wǎng)絡的相關(guān)層;③ 訓練所添加的部分;④ 解凍基網(wǎng)絡的一些層;⑤ 聯(lián)合訓練解凍的這些層和添加的部分。
1.4.1 實驗數(shù)據(jù)集
本實驗中,所有數(shù)據(jù)均采集自南京鼓樓醫(yī)院婦產(chǎn)科超聲診斷中心,共采集2016—2018年孕18~24周胎兒結(jié)構(gòu)篩查圖像76260張,包含31個切面圖像(表1)。其中,將68386張圖像作為訓練集,7874張圖像作為測試集,訓練集和測試集圖像均包含31個切面,訓練集中每個切面圖像數(shù)量均為2206張,測試集中每個切面圖像數(shù)量均為254張。
表1 采集切面名稱及分類序號
1.4.2 實驗環(huán)境
本研究采用基于Tensor flow為后端的Keras深度學習庫為主要框架。TensorFlow是Google開源的一個深度學習框架,其擁有有完整的數(shù)據(jù)流向與處理機制,同時還封裝了大量高效可用的算法及神經(jīng)網(wǎng)絡搭建方面的函數(shù),是當今深度學習領(lǐng)域中最火的框架之一[19]。Keras[13]是一個模型級(Model-level)的庫,為開發(fā)深度學習模型提供了高層次的構(gòu)建模塊。它不處理張量操作、求微分等低層次的運算。相反,它依賴于一個專門的、高度優(yōu)化的張量庫來完成這些運算,這個張量庫就是Keras的后端引擎(Backend Engine)。目前,Keras有三個后端實現(xiàn):TensorFlow后端、Theano后端和微軟認知工具包(Microsoft Cognitive Toolkit,CNTK)后端。實驗軟件環(huán)境為Windows 10 64位操作系統(tǒng),Python3.6.5,Tensor flow1.8.0,Keras 2.2.4,硬件環(huán)境為Intel i7 8700 3.20GHz CPU,NVIDIA GeForce GTX 1070 8G GPU,16G內(nèi)存。
本研究在基于Vgg16微調(diào)模型的基礎上,將輸入圖像調(diào)整大小為224×224,采用categorical crossentropy損失函數(shù),Adam優(yōu)化器,設置學習率為0.001,為充分利用所有的數(shù)據(jù),進行了1000次迭代,每次迭代選擇64個樣本數(shù)據(jù)進行梯度計算。在每次迭代后,分別計算訓練數(shù)據(jù)的準確率和損失值及驗證數(shù)據(jù)的準確率和損失值。根據(jù)訓練結(jié)果,準確率及損失值曲線見圖4~5。圖4和圖5中橫軸表示訓練迭代次數(shù),縱軸表示準確率和損失值。如圖4和圖5所示,在進行了約60次迭代后,模型開始收斂,經(jīng)過1000次迭代后,測試集準確率為94.8%。
圖4 訓練集及測試集準確率曲線
圖5 訓練集及測試集損失值曲線
為了更加直觀地查看分類效果,我們通過混淆矩陣來查看各個類別具體的分類結(jié)果,歸一化的混淆矩陣見圖6。圖6中的行代表該模型對超聲圖像預測的類別,列表示被預測圖像的實際類別,對角線表示預測的類別與實際類別相同的圖像所占比例。從圖6中可以看出,除鼻骨切面、主肺動脈管徑切面、腹壁臍帶插入部位切面、宮頸切面識別準確率較低外,總體而言,該模型對圖像的分類效果良好。
此外,我們采用國際通用分類評價參數(shù):精確率、召回率、F1分數(shù)對每一個類別的分類結(jié)果進行定量評價。其中,精確率是指被預測為該類的數(shù)據(jù)中確實為該類別的數(shù)據(jù)所占的比例,召回率是指某一類別的數(shù)據(jù)中被預測為該類別的數(shù)據(jù)所占的比例,F(xiàn)1分數(shù)是精確率和召回率的調(diào)和均值,取值為0~1,其值越大,表明網(wǎng)絡模型越穩(wěn)定。各類別分類結(jié)果參數(shù),見表2。
圖6 歸一化后的混淆矩陣
表2 各類別識別結(jié)果
中孕期胎兒超聲結(jié)構(gòu)篩查關(guān)乎胎兒的健康出生及家庭幸福,因此,超聲篩查圖像的質(zhì)量控制至關(guān)重要。然而,目前手動評分的質(zhì)量控制方法在實際的臨床工作中耗時耗力,很難實現(xiàn)。隨著深度學習方法的興起,人工智能在日常生活中的很多領(lǐng)域取得成功,超聲圖像的自動質(zhì)量控制也成為可能,精確識別超聲切面圖像是自動質(zhì)量控制的重要內(nèi)容,也是其他質(zhì)量控制內(nèi)容自動化的基礎。本研究利用CNN,通過在Vgg16網(wǎng)絡模型上微調(diào),對胎兒超聲篩查圖像的識別準確率為94.8%,能夠基本準確識別超聲圖像,但對其中少數(shù)類別的識別準確率偏低,在今后的研究中還需優(yōu)化網(wǎng)絡結(jié)構(gòu)和訓練技巧,進一步提高模型的泛化能力。本研究為胎兒超聲圖像的自動質(zhì)量控制打下了堅實的基礎,并可應用于其他醫(yī)學圖像的分類識別,具有良好的應用價值。