王 碩 李丕寶
(1.中國石油大學(華東)計算機科學與技術(shù)學院 青島 266580)(2.山東省立第三醫(yī)院急救中心 濟南 250000)
深度學習已經(jīng)在諸多領(lǐng)域得到了廣泛應(yīng)用,比如語義分割、計算機視覺,自然語言處理等,特別是在智慧醫(yī)療[1]上的創(chuàng)新性進展。目前的市場上,已經(jīng)不少的醫(yī)療圖像識別[3~4]產(chǎn)品,如浙江大學第一附屬醫(yī)院的甲狀腺結(jié)節(jié)良惡性輔助診斷系統(tǒng)。此類產(chǎn)品已經(jīng)達到了工業(yè)化應(yīng)用的標準,但也存在一定的局限性。例如在實際應(yīng)用中,患者只能夠在醫(yī)院進行診療,不可能隨時攜帶大型的醫(yī)療圖像識別設(shè)備;同時調(diào)查到,目前市場上還未發(fā)現(xiàn)與醫(yī)院合作自主研發(fā)的膽石病相關(guān)的智能診斷系統(tǒng)。
本文研發(fā)了一種基于深度學習的膽石病智能診斷系統(tǒng),可部署于離線移動端。高性能計算芯片技術(shù)[5]的發(fā)展具有了多核并行計算能力,可以實現(xiàn)在苛刻環(huán)境下的實時圖片處理;以及近幾年輕量化卷積神經(jīng)網(wǎng)絡(luò)[6~9]和移動端神經(jīng)網(wǎng)絡(luò)模型加速框架[10~11]的快速發(fā)展,使得輕量化神經(jīng)網(wǎng)絡(luò)部署在移動端設(shè)備上成為了可能。實驗表明,該系統(tǒng)在醫(yī)院采集的膽石病醫(yī)療圖像驗證集上進行膽石病識別驗證達到了94.8%的準確率;在運行速度方面,可將進行一次完整的膽石病識別流程控制在2s以內(nèi),能夠滿足工業(yè)化應(yīng)用的需求。
一次完整的膽石病CT醫(yī)療圖像識別具體工作流程圖如圖1所示,主要包括以下過程:1)獲取用戶的基本身份信息和原始的膽石病CT醫(yī)療圖像;2)判斷數(shù)據(jù)庫是否存有該患者用戶的診斷記錄;3)用直方圖均衡化方法對圖像進行預(yù)處理,增加圖像的對比度;4)對預(yù)處理之后的圖像進行感興趣區(qū)域進行標記;5)將圖像輸入到輕量化卷積神經(jīng)網(wǎng)絡(luò)當中進行識別;6)膽石病CT醫(yī)療圖像的識別結(jié)果;7)生成一份電子版的醫(yī)療報告;8)將該用戶的診斷結(jié)果與電子醫(yī)療包括存入到數(shù)據(jù)庫。
圖1 膽石病識別工作流程
膽石病CT圖像識別是膽石病智能診斷系統(tǒng)的關(guān)鍵部分,通常分為膽石病圖像預(yù)處理、膽石病ROI標記和膽石病的結(jié)石識別三個部分。
作為膽石病智能診斷系統(tǒng)的首要步驟,膽石病圖像的結(jié)果直接決定了接下來的步驟能否順利進行。本系統(tǒng)考慮到膽石病圖像智能識別的精度和速度,在這一環(huán)節(jié)采用了直方圖均衡化算法。
直方圖均衡化算法[12]步驟如下。
1)給出原始圖像的所有灰度級Sk(k=0,1,…,L-1)。
2)統(tǒng)計原始圖像各灰度級的像素數(shù)nk。
3)根據(jù)原圖像,計算灰度直方圖:
式中,n為總像素數(shù),nk為灰度級Sk的像素數(shù)。
4)計算原始圖像的累積直方圖:
(0≤Sk≤1,k=0,1,…,L-1)
5)取整計算:
6)確定映射關(guān)系:
Sk→Uk
7)統(tǒng)計新直方圖各灰度級Uk的像素數(shù)目nk。
8)計算新的直方圖:
在圖2中清晰地觀察到膽結(jié)石呈現(xiàn)出白色,與膽囊有明顯的顏色差異,以及各種人體組織和器官,如腎臟、膽囊、脊柱等。在圖3中是經(jīng)過直方圖均衡化算法處理的膽石病CT醫(yī)療圖像。
圖2 膽石病患者的CT醫(yī)療圖像
圖3 對比度增強之后的圖像
膽石病感興趣區(qū)域(Region of Interest,ROI)的標記指的是對于經(jīng)過預(yù)處理的圖像,選取部分感興趣的區(qū)域,并對其進行標記,作為輸入信息輸入到神經(jīng)網(wǎng)絡(luò)當中,只需要對ROI進行處理。經(jīng)過這樣的處理之后,圖像大量的無膽石病病灶區(qū)域就會被過濾掉,包含有膽石病病灶的標記區(qū)域在像素數(shù)量上要小于只經(jīng)過處理之后的膽石病圖像。
在前期的輕量化卷積神經(jīng)網(wǎng)絡(luò)訓練過程中,經(jīng)過大量的人為手工操作對膽石病圖像進行病灶位置的標記,最終確定ROI標記區(qū)域由上到下、由左到右四個坐標值為A(90,148)、B(90,276)、C(230,148)、D(230,276)。
膽石病的病灶識別是膽石病智能診斷系統(tǒng)的最關(guān)鍵部分,膽石病識別結(jié)果的準確率與病灶特征提取的好壞有著直接的影響?;诰植慷的J剿惴ǎ?3]、向梯度直方圖算法[14]等,都是機器學習領(lǐng)域中一些傳統(tǒng)的特征提取方法。隨著深度學習在近幾年的迅猛發(fā)展,在世界的重大比賽中受到了各界的關(guān)注。在2012年Krizhevsky[15]使用經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)在Imagenet圖像分類大賽上斬獲冠軍,自此之后神經(jīng)網(wǎng)絡(luò)提取特征的方式就得到了學術(shù)界的廣泛關(guān)注。本系統(tǒng)采用了改進的輕量化的深度卷積神經(jīng)網(wǎng)絡(luò)進行膽石病圖像的特征提取。
卷積神經(jīng)網(wǎng)絡(luò)作為深度學習領(lǐng)域中的經(jīng)典之作,在圖像分類、語義分割、目標檢測等領(lǐng)域已經(jīng)得到了廣泛應(yīng)用。人們通過傳統(tǒng)的不斷疊加網(wǎng)絡(luò)層數(shù)來提高CNN的性能。卷積神經(jīng)網(wǎng)絡(luò)從十層發(fā)展到上百層,甚至更有上千層的神經(jīng)網(wǎng)絡(luò),比如ResNet和DenseNet。神經(jīng)網(wǎng)絡(luò)處理能力與泛化性得到了提高,但隨之而來的就是模型的存儲問題以及速度問題。
近幾年來,輕量化卷積神經(jīng)網(wǎng)絡(luò)和移動端神經(jīng)網(wǎng)絡(luò)加速框架快速發(fā)展,通過創(chuàng)造出新的神經(jīng)網(wǎng)絡(luò)計算方式來減少網(wǎng)絡(luò)參數(shù),使得輕量化卷積神經(jīng)網(wǎng)絡(luò)更好地在移動終端設(shè)備上部署。本文使用的輕量化模型是MobileNetsV2。
深度可分離卷積是許多高效神經(jīng)網(wǎng)絡(luò)體系結(jié)構(gòu)的關(guān)鍵組成部分,我們將它應(yīng)用到輕量化卷積神經(jīng)網(wǎng)絡(luò)當中以此來提高網(wǎng)絡(luò)運行的效率。深度可分離卷積由兩部分組成Depthwise convolution和Pointwise convolution。Depthwise convolution通過對每個輸入通道應(yīng)用一個卷積核來執(zhí)行輕量化卷積,得到新的輸出特征圖。Pointwise convolution實際上是一個1×1的卷積,它將Depthwise convolution輸出的特征圖進行線性計算組合得到新的特征圖。
線性瓶頸塊看起來類似于殘差塊,其中每個塊包含一個輸入,經(jīng)過線性瓶頸的處理,最后是展開輸出處理的結(jié)果。
如圖4(a)的傳統(tǒng)的殘差塊,先用1×1卷積將輸入的特征圖的維度降低,然后進行3×3的卷積操作,最后再用1×1的卷積將維度變大。圖4(b)即為本文提出的結(jié)構(gòu),先用1×1卷積將輸入的特征圖維度變大,然后用3×3深度可分離卷積(depthwise convolution)方式做卷積運算,最后使用1×1的卷積運算將其維度縮小。注意,此時的1×1卷積運算后,使用的是線性激活函數(shù),而不是ReLU激活函數(shù),可保留更多特征信息。
圖4 殘差(a)與逆殘差(b)
我們使用的輕量化卷積神經(jīng)網(wǎng)絡(luò)的基本構(gòu)建塊是一個深度可分離殘差卷積。此塊的詳細結(jié)構(gòu)如表1所示。模型體系結(jié)構(gòu)包含32個卷積核的完全卷積層。由于ReLU6在計算精度較低的情況下具有較強的魯棒性,所以我們采用ReLU6作為非線性。在輕量化卷積神經(jīng)網(wǎng)絡(luò)中的所有卷積核,我們采用核大小為3×3,以此來提高整個神經(jīng)網(wǎng)絡(luò)框架的計算效率與性能。
表1 MobileNetsV2結(jié)構(gòu)
膽石癥的類型和形式多樣,部分膽石癥的病變也十分相似,這極大地阻礙了膽石癥的正確診斷和治療。為了測試本系統(tǒng)的膽石病智能識別系統(tǒng)的準確性,本文選用了合作醫(yī)院——山東省立第三醫(yī)院的膽石病醫(yī)療圖像數(shù)據(jù)。山東省立第三醫(yī)院是一家公立醫(yī)院,平均每年約有1萬人次的肝膽就醫(yī)病例,有著大量豐富的膽石病醫(yī)療圖像數(shù)據(jù)。在具體的實驗過程中,選取了100例膽石病患者的膽石病醫(yī)療CT圖像數(shù)據(jù),作為系統(tǒng)的驗證數(shù)據(jù)集,一共有673張膽石病醫(yī)療CT圖像。
我們的系統(tǒng)可以檢測CT圖像中膽結(jié)石的存在,確定并標記其位置和大小,并可以辨別不同類型的膽結(jié)石,如顆粒狀結(jié)石和泥沙狀結(jié)石以及一些重要的器官,如圖5所示。我們評估并比較了MobileNetV2和MobileNetV1作為用于對象檢測的特征提取器的性能,同時表2中給出了YOLOv2,原始SSD以及SSDLite的正確率比較。
圖5 診斷結(jié)果
表2 不同網(wǎng)絡(luò)之間的性能比較
膽石病智能診斷系統(tǒng)的實驗主要驗證系統(tǒng)的膽石病病灶診斷準確率和測試系統(tǒng)的適用性,包括模型運行時間與能耗。在安卓虛擬機測試的同時,我們將系統(tǒng)部署在小米7、HTC One M8等安卓手機上,來測試該系統(tǒng)在實際應(yīng)用中的準確率和用戶體驗。
在具體的實驗過程中,重新采集了45例共216張膽石病患者的醫(yī)療CT圖像,包括一人不同形狀大小以及密度的膽結(jié)石病灶等圖像。然后將其拷貝到手機內(nèi)存中,更改接口為調(diào)用手機相冊,進行膽石病驗證,具體實驗結(jié)果如表3所示。
表3 在不同安卓系統(tǒng)手機上的實驗結(jié)果
實驗結(jié)果相較于系統(tǒng)安裝在工作臺上的準確率較低,經(jīng)分析是因為工作臺上的系統(tǒng)運行環(huán)境與安卓系統(tǒng)手機上的系統(tǒng)運行環(huán)境有較大的差別。當系統(tǒng)運行在工作臺時,有充足的內(nèi)存資源以及高效的GPU等硬件設(shè)備,使得其識別準確率更高一些。最終實驗結(jié)果表明,膽石病智能診斷系統(tǒng)在實際應(yīng)用中,能夠高準確率、高速地完成膽石病病灶識別工作,可輔助醫(yī)師提高臨床診斷效率。
本文研發(fā)的膽石病智能診斷系統(tǒng)在數(shù)據(jù)特征提取環(huán)節(jié)采用了規(guī)模小、速度快、準確率高的輕量化卷積神經(jīng)網(wǎng)絡(luò),可以使整體系統(tǒng)準確率和運行效率得到提高。在國內(nèi)外的整個醫(yī)學研究領(lǐng)域,還未曾出現(xiàn)過與膽石病相關(guān)的智能診斷系統(tǒng)。整個系統(tǒng)可以離線部署在搭載安卓系統(tǒng)的移動終端設(shè)備上,并且可在本地完成醫(yī)療圖像識別任務(wù),體積小,可以在需要便攜、移動的環(huán)境下能夠很好地完成膽石病智能診斷的應(yīng)用需求,緩解膽石病臨床醫(yī)學領(lǐng)域的疑難問題。