張 锏,李雪竹
宿州學(xué)院信息工程學(xué)院,宿州,234000
傳統(tǒng)的計算機(jī)視覺采用統(tǒng)計學(xué)的方法對目標(biāo)進(jìn)行分析,比如,圖像信息處理的傳統(tǒng)方法有Prewitt,Sobel, Canny,RobertsLaplace等算法[1],這些算法使用圖像自身的紋理、顏色、邊緣梯度信息等特征檢測目標(biāo)并進(jìn)行分類識別,但是這種基于傳統(tǒng)統(tǒng)計的計算理論泛化能力不強(qiáng),識別的錯誤率較高,和計算機(jī)視覺識別要求有很大的距離。
2006年,Hinton 等首次提出了深度學(xué)習(xí)算法[2],其核心是通過多層卷積神經(jīng)網(wǎng)建立更加有效的特征分類網(wǎng)絡(luò),自此深度學(xué)習(xí)理論不斷被深入研究,該算法對目標(biāo)的識別率以及識別泛化能力遠(yuǎn)遠(yuǎn)超過傳統(tǒng)的算法。近年來,相關(guān)的研究成果被大量應(yīng)用到人工智能的各個方面,如目標(biāo)追蹤、語音識別、運動姿勢、表情識別以及醫(yī)學(xué)影像研究等[2]。
本文基于深度學(xué)習(xí)的理論,對其學(xué)習(xí)的過程進(jìn)行探索研究,并結(jié)合深度學(xué)習(xí)框架技術(shù),探索了深度學(xué)習(xí)在人體肺結(jié)節(jié)病灶自動識別方面的應(yīng)用。
基于卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)的深度學(xué)習(xí)的算法被廣泛應(yīng)用于計算機(jī)視覺領(lǐng)域,該算法根據(jù)人類大腦工作模式建立流程,模擬人腦的數(shù)據(jù)表達(dá)分析,利用CNN 提取圖像的識別特征,不斷將多個神經(jīng)元組織成神經(jīng)網(wǎng)絡(luò),組合低層單一的特征來形成語義豐富的高層抽象特征[2]。AlexNet算法作為CNN的經(jīng)典算法,在2012年ImageNet比賽中獲得冠軍。自此,基于CNN的深度學(xué)習(xí)算法在計算機(jī)視覺領(lǐng)域的應(yīng)用得到了國內(nèi)外相關(guān)研究的重視。
在人工智能領(lǐng)域很早就開始了對神經(jīng)網(wǎng)絡(luò)(Artificial Neural Networks,ANN)模型的研究,該模型將大量的數(shù)據(jù)處理節(jié)點互相連接,待處理的數(shù)據(jù)流入網(wǎng)絡(luò)并最終處理為輸出結(jié)果[2]。ANN的處理架構(gòu)主要分為輸入單元、隱藏單元和輸出單元。如圖1所示。

圖1 ANN結(jié)構(gòu)圖
卷積神經(jīng)網(wǎng)絡(luò)CNN由ANN發(fā)展而來,其基本的節(jié)點稱為神經(jīng)元,多種不同的神經(jīng)元不斷互聯(lián)構(gòu)成一個多層的神經(jīng)網(wǎng)絡(luò),每層都代表某種特征的組合,且越到高層這種組合語義越強(qiáng)[3]。
建模的過程是:CNN首先用卷積核作為特征抽取器,作用到原始的輸入矩陣,形成第一層卷積層;然后在卷積層的基礎(chǔ)上進(jìn)行池化運算,形成池化層。隨后不斷迭代下去,建立多個卷積層和交叉的池化層,最后建立多個全連接層,構(gòu)成一個完整的卷積神經(jīng)網(wǎng)絡(luò)。
在學(xué)習(xí)過程中,根據(jù)期望值和輸出值之間的誤差反向傳播,并利用最小梯度算法不斷修正每層特征抽取的卷積核[4],完成深度學(xué)習(xí)并且建立模型。
CNN訓(xùn)練分為前向傳播和反向傳播過程。在前向傳播階段,樣本矩陣從第一層卷積網(wǎng)絡(luò)輸入,經(jīng)過多層變換輸出,最終輸出為y′ 。假定該樣本的期望輸出為y,二者誤差記為E,反向傳播中按照誤差最小原則微調(diào)卷積核矩陣[5,6]。
假設(shè)l層的第y個神經(jīng)元的輸出為:
(1)

(2)
其中,σ為激活函數(shù),Sigmiod函數(shù)或Rectified Linear Unit(ReLU) 函數(shù)均可以使用,可以根據(jù)實際計算的要求選擇。
根據(jù)期望值與計算值的誤差,可以設(shè)置誤差函數(shù)為:
ζ=f(y,y')
(3)
f為二次代價函數(shù)。所以l層第j個神經(jīng)元的誤差為:
(4)
卷積神經(jīng)網(wǎng)的最后一層的誤差是:
δL=aLζΘσ'(zL)
(5)
Θ是Hadamard乘積運算符,aLζ表示最后一層的梯度值,其他各層的誤差為:
(6)
所以權(quán)重梯度為:
(7)
偏值梯度為:
(8)
利用梯度下降法,可推出卷積核的更新公式:
wl=wl-η∑xδx,l(ax,l-1)T
(9)
bl=bl-η∑xδx,l
(10)
基于卷積神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)算法,因為其良好分類的效果以及泛化能力,得到了廣泛的研究與應(yīng)用。因網(wǎng)絡(luò)層次構(gòu)造的不同,又產(chǎn)生了諸多不同的系統(tǒng)。比較有影響的有VGG、Alexnet、GoogleNet、Deep Residual Learning等。其中Alexnet網(wǎng)絡(luò)的結(jié)構(gòu)如圖2所示。
圖2中,Alexnet一共有8層,選用ReLU作為激活函數(shù),經(jīng)過卷積核下采樣算法、上采樣(插值)算法以及降采樣等處理過程生成,其中有5個卷積層以及3個全連接層。

圖2 Alexnet(雙GPU)卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)
自從以CNN為主流的深度學(xué)習(xí)算法在計算機(jī)視覺領(lǐng)域取得突破以來,該領(lǐng)域出現(xiàn)了很多 CNN 相關(guān)的開源框架,有影響的有Caffe、MatConvNet和Theano等。Caffe由伯克利視覺和學(xué)習(xí)中心開發(fā),采用C++/CUDA/Python實現(xiàn)卷積神經(jīng)網(wǎng)絡(luò),可實現(xiàn)多種CNN算法,比如上文提到的Alexnet、Deep Residual Learning、VGG等均可在該框架下運行。Caffe將卷積神經(jīng)網(wǎng)絡(luò)的構(gòu)造過程變得簡單,類似于積木搭建,其底層采用C++、CUDA編寫,代碼結(jié)構(gòu)清晰良好、可擴(kuò)展性強(qiáng),允許使用者二次開發(fā)來提高計算效率,使用者也可以靈活地配置各個卷積神經(jīng)網(wǎng)絡(luò)的構(gòu)造層,從而實現(xiàn)更高的識別效率[7]。
在Caffe框架中,按照上面的分析,有海量的多維數(shù)組數(shù)據(jù)要在算法中處理,這些數(shù)據(jù)包括原始的輸入數(shù)據(jù),例如訓(xùn)練圖片,也包括網(wǎng)絡(luò)結(jié)構(gòu)中每層的中間數(shù)據(jù)。Caffe采用Blob包裝類對數(shù)據(jù)進(jìn)行處理和傳輸,Blob類可以在CPU和GPU之間同步數(shù)據(jù),從而大大提高數(shù)據(jù)計算的效率。Blob類近似N維的數(shù)組,以C語言的風(fēng)格進(jìn)行存儲。Blob類可存儲交換圖片、卷積核和網(wǎng)絡(luò)優(yōu)化中的偏導(dǎo)數(shù)等,可以高效使用存儲空間。
Caffe框架的基本計算單元稱為layer。Caffe中的layer分為普通卷積層和降維的池化層。針對每一層Caffe采用激勵函數(shù)等非線性變換,計算loss(代價損失),并對數(shù)據(jù)正則化,相關(guān)的計算有:setup、forward和backward,forward(前向傳播)從輸入計算輸出,backward(反向傳播)獲取輸出的梯度。Net把每一層的backward組合起來,從loss中計算梯度來學(xué)習(xí),并按照梯度最小的策略不斷調(diào)整參數(shù)。
Alexnet是以CNN為主的8層深度學(xué)習(xí)網(wǎng)絡(luò),其中5個是卷積層,3個是全連接層。激勵函數(shù)選擇RELU,池化降采樣采用max-pooling,同時進(jìn)行局部響應(yīng)歸一化(LRN)處理。通過在Caffe框架中定義其每一層的setup、forward、backword參數(shù),即可以構(gòu)建Alexnet網(wǎng)絡(luò)系統(tǒng),從而開始深度學(xué)習(xí)的相關(guān)實驗。比如第1層卷積層的Alexnet配置輸入224×224×3(RGB圖像),然后使用96個大小規(guī)格為11×11的卷積核,進(jìn)行特征提取。
醫(yī)學(xué)圖片識別是探索計算機(jī)視覺在醫(yī)學(xué)影像領(lǐng)域應(yīng)用的學(xué)科,其發(fā)展依賴于醫(yī)學(xué)影像、計算機(jī)視覺、數(shù)學(xué)建模學(xué)科的突破[8]。基于CNN的深度學(xué)習(xí)算法在該領(lǐng)域不斷應(yīng)用,比如惡性腫瘤檢測、間質(zhì)性肺病分類、白內(nèi)障檢測、乳腺病變識別等[9]。下面應(yīng)用Caffe框架下的Alexnet卷積神經(jīng)網(wǎng)絡(luò)對病人常見的肺CT圖像進(jìn)行識別判斷,找出病人肺部結(jié)節(jié)病變的圖像。
樣本集選擇LIDC-IDRI(Lung Lmage Database Consortium),該數(shù)據(jù)由美國國家癌癥學(xué)會發(fā)布,總計收錄了1 018個實例。每個實例包括病灶標(biāo)注以及病人肺部CT切片。該數(shù)據(jù)非常嚴(yán)謹(jǐn),具有代表性,數(shù)據(jù)標(biāo)注由4位知名胸部放射科醫(yī)師采用標(biāo)準(zhǔn)程序診斷并復(fù)診完成。
實驗中對該數(shù)據(jù)庫進(jìn)行數(shù)據(jù)預(yù)處理,得到關(guān)于肺部有結(jié)節(jié)的圖片10 000張,以及健康肺部切片10 000張作為訓(xùn)練樣本。通過對上文配置后的Alexnet 網(wǎng)絡(luò)進(jìn)行學(xué)習(xí)并微調(diào),最后生成預(yù)測模型。然后,取剩余的圖片預(yù)處理為300張待測試的樣本進(jìn)行深度學(xué)習(xí)診斷。
實驗結(jié)果如表1。

表1 肺部結(jié)節(jié)檢測結(jié)果
由表1可知,對尺寸超過8 mm的結(jié)節(jié)預(yù)測模型準(zhǔn)確率較高,對超過10 mm的結(jié)節(jié)識別準(zhǔn)確率達(dá)到100%,該結(jié)果接近臨床應(yīng)用的要求。該識別結(jié)果是傳統(tǒng)圖片處理方法無法達(dá)到的,因此,基于卷積神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)可提高醫(yī)學(xué)影像識別的準(zhǔn)確率,相關(guān)研究對于人工智能在醫(yī)學(xué)領(lǐng)域的應(yīng)用是十分有必要的[10]。
基于CNN的深度學(xué)習(xí)技術(shù)的研究在人工智能方面取得了較好的效果。利用該技術(shù)對醫(yī)學(xué)影像進(jìn)行識別,對人類的疾病診斷具有重要意義,并在一些領(lǐng)域已經(jīng)取得相關(guān)的成果。基于Caffe框架的CNN配置靈活,可擴(kuò)展性強(qiáng)[11],未來必將在醫(yī)學(xué)影像智能處理領(lǐng)域發(fā)揮更大的作用。本文利用該架構(gòu)探索了其對于肺部醫(yī)學(xué)影像處理的效果,今后的研究中將通過對卷積神經(jīng)網(wǎng)絡(luò)的擴(kuò)展,提高其醫(yī)學(xué)影像的識別準(zhǔn)確率和靈敏度,推動該技術(shù)的臨床應(yīng)用。