姜文超,劉海波,楊宇杰,陳佳峰,孫傲冰
(1.廣東工業(yè)大學計算機學院,廣東 廣州 510006;2.廣東電子工業(yè)研究院,廣東 東莞 523808)
顏色、紋理特征差異度小的特定領域高相似圖像識別與分類技術在圖像搜索、遙感、刑偵、醫(yī)學等圖像處理領域具有重要的應用價值。Renninger等人[1]認為,對圖像進行簡單的紋理分析能夠尋找到場景分類的線索,使圖像識別過程和計算簡單化。Benmokhtar 等人[2]融合圖像的紋理和顏色特征實現(xiàn)足球場景分類,但該方法僅利用全局特征進行分類,其區(qū)分能力有限。圖像的局部二進制模式LBP(Local Binary Pattern)[3]計算圖像中“一致”的局部二進制模式,并對圖像的各種模式數進行直方圖統(tǒng)計,但是該方法對彩色圖像的分類效果一般。近年來人們對遙感影像上的紋理特征采用灰度共生矩陣算法[4],該算法描述的是具有某種空間位置關系的像素之間的聯(lián)合分布,可看成兩個像素灰度對的聯(lián)合直方圖,屬于二階統(tǒng)計。灰度共生矩陣描述了灰度空間依賴性,表示了在一種紋理模式下的像素灰度的空間關系,但是該方法沒有完全抓住圖像局部灰度的圖像特征,因此對于圖像局部特定特征提取效果不夠理想。小波變換[5,6]雖能有效提取圖像局部紋理特征,但對圖像全局特征無法有效捕捉,導致分類效果一般。
在后向傳播BP(Back Propogation)神經網絡基礎之上發(fā)展起來的卷積神經網絡CNN(Convolution Neural Network)[7]是一種帶有卷積結構的深度神經網絡。由于該網絡特點是部分連接,權值共享,從而減少了網絡模型參數個數,有效緩解了模型的過擬合問題。CNN通過有監(jiān)督學習方式,實現(xiàn)圖像處理中平移、縮放、傾斜等形變的高度不變性。1998年,LeCun 等人[8]將CNN用于文檔識別,為了保證識別對象的平移、尺度、旋轉不變性,CNN具備局部感受野、共享權值和次抽樣三個特征,設計的用于字符識別的卷積神經網絡LeNet-5系統(tǒng)在小規(guī)模手寫數字識別中取得了較好的效果。
2012年,Krizhevsky 等人[9]采用稱為AlexNet 的CNN,設計了ReLU作為網絡卷積層中的神經元激活函數,利用 Dropout 避免過擬合問題。該網絡模型對多維圖像的識別效果明顯,使圖像可以直接作為網絡模型的輸入,避免了傳統(tǒng)識別算法中復雜的特征提取和數據重建過程。近期有研究基于 Haar 小波變換和 CNN 模型的優(yōu)勢,提出 Haar-CNN 模型[10],Haar-CNN在自然場景圖像特征提取和分類中優(yōu)勢明顯,然而在紋理特征提取中效果并不顯著。
針對以上問題,本文算法首先使用小波變換對圖像數據進行預處理,將圖像分解為不同的頻域子圖,然后計算各頻域子圖的能量參數作為紋理描述子。對不同類別、不同分辨率圖像集進行特征提取并確定最佳紋理差異度參數閾值,將各子圖能量特征歸一化處理后作為卷積神經網絡的輸入,通過訓練集調整網絡權值并驗證權值實際準確度,最終得到分類準確率最高的卷積神經網絡模型。實驗選取雞蛋、蘋果兩類圖像數據集作為實驗數據,進行雞蛋散養(yǎng)或圈養(yǎng)識別、蘋果產地判定,實驗結果表明該算法平均鑒別準確率達 90%以上。
算法基本思路如圖1所示,通過融合小波變換與深度卷積神經網絡進行特征提取與圖像分類。
Figure 1 Basic ideas of the algorithm 圖1 算法基本思路
為提高算法準確性,首先通過分割算法提取圖像中的主體對象,實現(xiàn)圖像主體與背景分離,防止圖像背景對主體對象的分類造成干擾。數據預處理階段利用小波變換進行圖像分解并提取各頻域子圖特征,然后將小波變換的輸出作為神經網絡的輸入,通過多次訓練對網絡權值參數進行優(yōu)化更新,從而獲取準確率最高的神經網絡參數,得到最佳分類模型。
圖1中,小波變換分解并提取圖像特征和卷積神經網絡分類器是該算法的核心模塊。這個核心模塊的流程如圖2所示。
首先將去除背景的圖像數據由設置的閾值進行灰度化處理,利用小波變換提取灰度圖像的局部特征,將擁有全局特征的圖像分解為多個含有圖像局部特征的子圖, 對子圖進行紋理特征提??;其次,神經網絡接收預處理后的子圖特征作為輸入數據,經過 5 層卷積以及 3 層池化多尺度采樣,將輸出歸一化為一維向量;最后在數據量逐漸增大以及訓練次數增加的情況下,網絡權值不斷更新,最終確定分類模型。
Figure 2 Flow chart of the core module圖2 核心模塊流程
小波變換是在傅里葉變換的基礎上演變而來的,克服了傅里葉變換不能刻畫時間域信號的局部特性、對突變和非平穩(wěn)信號處理效果不好、沒有時頻分析等缺點。小波變換替換了傅里葉變換的三角函數基,將無限長的三角函數基換成了有限長的、會衰減的小波基。 圖像作為二維數字信號,首先需要根據式(1)進行小波離散化。
(1)
其中,j為實驗中小波變換的尺度階數,尺度越大則子圖細節(jié)越明顯;k為位置變換的設置參數;x為灰度圖像的向量化表示;a0是尺度函數;b0是位置參數。
利用小波變換進行快速分解的過程如式(2)~式(5)所示。
Aj(k,l)=
∑k1∑k2h(k1-2k)h(k2-2l)fj-1(k1,k2)
(2)
∑k1∑k2g(k1-2k)h(k2-2l)fj-1(k1,k2)
(3)
∑k1∑k2h(k1-k2)g(k2-2l)fj-1(k1,k2)
(4)
∑k1∑k2g(k1-k2)g(k2-2l)fj-1(k1,k2)
(5)
其中,h()與g()分別為小波變換的低通濾波器和高通濾波器。l為包含局部特征的子圖數量,k1為圖像數據水平方向平移相位差的倍數,k2為圖像數據垂直方向平移相位差的倍數。
在每個尺度上,通過濾波即可得到一幅粗尺度圖像以及三幅細節(jié)圖像。根據濾波器的性質可知,其分別包含了原圖像在該尺度上的豎直、水平以及對角方向的細節(jié)信息。以雞蛋數據集為例,對其進行Haar小波變換二次分解預處理后得到的三幅子圖效果如圖 3 所示。
Figure 3 Sub-graph decomposition 圖3 子圖分解效果
本文算法的第二個技術核心是卷積神經網絡的權值更新,此部分影響圖像數據分類的最終結果。為了得到更高的分類準確率,本文進行了多次實驗,重點在神經網絡的卷積層以及池化層的權值更新部分。在卷積神經網絡的每一卷積層中,前一層的特征圖與一個需要通過學習得到的卷積核進行卷積計算,可得到新的特征圖,如式(6)所示。
(6)
卷積神經網絡神經元的靈敏度計算方法如式(7)所示。
(7)
誤差代價函數為:
(8)
(9)
其中,down()表示下采樣操作。
靈敏度計算方法為:
(10)
(11)
在對神經網絡的卷積層以及采樣層進行權值更新后,還需對其他層設置詳細的優(yōu)化參數,本文采用的卷積神經網絡各層參數如表1所示。該網絡一共包括5個卷積層、3個池化層、3個全連接層、1個softmax分類層、2個局部響應歸一化LRN(Local Response Normalization)層和兩個隨機采樣層,經過多次測試發(fā)現(xiàn)此參數下圖像分類準確率高。其中LRN層的原理是利用仿生物神經系統(tǒng)抑制機制,使得函數響應比較大的值變得相對更大,并抑制其他反饋較小的神經元,提高了模型的泛化能力。
Table 1 Structure and parameters of CNN layers表1 CNN各層結構與參數
實驗在 Tianhe-2 上進行,采用單節(jié)點,雙 CPU,24 個計算核心,內存 64 GB,即:CPU E5-2692 v2 24*2.20 GHz。采用Python3.7 以及 Matlab (2016b) 實現(xiàn)算法。對于雞蛋與蘋果兩個數據集,通過本文算法分別鑒定雞蛋來源是散養(yǎng)或圈養(yǎng)以及識別判斷蘋果產地。其中,雞蛋、蘋果數據集各包含 20 000 幅圖像,訓練集為15 000 幅,測試集為 5 000 幅,數據集圖像標簽分類標準如表2所示。
Table 2 Data classification labels表2 數據分類標簽
本文所定義的卷積神經網絡模型的輸入層的內容是由小波變換提取的保留圖像紋理特征的特征向量,該向量由圖像矩陣轉化得到,其中去除背景的原始圖像數據經由小波變換可以分解成圖像近似信號的低頻子帶和圖像細節(jié)信號的高頻子帶。 其中,圖像中大部分的噪聲和一些邊緣細節(jié)都屬于高頻子帶,而低頻子帶主要表征圖像的近似信號。為了能夠在增強圖像的同時減少噪聲的影響,可以對低頻子帶進行非線性圖像增強,用以增強目標的對比度,抑制背景;而對高頻部分進行小波去噪處理,減少噪聲對圖像的影響。然后提取各子圖特征并歸一化后作為卷積神經網絡的輸入進行進一步處理。神經網絡層構建全連接池,該連接池包括 4 096 個神經元,每個神經元都連接到輸入層,每個神經元接受4 096個輸入。在訓練過程中,記錄并輸出損失函數值,用以監(jiān)控訓練進度。將循環(huán)次數設置成 201,并且當循環(huán)次數滿足10的倍數時,輸出損失值。
網絡結構訓練過程中,從輸入層到softmax層,每層都含有待求解的參數,因此利用帶類別標簽的數據作為輸入,先進行一次前向傳播,計算分類誤差,然后利用隨機梯度下降法進行反向傳播,求解最優(yōu)參數,從而使分類誤差最小化。部分分類結果如圖 4 所示。其中標簽 true 表示分類正確(散養(yǎng)),標簽 false 表示分類錯誤(圈養(yǎng))。分類圖像總數初始為 1 000,土雞蛋與圈養(yǎng)雞蛋的數目各為500,訓練次數為500,統(tǒng)計可知分類準確率為 78.55%。
Figure 4 An example of preliminary classification of egg dataset圖4 雞蛋數據集初步分類結果示例
卷積神經網絡模型在梯度下降處于局部收斂時,會出現(xiàn)分類無效的情況,即:訓練過程中參數值無法保存,每次訓練過程中都需要重新隨機化網絡模型的權值參數,多個訓練集對神經網絡模型的優(yōu)化未發(fā)揮作用,模型應用性差。 為了能保存訓練過程中的所有參數值,同類數據集測試時直接讀取歷史訓練的參數值,實驗增加兩個卷積層構成卷積神經網絡,在輸入層和全連接層之間加入兩次卷積和池化。以雞蛋數據集為例,訓練 500 次后隨機抽取的部分分類結果如圖 5 所示。經過 500 次的訓練,算法準確率達到 86.77%。
Figure 5 An example of classification results after CNN model optimization圖5 卷積神經網絡模型優(yōu)化后分類結果示例
為證明該算法在高相似圖像識別與分類領域的準確性,選取優(yōu)化后的算法對蘋果數據進行測試以判斷其產地。蘋果數據集的數量為10 000,訓練次數為1 000 次。部分分類結果如圖 6 所示,對分類結果統(tǒng)計可知分類準確率為 87.54%。
Figure 6 Apple dataset classification results圖6 蘋果數據集分類結果(true:山西,false:其他)
為測試算法準確性隨訓練集數據量大小的變化規(guī)律,分別對雞蛋與蘋果兩個數據集進行測試,數據集單位增量設置為 2 000。測試結果如圖7和圖8所示。由圖7可知,隨著數據量的增加,神經網絡的參數將得到不斷優(yōu)化,從而有效提高了算法準確率。由圖8可知,在數據集不變的前提下,隨著訓練次數的增加,神經網絡的參數值不會陷入局部最小化,提高了全局優(yōu)化效果和準確率。
Figure 7 Effect of data volume on algorithm accuracy 圖7 數據量對算法分類準確率的影響
Figure 8 Effect of training frequency on algorithm accuracy 圖8 訓練次數對算法分類準確率的影響
為驗證本文算法的優(yōu)越性,將其分別與單獨使用小波變換和單獨使用神經網絡的分類算法進行比較,平均準確率對比如表3所示。由表3可知,卷積神經網絡算法在訓練次數較小的情況下(10 000 次以下),多次實驗后的算法準確率在 0.80~0.85變動,訓練次數達20 000 次時,準確率達到最高90.06%。融合小波變換和卷積神經網絡的圖像分類算法具有更高的分類準確率。
Table 3 Algorithm accuracy comparison表3 算法分類準確率對比
針對顏色、紋理特征差異小的特定領域高相似度圖像識別與分類問題,本文提出了融合小波變換與卷積神經網絡的高相似度圖像識別與分類算法。運用小波變換先對圖像進行頻域分解預處理,根據小波的多分辨率分析原理將圖像進行多級二維離散小波變換,可以將圖像分解成圖像近似信號的低頻子帶和圖像細節(jié)信號的高頻子帶。其中,圖像中大部分的噪聲和一些邊緣細節(jié)都屬于高頻子帶,而低頻子帶主要表征圖像的近似信號。為了能夠在增強圖像的同時減少噪聲的影響,可以對低頻子帶進行非線性圖像增強,用以增強目標的對比度,抑制背景;而對高頻部分進行小波去噪處理,減少噪聲對圖像的影響。然后提取各子圖特征并歸一化后作為卷積神經網絡的輸入進行進一步處理。 通過雞蛋與蘋果兩個數據集實驗測試表明,預訓練的 CNN 模型能夠提取出有效的圖像紋理特征,在常用的紋理數據集上均取得較好效果。本文算法在數據預處理階段利用了小波變換,CNN 訓練主要體現(xiàn)在卷積層與子采樣層的彼此交互。其中,各權值參數的最佳取值是影響卷積神經網絡模型準確率的關鍵。后續(xù)工作將會針對特定領域的高相似圖像進一步優(yōu)化權值參數,提高算法在特定領域高相似圖像識別與分類的準確性。