武子毅,劉亮亮,張?jiān)佘S
(1.江蘇科技大學(xué) 計(jì)算機(jī)學(xué)院,江蘇 鎮(zhèn)江 212003;2.上海對(duì)外經(jīng)貿(mào)大學(xué) 統(tǒng)計(jì)與信息學(xué)院,上海 201620)
目前,卷積神經(jīng)網(wǎng)絡(luò)已成為解決復(fù)雜視覺(jué)識(shí)別問(wèn)題的重要技術(shù)和方法,在手寫(xiě)數(shù)字識(shí)別[1]、英文字母識(shí)別[2]等方面得到了有效應(yīng)用。漢字圖像識(shí)別是字符識(shí)別的重要方面,由于漢字形狀的特殊性,大大增加了漢字圖像識(shí)別的難度。
文中概述了目前漢字識(shí)別研究的基本情況,分析并探討了卷積神經(jīng)網(wǎng)絡(luò)在處理多分類識(shí)別問(wèn)題過(guò)程中的功能性質(zhì),以及在具體漢字識(shí)別應(yīng)用中存在的問(wèn)題。針對(duì)相似或相近漢字“微小特征”在深度學(xué)習(xí)自動(dòng)特征提取過(guò)程中可能被過(guò)濾掉而造成識(shí)別錯(cuò)判的問(wèn)題,借鑒卷積神經(jīng)網(wǎng)絡(luò)技術(shù),對(duì)AlexNet模型[3]的機(jī)構(gòu)進(jìn)行改造,通過(guò)引入注意力層(attention layer)[4],加強(qiáng)對(duì)漢字“微小特征”的關(guān)注與提取能力,以提高漢字識(shí)別的準(zhǔn)確率。
傳統(tǒng)語(yǔ)言文字種類識(shí)別包括“特征提取”和“特征分類”兩個(gè)步驟。分類器是特征分類的主要工具,常用的有K近鄰[5]、支持向量機(jī)[6-7]和BP神經(jīng)網(wǎng)絡(luò)[8]等。特征提取的方法可劃分為基于統(tǒng)計(jì)特征[9]、基于符號(hào)匹配[10]和基于紋理特征三大類別[11]?;诮y(tǒng)計(jì)特征和基于符號(hào)匹配這兩大文種識(shí)別算法都需要以準(zhǔn)確的文本行劃分和字符分割為前提,因此對(duì)圖像噪聲魯棒性較差?;诩y理特征的文種識(shí)別將同一類文字圖像看作同一類紋理,這樣就能用紋理分類的方法來(lái)解決文種識(shí)別問(wèn)題,其中,小波共生直方圖的方法[12-13]在小波分解的基礎(chǔ)上進(jìn)行共生直方圖的計(jì)算,通過(guò)提高特征維數(shù),從而使識(shí)別率大大提高。
基于卷積神經(jīng)網(wǎng)絡(luò)的識(shí)別方法主要研究卷積層、池化層和全連接層對(duì)識(shí)別結(jié)果的影響。文獻(xiàn)[14]用分段最大池化層(multi-pooling)代替最大池化層(max-pooling),該方法將池化層的濾波器分段,在每一段里動(dòng)態(tài)地取若干個(gè)最大值。這種方法對(duì)漢字圖像的局部變化或破損魯棒性較好。文中采用準(zhǔn)確率較高的小波共生直方圖方法和分段最大池化層的方法作為評(píng)估基準(zhǔn)。這兩種方法在傳統(tǒng)方法和卷積神經(jīng)網(wǎng)絡(luò)方法中漢字識(shí)別效果較好。
為了探索選擇何種模型最適合處理這類漢字圖像數(shù)據(jù)集,選擇了5種卷積神經(jīng)網(wǎng)絡(luò)模型,經(jīng)過(guò)試驗(yàn)發(fā)現(xiàn),使用AlexNet網(wǎng)絡(luò)模型精確度最高,網(wǎng)絡(luò)數(shù)較少,所以文中選擇結(jié)構(gòu)相對(duì)簡(jiǎn)單的AlexNet處理漢字圖像數(shù)據(jù)集。
識(shí)別對(duì)象為文字圖像,處理過(guò)程包含的參數(shù)有:輸入圖像的像素大小為x1×x2,濾波器的像素大小為f1×f2,卷積移動(dòng)步幅為s像素,在每一邊添加白邊的像素大小為p,則卷積操作后圖像的像素大小為x1×x2。x1和x2的關(guān)系如下:
(1)
例如Conv1,輸入的圖片像素大小x1=227,卷積濾波器的像素大小f=11,卷積移動(dòng)步幅s=4,每一邊添加白邊的像素大小p=0,這樣經(jīng)過(guò)卷積計(jì)算后會(huì)形成像素大小為55×55的圖片((227-11)/4+1=55)。本層共有96組卷積濾波器,則在本層輸出的是55×55×96大小的圖片。然后使用ReLUs激勵(lì)函數(shù)進(jìn)行映射。最后,經(jīng)過(guò)步幅s=2、濾波器大小f=3的最大池化操作后,每一邊添加白邊的像素大小p=0,數(shù)據(jù)大小為27×27×96((55-3)/2+1=27),這樣就完成了Conv1。以此類推,Conv2~Conv5需要注意的是,在Conv2中在數(shù)據(jù)周圍加了p=2像素的白邊,在Conv3~Conv5數(shù)據(jù)周圍加了p=1像素的白邊,以便在池化操作時(shí)數(shù)據(jù)大小能夠被整除。
數(shù)據(jù)經(jīng)過(guò)5個(gè)卷積層后與4 096個(gè)節(jié)點(diǎn)進(jìn)行全連接,再用Tanh激勵(lì)函數(shù)進(jìn)行映射,最后設(shè)置將輸出值減半,完成全連接層FC1。FC1和FC2的神經(jīng)元個(gè)數(shù)有4 096,F(xiàn)C3的神經(jīng)元個(gè)數(shù)為3 755,相當(dāng)于訓(xùn)練目標(biāo)的3 755個(gè)漢字類別。
表1和表2分別列出了每層配置的參數(shù)數(shù)據(jù)以及每次計(jì)算后的數(shù)據(jù)大小(Data_Size),其中每條數(shù)據(jù)都為三通道,在實(shí)際計(jì)算中需乘以3。為了便于數(shù)據(jù)顯示,這里采用實(shí)際默認(rèn)形式。表中Num_Filter為卷積濾波器個(gè)數(shù),Padding為補(bǔ)充的白邊大小,F(xiàn)ilter_Size為卷積濾波器大小,Stride為濾波器移動(dòng)的步幅,Activation為激勵(lì)函數(shù),Kernel_Size為池化濾波器大小,Kept_Prob為Dropout步驟中輸出值被削減的比例。
表1 Conv1~Conv5配置詳細(xì)信息和數(shù)據(jù)大小
表2 FC1~FC3配置詳細(xì)信息和數(shù)據(jù)大小
在卷積神經(jīng)網(wǎng)絡(luò)中,如果想把注意力放在圖像中的某個(gè)部位,那么就可以對(duì)目標(biāo)區(qū)域賦予更高的權(quán)重,達(dá)到關(guān)注該區(qū)域的目的。圖1(a)為部分形相似漢字以及被圈出的“微小特征”??梢钥吹?,漢字的“微小特征”區(qū)域大多都在漢字的上下左右以及四個(gè)斜對(duì)角八個(gè)區(qū)域。為了提高這些區(qū)域的權(quán)重,可以將漢字圖像與注意力圖(attention map)進(jìn)行濾波處理。注意力圖如圖1(b)所示,圖中以上下左右和斜對(duì)角八個(gè)權(quán)值為1的白色中心點(diǎn)向四周擴(kuò)散,權(quán)值越來(lái)越小,直到變?yōu)楹谏瑱?quán)值為0。
圖1 部分形相似漢字的“微小特征”以及注意力圖
圖2 注意力網(wǎng)絡(luò)原理
雖然在濾波處理后,關(guān)注的區(qū)域得到了加強(qiáng),但是沒(méi)有保留原始區(qū)域,因?yàn)樵紖^(qū)域權(quán)值為0。所以可以將原始圖片正常進(jìn)行卷積操作后與濾波處理后的圖片相加,這樣既增強(qiáng)了目標(biāo)區(qū)域,又保留了原始區(qū)域。注意力網(wǎng)絡(luò)原理如圖2所示。這里把圖像數(shù)據(jù)x與注意力圖進(jìn)行濾波得到H(x),然后與通過(guò)兩層卷積層計(jì)算后的數(shù)據(jù)F(x)直接相加,獲得最終數(shù)據(jù)y(y=F(x)+H(x)),最后再對(duì)該數(shù)據(jù)進(jìn)行后續(xù)的計(jì)算。這樣就達(dá)到增強(qiáng)數(shù)據(jù)的“微小特征”的目的。
AlexNet網(wǎng)絡(luò)由三組卷積神經(jīng)網(wǎng)絡(luò)(Group1、Group2和Group3)和兩個(gè)4 096節(jié)點(diǎn)的全連接層組成。Group1和Group2都包含了一個(gè)卷積層和一個(gè)池化層,Group3包含了三個(gè)卷積層和一個(gè)池化層。Conv1~Conv5是卷積層,Pooling是池化層。FC1~FC3是全連接層。
接下來(lái)把注意力層融合到AlexNet中。為了提高模型訓(xùn)練中對(duì)漢字圖像八個(gè)區(qū)域的權(quán)重,選擇在Group1和Group2相對(duì)深層的兩個(gè)位置添加注意力層,將兩個(gè)注意力層分別與Conv2和Conv3~Conv5并聯(lián),融合后的網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 AlexNet+Attention Layer網(wǎng)絡(luò)結(jié)構(gòu)
步驟如下:
(1)輸入一張227×227像素大小的三通道漢字圖片,經(jīng)過(guò)Group1計(jì)算得到大小為27×27×96的圖像數(shù)據(jù)x1。
(2)將數(shù)據(jù)x1與注意力圖進(jìn)行濾波,形成Attention Layer1,得到數(shù)據(jù)H1(x);然后與原本經(jīng)過(guò)Conv2計(jì)算后的數(shù)據(jù)F1(x)相加得到y(tǒng)1(y1=F1(x)+H1(x));最后通過(guò)池化計(jì)算得到數(shù)據(jù)x2。
(3)將數(shù)據(jù)x2與注意力圖進(jìn)行濾波,形成Attention Layer2,得到數(shù)據(jù)H2(x);然后與原本經(jīng)過(guò)Conv3~Conv5計(jì)算后的數(shù)據(jù)F2(x)相加得到y(tǒng)2(y2=F2(x)+H2(x));最后通過(guò)池化計(jì)算完成Group3。
(4)將Group3輸出數(shù)據(jù)輸入至全連接層,最后把第一步輸入的圖像分類至某一個(gè)漢字類別,完成模型訓(xùn)練和識(shí)別。
文中使用的數(shù)據(jù)集由3 755類漢字圖片組成,每一類漢字有45個(gè)樣本,共計(jì)168 975個(gè)樣本,每個(gè)樣本數(shù)據(jù)大小為227×227。在實(shí)驗(yàn)中,使用90%(150 200)的圖像進(jìn)行訓(xùn)練,即每一類漢字有40個(gè)樣本圖像進(jìn)行訓(xùn)練,5個(gè)樣本用于測(cè)試。
使用Tensorflow[15]庫(kù)來(lái)實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)模型。文中使用的GPU為一塊NVIDIA GTX970圖形處理器。實(shí)驗(yàn)將批量大小(batch size)設(shè)置為64,全部樣本訓(xùn)練次數(shù)(epoch)設(shè)置為30,則迭代次數(shù)總共為79 207次,全程學(xué)習(xí)率不變,均為0.001。在模型訓(xùn)練的每一輪迭代中,神經(jīng)網(wǎng)絡(luò)層參數(shù)都會(huì)更新,這些參數(shù)主要是卷積濾波器的參數(shù)。按照?qǐng)D3的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行訓(xùn)練,訓(xùn)練結(jié)束后將模型保存,這樣就可以使用該模型來(lái)識(shí)別漢字圖像了。
將數(shù)據(jù)集的10%作為測(cè)試集,通過(guò)比較測(cè)試圖像結(jié)果與圖像標(biāo)簽來(lái)計(jì)算識(shí)別結(jié)果,計(jì)算平均識(shí)別率。此外,還將測(cè)試結(jié)果與評(píng)估基準(zhǔn)進(jìn)行比較,結(jié)果如表3所示。
表3 模型對(duì)比 %
從表中可以看出,基于卷積神經(jīng)網(wǎng)絡(luò)的方法比基于特征的方法效果好10%;基于注意力層的卷積神經(jīng)網(wǎng)絡(luò)相比基于分段最大池化層的卷積神經(jīng)網(wǎng)絡(luò)保留的有效信息更多;只要迭代次數(shù)足夠多,卷積神經(jīng)網(wǎng)絡(luò)對(duì)于處理多分類問(wèn)題的效果還是不錯(cuò)的。
文中使用AlexNet加上注意力層對(duì)3 755類漢字圖片數(shù)據(jù)集進(jìn)行了實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明:普通的卷積神經(jīng)網(wǎng)絡(luò)會(huì)丟失漢字“微小特征”,注意力層可以有效彌補(bǔ)這一點(diǎn);卷積神經(jīng)網(wǎng)絡(luò)可以處理多分類問(wèn)題,但是會(huì)增加訓(xùn)練難度。文中的研究可以為后續(xù)的在線識(shí)別漢字圖像模型提供參考。