武子毅,劉亮亮,張再躍
(1.江蘇科技大學 計算機學院,江蘇 鎮江 212003;2.上海對外經貿大學 統計與信息學院,上海 201620)
目前,卷積神經網絡已成為解決復雜視覺識別問題的重要技術和方法,在手寫數字識別[1]、英文字母識別[2]等方面得到了有效應用。漢字圖像識別是字符識別的重要方面,由于漢字形狀的特殊性,大大增加了漢字圖像識別的難度。
文中概述了目前漢字識別研究的基本情況,分析并探討了卷積神經網絡在處理多分類識別問題過程中的功能性質,以及在具體漢字識別應用中存在的問題。針對相似或相近漢字“微小特征”在深度學習自動特征提取過程中可能被過濾掉而造成識別錯判的問題,借鑒卷積神經網絡技術,對AlexNet模型[3]的機構進行改造,通過引入注意力層(attention layer)[4],加強對漢字“微小特征”的關注與提取能力,以提高漢字識別的準確率。
傳統語言文字種類識別包括“特征提取”和“特征分類”兩個步驟。分類器是特征分類的主要工具,常用的有K近鄰[5]、支持向量機[6-7]和BP神經網絡[8]等。特征提取的方法可劃分為基于統計特征[9]、基于符號匹配[10]和基于紋理特征三大類別[11]。基于統計特征和基于符號匹配這兩大文種識別算法都需要以準確的文本行劃分和字符分割為前提,因此對圖像噪聲魯棒性較差。基于紋理特征的文種識別將同一類文字圖像看作同一類紋理,這樣就能用紋理分類的方法來解決文種識別問題,其中,小波共生直方圖的方法[12-13]在小波分解的基礎上進行共生直方圖的計算,通過提高特征維數,從而使識別率大大提高。
基于卷積神經網絡的識別方法主要研究卷積層、池化層和全連接層對識別結果的影響。文獻[14]用分段最大池化層(multi-pooling)代替最大池化層(max-pooling),該方法將池化層的濾波器分段,在每一段里動態地取若干個最大值。這種方法對漢字圖像的局部變化或破損魯棒性較好。文中采用準確率較高的小波共生直方圖方法和分段最大池化層的方法作為評估基準。這兩種方法在傳統方法和卷積神經網絡方法中漢字識別效果較好。
為了探索選擇何種模型最適合處理這類漢字圖像數據集,選擇了5種卷積神經網絡模型,經過試驗發現,使用AlexNet網絡模型精確度最高,網絡數較少,所以文中選擇結構相對簡單的AlexNet處理漢字圖像數據集。
識別對象為文字圖像,處理過程包含的參數有:輸入圖像的像素大小為x1×x2,濾波器的像素大小為f1×f2,卷積移動步幅為s像素,在每一邊添加白邊的像素大小為p,則卷積操作后圖像的像素大小為x1×x2。x1和x2的關系如下:
(1)
例如Conv1,輸入的圖片像素大小x1=227,卷積濾波器的像素大小f=11,卷積移動步幅s=4,每一邊添加白邊的像素大小p=0,這樣經過卷積計算后會形成像素大小為55×55的圖片((227-11)/4+1=55)。本層共有96組卷積濾波器,則在本層輸出的是55×55×96大小的圖片。然后使用ReLUs激勵函數進行映射。最后,經過步幅s=2、濾波器大小f=3的最大池化操作后,每一邊添加白邊的像素大小p=0,數據大小為27×27×96((55-3)/2+1=27),這樣就完成了Conv1。以此類推,Conv2~Conv5需要注意的是,在Conv2中在數據周圍加了p=2像素的白邊,在Conv3~Conv5數據周圍加了p=1像素的白邊,以便在池化操作時數據大小能夠被整除。
數據經過5個卷積層后與4 096個節點進行全連接,再用Tanh激勵函數進行映射,最后設置將輸出值減半,完成全連接層FC1。FC1和FC2的神經元個數有4 096,FC3的神經元個數為3 755,相當于訓練目標的3 755個漢字類別。
表1和表2分別列出了每層配置的參數數據以及每次計算后的數據大小(Data_Size),其中每條數據都為三通道,在實際計算中需乘以3。為了便于數據顯示,這里采用實際默認形式。表中Num_Filter為卷積濾波器個數,Padding為補充的白邊大小,Filter_Size為卷積濾波器大小,Stride為濾波器移動的步幅,Activation為激勵函數,Kernel_Size為池化濾波器大小,Kept_Prob為Dropout步驟中輸出值被削減的比例。

表1 Conv1~Conv5配置詳細信息和數據大小

表2 FC1~FC3配置詳細信息和數據大小
在卷積神經網絡中,如果想把注意力放在圖像中的某個部位,那么就可以對目標區域賦予更高的權重,達到關注該區域的目的。圖1(a)為部分形相似漢字以及被圈出的“微小特征”。可以看到,漢字的“微小特征”區域大多都在漢字的上下左右以及四個斜對角八個區域。為了提高這些區域的權重,可以將漢字圖像與注意力圖(attention map)進行濾波處理。注意力圖如圖1(b)所示,圖中以上下左右和斜對角八個權值為1的白色中心點向四周擴散,權值越來越小,直到變為黑色,權值為0。

圖1 部分形相似漢字的“微小特征”以及注意力圖

圖2 注意力網絡原理
雖然在濾波處理后,關注的區域得到了加強,但是沒有保留原始區域,因為原始區域權值為0。所以可以將原始圖片正常進行卷積操作后與濾波處理后的圖片相加,這樣既增強了目標區域,又保留了原始區域。注意力網絡原理如圖2所示。這里把圖像數據x與注意力圖進行濾波得到H(x),然后與通過兩層卷積層計算后的數據F(x)直接相加,獲得最終數據y(y=F(x)+H(x)),最后再對該數據進行后續的計算。這樣就達到增強數據的“微小特征”的目的。
AlexNet網絡由三組卷積神經網絡(Group1、Group2和Group3)和兩個4 096節點的全連接層組成。Group1和Group2都包含了一個卷積層和一個池化層,Group3包含了三個卷積層和一個池化層。Conv1~Conv5是卷積層,Pooling是池化層。FC1~FC3是全連接層。
接下來把注意力層融合到AlexNet中。為了提高模型訓練中對漢字圖像八個區域的權重,選擇在Group1和Group2相對深層的兩個位置添加注意力層,將兩個注意力層分別與Conv2和Conv3~Conv5并聯,融合后的網絡結構如圖3所示。

圖3 AlexNet+Attention Layer網絡結構
步驟如下:
(1)輸入一張227×227像素大小的三通道漢字圖片,經過Group1計算得到大小為27×27×96的圖像數據x1。
(2)將數據x1與注意力圖進行濾波,形成Attention Layer1,得到數據H1(x);然后與原本經過Conv2計算后的數據F1(x)相加得到y1(y1=F1(x)+H1(x));最后通過池化計算得到數據x2。
(3)將數據x2與注意力圖進行濾波,形成Attention Layer2,得到數據H2(x);然后與原本經過Conv3~Conv5計算后的數據F2(x)相加得到y2(y2=F2(x)+H2(x));最后通過池化計算完成Group3。
(4)將Group3輸出數據輸入至全連接層,最后把第一步輸入的圖像分類至某一個漢字類別,完成模型訓練和識別。
文中使用的數據集由3 755類漢字圖片組成,每一類漢字有45個樣本,共計168 975個樣本,每個樣本數據大小為227×227。在實驗中,使用90%(150 200)的圖像進行訓練,即每一類漢字有40個樣本圖像進行訓練,5個樣本用于測試。
使用Tensorflow[15]庫來實現卷積神經網絡模型。文中使用的GPU為一塊NVIDIA GTX970圖形處理器。實驗將批量大小(batch size)設置為64,全部樣本訓練次數(epoch)設置為30,則迭代次數總共為79 207次,全程學習率不變,均為0.001。在模型訓練的每一輪迭代中,神經網絡層參數都會更新,這些參數主要是卷積濾波器的參數。按照圖3的網絡結構進行訓練,訓練結束后將模型保存,這樣就可以使用該模型來識別漢字圖像了。
將數據集的10%作為測試集,通過比較測試圖像結果與圖像標簽來計算識別結果,計算平均識別率。此外,還將測試結果與評估基準進行比較,結果如表3所示。

表3 模型對比 %
從表中可以看出,基于卷積神經網絡的方法比基于特征的方法效果好10%;基于注意力層的卷積神經網絡相比基于分段最大池化層的卷積神經網絡保留的有效信息更多;只要迭代次數足夠多,卷積神經網絡對于處理多分類問題的效果還是不錯的。
文中使用AlexNet加上注意力層對3 755類漢字圖片數據集進行了實驗。實驗結果表明:普通的卷積神經網絡會丟失漢字“微小特征”,注意力層可以有效彌補這一點;卷積神經網絡可以處理多分類問題,但是會增加訓練難度。文中的研究可以為后續的在線識別漢字圖像模型提供參考。