劉為相,李燦,張霞,周作建,宋懿花
(南京中醫(yī)藥大學(xué),江蘇 南京 210000)
在生物醫(yī)學(xué)工程、神經(jīng)網(wǎng)絡(luò)和多種優(yōu)化算法的不斷發(fā)展和完善下,人工智能已經(jīng)進入了臨床診斷的范疇。舌診所需的圖像可利用模式識別等算法進行處理,使中醫(yī)舌診的發(fā)展進入了一個全新的階段,大大促進了中醫(yī)舌診客觀化、規(guī)范化的進程,對中醫(yī)舌診的繼承與創(chuàng)新有舉足輕重的作用。在量化研究中,最常用的是RGB(紅綠藍)模型,不同類型舌診影像RGB數(shù)據(jù)存在差異,說明利用電腦影像技術(shù)進行舌診客觀化分析是切實可行的,但是現(xiàn)有的舌象處理技術(shù)中,大多以[1]RGB模型為基礎(chǔ)對舌象顏色值的修正,而在舌診圖像去噪方面沒有相關(guān)研究。
K-SVD(K-Singular Value Decomposition)算法是目前最具有代表性且應(yīng)用領(lǐng)域最廣泛的自適應(yīng)學(xué)習(xí)字典算法。MALLAT首先提出了圖像的超完全信號稀疏表達,利用Gabor詞典對圖像進行稀疏表示,并將其用于圖像稀疏表達。稀疏和冗余表示技術(shù)是目前信號和圖像處理領(lǐng)域的一個主要的研究領(lǐng)域,包括稀疏搜索、圖像銳化、字典構(gòu)造、人臉圖像壓縮、圖像去噪、圖像修補以及圖像尺度放大等研究領(lǐng)域。由此提出基于字典學(xué)習(xí)算法對中醫(yī)舌診圖像降噪的研究,并分別通過單層字典去噪及深度字典去噪兩種方式做出對比,放大實驗效果[1]。
預(yù)處理部分包括對比度拉伸、直方圖均衡化、空間平滑濾波以及空間銳化濾波,流程見圖1。其中空間平滑濾波包括均值濾波以及中值濾波,空間銳化濾波包括Sobel算子以及Laplacian算子。
圖1 數(shù)據(jù)集預(yù)處理流程圖
假設(shè)原始樣本為Y,字典矩陣為D,原子為dk,稀疏矩陣為S,矩陣乘法為DX。字典學(xué)習(xí)的主要思想是利用包含K個原子dk的字典矩陣D∈Rm×K,稀疏線性表示原始樣本Y∈Rm×n(其中m表示樣本數(shù),n表示樣本屬性),即有Y=DS(最理想情況)[2],其中S∈RK×n為稀疏矩陣,上面的問題可以被用數(shù)學(xué)語言表示為下面的最優(yōu)問題:
上式中,S為稀疏編碼的矩陣,si(i=1,2,…,K)為該矩陣中的行向量,代表字典矩陣的系數(shù)?!瑂i‖0表示零階范數(shù),它表示向量中不為0的數(shù)的個數(shù)[3]。
式(1)的目的函數(shù)表達式是為了盡量減少查找到的詞典和原始樣本之間的誤差,也就是盡量恢復(fù)原來的樣本;它的限的制條件‖si‖0≤T0,表示查字典的方式要盡可能簡單,即X要盡可能稀疏。式(1)或式(2)是一類具有限制的最優(yōu)化問題,它可以通過拉格朗日乘子方法進行求解。
注:將‖si‖0用‖si‖1代替,主要是更加便于‖si‖1求解。
在此,有兩個最優(yōu)變量D,S為了求解該優(yōu)化問題,通常會將一個最優(yōu)變量固定,然后對另外一個最優(yōu)變量進行優(yōu)化,這樣交替進行。接下來稀疏矩陣可以S利用已有經(jīng)典算法求解,如Lasso(Least Absolute Shrinkage and Selection Operator)、OMP(Orthogonal Matching Pursuit)。其中以更新字典D為例:
假設(shè)X是已知,逐列更新字典,當(dāng)僅更新字典的第k列時,記dk為字典D的第k列向量,記SkT為稀疏矩陣S的第k列向量。那么對式(1)有:
因此,需要求出最優(yōu)的dk,skT[4]。這是一個最小二乘問題,它可以用最小二乘法來解決,也可以用SVD法來解決。但不能用Ek進行求解,否則求得的新的skT不會被稀疏化。因此需要將Ek中對應(yīng)的skT不為零的位置提取出來,得到新的Ek。假設(shè)需要更新第0列原子,需要將skT中為0的位置找出來,然后把對應(yīng)Ek的位置刪除,得到E'k,此時優(yōu)化問題可描述為
因此求得最優(yōu)的dks’kT。
取左奇異矩陣∪的第一個列向量u1=∪(·,1)作為dk,即dk=u1。取右奇異矩陣的第一行向量與第一個奇異值的乘積作為x‘kT,即s‘kT=∑(1,1)VT(1,·)。得到S‘kT后,將其對應(yīng)地更新到原SkT。
稀疏模型剔除了大部分的冗余變量,僅保留了最接近于反應(yīng)變量的解釋變量,從而使模型更加簡單,但又能保持最關(guān)鍵的信息,從而解決了許多問題。由此可發(fā)現(xiàn),稀疏模型所達到的效果與字典學(xué)習(xí)的目的一致,都是要將冗余的無關(guān)緊要的信息刪除;而將重要的、本質(zhì)的信息得以保留[5]。也正因如此,“字典”的衡量標準也就隨之產(chǎn)生,字典創(chuàng)建的好與壞主要取決于它這個模型夠不夠稀疏(也就是說提取的特征是否足夠關(guān)鍵,是否足夠本質(zhì))[6]。
首先進行對Patch切塊的函數(shù)定義:通過np.copy(data)將數(shù)據(jù)載入,隨后定義Patch的邊長及patch_size=8。其次完成對形狀及數(shù)據(jù)類型的定義shape=(9,620 01,8,8),dtype=np.float32。之后確定對共9張圖片進行處理,每張圖片大小為(256,256),通過定義所有行的每1格標注一次,再進行每1列的每格標注一次,由此完成對切塊函數(shù)的定義。
高斯噪聲單層去噪:首先使用高斯噪聲訓(xùn)練字典。根據(jù)zscore的規(guī)范化方法,將數(shù)據(jù)中的數(shù)據(jù)除以平均除以方差。然后,對MiniBatchDictionaryLearning類進行初始化,并根據(jù)初始參數(shù)對類別進行初始化。
完成上述步驟后開始繪制V中的字典:
利用figsize方法指明圖片的大小,4.2英寸寬,4英寸高。其中一英寸的定義是80個像素點。循環(huán)畫出100個字典V中的字(其中n_components是字典的數(shù)量)。Enumerate()函數(shù)通常在 for循環(huán)中使用,把一個可遍歷的資料物件合并成一個索引序列,并列出資料和資料下標。
隨后6個參數(shù)與注釋后的6個屬性對應(yīng),left,right,bottom,top,wspace,hspace分別對應(yīng)(0.08,0.02,0.92,0.85,0.08,0.23)此時已完成從高斯噪聲的圖像中提取字典并準備開始高斯噪聲的稀疏表示。
通過differents=[]得出復(fù)原圖片和原圖的誤差,transform_algorithms為字典表示策略。
接下來先通過調(diào)用remove_files()函數(shù)清空此文件夾中之前的文件,然后利用set_params()函數(shù)來設(shè)定第二個相位的參數(shù)。transform是基于set_params來建立一個已設(shè)置的參數(shù)的模型的詞典,它代表了一個code中的結(jié)果。code共有100個欄,每個欄都對應(yīng)一個V中的詞典單元,而所謂的“稀疏”是指代碼中每個行的大多數(shù)元素都是0,因此可以用最小的詞典元素來表達。
隨后用code矩陣乘V得到復(fù)原后的矩陣patches及樣本(62 001,64)=稀疏表示(62 001,256)*過完備字典(256,64)。這一階段結(jié)束還原數(shù)據(jù)預(yù)處理:patches +=gaussian_mean,將patches從(62 001,64)變回(62 001,8,8)。隨后通過reconstruct_from_patches_2d()函數(shù)將patches重新拼接回圖片。以psnr_score作為復(fù)原圖片和原圖的誤差計算并得出,最終展示去噪復(fù)原圖并重命名完成保存。
椒鹽噪聲單層字典去噪方式與上述相同,不再贅述。
基于深度學(xué)習(xí)的降噪技術(shù)是當(dāng)前圖像處理中的一個熱點問題。在此基礎(chǔ)上,設(shè)計了對應(yīng)的網(wǎng)絡(luò)結(jié)構(gòu),獲取了關(guān)鍵特征,并對輸入和輸出的對應(yīng)關(guān)系進行了研究。在完成一定數(shù)量的圖像采樣后,可以得到充分的信息,如圖像特征、數(shù)據(jù)分布等信息,隱含去除噪聲,達到去除噪聲的目的,原理見圖2。本研究中的深度學(xué)習(xí)為兩層網(wǎng)絡(luò)層。在輸入圖像過后,在對圖像進行降噪處理時,采用了卷積運算,抽取有用的特征,并采用非線性映射進行判斷推理,并采用判別式學(xué)習(xí)方法獲得圖像降噪前的信息,達到了對噪聲的分離[7]。
圖2 深度去噪原理圖
其中,卷積神經(jīng)網(wǎng)絡(luò)(CNNs)是最典型的深度學(xué)習(xí)類降噪算法,而CNNs則是一種改進的DNNs結(jié)構(gòu),也就是LeNet網(wǎng)絡(luò)的5級結(jié)構(gòu),并在分類工作中脫穎而出。之后的研究通過對圖像數(shù)據(jù)的存儲和運算的限制,改進了LeNet的網(wǎng)絡(luò)架構(gòu),并在ImageNet的比賽中,通過GPU訓(xùn)練出8個層次的AlexNet,它的分類精度提高了11%。
二者均屬典型CNN,CNNs結(jié)構(gòu)的主要構(gòu)成元素為負責(zé)抽取主要圖像特征的卷積層(Convolution layer),同時加上激活函數(shù)(Activation function)的非線性映射作用可以加快網(wǎng)絡(luò)的收斂速度。當(dāng)前,在深度學(xué)習(xí)的研究中,大量標準化技術(shù)也被用于加快網(wǎng)絡(luò)的訓(xùn)練。將這些功能各異的網(wǎng)絡(luò)層結(jié)合起來,可以構(gòu)造出不同層次的網(wǎng)絡(luò),從而完成復(fù)雜的圖像處理[8]。
①卷積層。它是CNNs與其他神經(jīng)網(wǎng)絡(luò)的一大特色,其主要作用是對多個卷積核進行卷積,從而實現(xiàn)對圖像的局部特征的提取。卷積運算實質(zhì)上是對相應(yīng)的位置要素進行加法運算,在一個CNNs中,有多個縱深的卷積層,每個卷積層內(nèi)都有若干個不同的卷積核,因此可以進行多個卷積運算。與粗略地進行一次卷積運算不同,多層多次的卷積運算不但能提取出較淺的區(qū)域內(nèi)的圖像特征,并且可以從圖像中提取出更深層次的語義特征。如果卷積層是一個矩陣卷積層,那么它就是一個特操作不但可以提的特征圖,而卷積且還層則是一個特殊的特征映射,但是它也是矩陣形式。在卷積運算完成后,每個卷積層都會通過一個具有非線性近似功能的激活函數(shù),并把新的特征映射結(jié)果輸入到下一層次。
②池化層和完全連通層。在具體的任務(wù)環(huán)境中,并不是所有的特性信息都能起到很大的作用,所以池化層的功能主要是篩選重要的特征數(shù)據(jù),過濾掉多余的數(shù)據(jù),增強了網(wǎng)絡(luò)的普遍性。最大池是最大池和平均池,通常使用最大池方法來保持較高的紋理信息。在CNNs中,全連接層通常在網(wǎng)絡(luò)的末尾,但在網(wǎng)絡(luò)的最終輸出端。全連通層是將各層的各節(jié)點與各層的節(jié)點連接起來的,所以在這一層中,所有的特征信息都集中在一起,從而能夠集成分布的特點。然而,由于全連接層的存在,會產(chǎn)生許多冗余的參數(shù),因此,目前通常都是以卷積層或池化層來進行網(wǎng)絡(luò)性能的優(yōu)化。
③激活函數(shù)。為了增強網(wǎng)絡(luò)的逼近能力來模擬任意復(fù)雜的函數(shù),一般在線性卷積操作之后使用激活函數(shù)強化神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)能力,常用的激活函數(shù)有四類:Sigmod,Tanh,ReLU,Leaky。ReLU函數(shù)是當(dāng)前深度學(xué)習(xí)中應(yīng)用最為頻繁的一個非線性激活函數(shù),它具有簡單、高效的特點,能夠有效地解決深度學(xué)習(xí)中的梯度消失問題。ReLU的函數(shù)表達式為:F(x)=max(0,x)。實驗采用了ReLU和Sigmoid作為激活函數(shù),配合完成深度去噪。首次定義dico1時將字典的數(shù)量即n_components定義為144,當(dāng)再次進行第二層卷積時,將dico2的字典數(shù)量定義為256,通過兩次卷積完成深度字典學(xué)習(xí)。
當(dāng)前有效的深度降噪算法多為有監(jiān)督學(xué)習(xí),要求對輸入輸出的圖像進行采集(Noisy/noise-free images pairs)建立數(shù)據(jù)集合是一個重要的工作。數(shù)據(jù)的質(zhì)量是影響降噪效果的重要因素。如何盡可能多地采集到大量的影像資料,并得到高品質(zhì)的參考影像(ground truth)是當(dāng)前的一個重要課題。本課題數(shù)據(jù)集來自江蘇省中醫(yī)院,該數(shù)據(jù)集收集了來自不同患者的陰虛證和非陰虛證舌診圖片,數(shù)據(jù)集涵蓋500個樣本,每個樣本均包含了舌診圖像和對應(yīng)的臨床標注信息。在數(shù)據(jù)預(yù)處理中,對舌診數(shù)據(jù)進行了預(yù)處理及對應(yīng)的噪聲去除,統(tǒng)一提升了舌診圖像質(zhì)量。
對去噪實驗結(jié)果利用峰值信噪比(PSNR)的值進行比較,其中利用到diff、MSE以及PSNR[9]。為了衡量經(jīng)過處理后的影像品質(zhì),通常令其結(jié)果與原圖像進行對比。PSNR計算公式為:
其中,MSE為兩個m*n單色圖像I和K殘差值的平方,I為無噪聲原圖像,K為I的噪聲近似,MSE計算公式為:
在采集過程中,數(shù)字圖像中的高斯噪聲是最主要的來源。傳感器的噪聲是因為光線不好或溫度過低所造成的。在圖像處理中,利用空間濾波技術(shù)可以有效地消除高斯噪聲,但由于圖像的平滑會造成圖像的邊緣和細節(jié)的模糊。常用的降噪方法主要有平均(卷積)濾波、中值濾波、高斯平滑[10]。
實驗對椒鹽和高斯噪聲對應(yīng)的深度和單層字典去噪結(jié)果做了組內(nèi)和組間對比,見表1、圖3、圖4,對比標準為PSNR值。結(jié)果就組內(nèi)而言,單層字典學(xué)習(xí)對舌象去噪有效,且深度字典學(xué)習(xí)去噪對舌象去噪效果要優(yōu)于單層字典學(xué)習(xí)去噪。組間對比發(fā)現(xiàn),字典學(xué)習(xí)算法對高斯噪聲去噪的效果無論是單層還是深度都優(yōu)于對椒鹽噪聲的去噪。
表1 PSNR值對比表
圖3 高斯噪聲去噪展示圖
圖4 椒鹽噪聲去噪展示圖
實驗選取了中醫(yī)舌診圖像去噪作為研究對象,結(jié)合當(dāng)下熱門的字典學(xué)習(xí)算法(KSVD)領(lǐng)域,通過主動添加噪聲對比在不同情況下單層字典學(xué)習(xí)和深度字典學(xué)習(xí)所展現(xiàn)出的不同的去噪能力,并輔以對比度拉伸、直方圖均衡化等功能對舌診圖像進行預(yù)處理。本實驗以中醫(yī)舌診圖像去噪方法實現(xiàn)作為研究對象,研究了字典學(xué)習(xí)算法對于不同情況噪聲的舌診圖像去噪能力的不同,從而減少外部條件對舌診圖像產(chǎn)生影響,并將影響盡量降低,以此來輔助到醫(yī)師的舌診功能,助力中醫(yī)事業(yè)的發(fā)展。