王悅凝,華卻才讓,2*,才讓當(dāng)知,環(huán)科尤
(1.青海師范大學(xué) 計算機學(xué)院,青海 西寧 810008;2.青海師范大學(xué) 藏文信息處理教育部重點實驗室,青海 西寧 810008)
文本識別是人工智能領(lǐng)域一個重要的分支,是模式識別應(yīng)用中最重要的技術(shù),在光學(xué)字符文字識別中,最古老、最復(fù)雜的技術(shù)之一是識別印刷體文本,Youngmin Baek[1]等人通過注意力機制精準(zhǔn)定位文本,并完成端到端的字符識別.藏文圖像文本識別是藏文智能信息處理研究領(lǐng)域重點研究的課題之一,相比較于中英文的文本識別,藏文文本識別的起步略晚,由此,許多研究者開始對藏文的文字進行研究以解決藏文的文字識別問題.如今藏文文本識別技術(shù)也逐漸成熟,卷積神經(jīng)網(wǎng)絡(luò)成為研究藏文文本識別的典型技術(shù)之一,當(dāng)前流行的卷積神經(jīng)網(wǎng)絡(luò)模型有LeNet[2-3]、AlexNet、Res Net、VGG[4]等模型,為了提高模型精準(zhǔn)度引入注意力機制的概念,可以將其融入到網(wǎng)絡(luò)中的任一位置,該思想已經(jīng)在針對藏文圖像分類、印刷體藏文文本識別、語音識別、機器翻譯等研究領(lǐng)域都有廣泛的實際應(yīng)用 .
藏文的字形結(jié)構(gòu)多變,字體工整優(yōu)美,字體以基字為核心,其余字母圍繞基字上下左右疊加字母,最后組成完整的字體,由于字體結(jié)構(gòu)較為復(fù)雜,字體的粘連性通過分割方可識別.目前Android市場中含有藏文的文本圖像識別系統(tǒng)只有十款左右[5],較突出的軟件如:漢王OCR文字識別軟件,該識別軟件支持識別多種字體,識別率達到85%,亟需豐富安卓市場資源并提高識別率.雖然Android已經(jīng)成為目前的主流操作系統(tǒng),但含有藏文文本識別功能的工具較少,所以選用Android作為開發(fā)平臺[6],鑒于此,本文提出了基于CBAM-LeNet-5模型的Android藏文圖像文本識別系統(tǒng).
二值化處理后的文本圖像會呈現(xiàn)清晰的輪廓,其思想是將圖像設(shè)置一個閾值,如果該圖像中的像素點大于所設(shè)定的閾值則為255,相反小于設(shè)定閾值則為0,公式為:
(1)
實現(xiàn)二值化的方法有全局閾值分割、OSTU閾值二值化[7]、迭代等方法.本文采用OSTU二值化方法,其主要思想是按照特征設(shè)置一個初始閾值,根據(jù)閾值將其分為前景與背景.通過電子設(shè)備拍攝一張藏文文本圖像如圖1所示.首先,假定一個灰度值將圖像分成大于閾值和小于閾值的兩個部分,即前景與背景兩個部分,其次利用求出的前景、背景的兩個占比再求出對應(yīng)的平均值,通過閾值的循環(huán)輪值最后計算出兩部分之間的類間方差,找到類間方差最大的值,則為理想閾值,如圖1所示.
(a)文本圖像原圖 (b)二值化后文本圖像結(jié)果圖1 藏文文本圖像二值化效果對比
獲取文檔的時候會因人為因素導(dǎo)致文檔圖像的傾斜,導(dǎo)致字符出現(xiàn)不同角度的旋轉(zhuǎn)或位置的偏移,圖像發(fā)生位置變化嚴重時會影響文本切分,特別是在識別過程中影響對藏文字符基線特征的定位,常見的圖像矯正方法有霍夫變換矯正算法、透視變換和旋轉(zhuǎn)矯正等.
霍夫變換主要是通過尋找最大的參數(shù)疊點對應(yīng)的角度進行圖像變換的位置矯正,找到可能存在的直線,該算法主要思想利用y=kx+b方程的參數(shù)空間和變量空間的對應(yīng)關(guān)系,其中k、x分別代表斜率和截距,(k,x)為變量空間中的已知量,(k,b)在參數(shù)空間中作為變量坐標(biāo).直線y=k1x+b1在參數(shù)空間映射的點為(k1,b1),參數(shù)空間直線y=k1x+b1在變量空間映射的點為(x1,y1),過變量(x,y)有無數(shù)直線與參數(shù)空間點對應(yīng).
圖像校正后通過藏文圖像文本分割得到字丁.首先使用水平投影法確定文本行位置,其主要思想是在圖像中的多行文本中,沿著縱軸方向取直線,統(tǒng)計穿過該直線的文字像素累加后的數(shù)值,通過二值化后的圖像背景區(qū)域為黑色,含有文字區(qū)域像素值為1,空白區(qū)域為0,掃描并統(tǒng)計每行帶有黑色像素值.對于多行文本,見圖2(a),再利用投影法對其進行文本行切分,基于投影法的水平投影的輪廓可視化,如圖2(b)所示.
(a)原圖
(b)水平投影圖2 行分割效果
藏文字丁的結(jié)構(gòu)包括:元音、上加字、基字、下加字,藏文字符的書寫規(guī)則是保證基字必須存在,其余結(jié)構(gòu)可與基字自由組合.藏文字丁在分割時有一些難點:①上加字和基字兩個字符或者元音與上加字兩個字符會產(chǎn)生粘連性.②藏文音節(jié)字符整體過大影響字丁分割.通常采用投影法進行分割,通過垂直投影法[8]計算文本圖像中單個字符寬度值,解決切分字符問題,其基本思想為在圖像中的每一行文本橫軸取直線.本文針對藏文字丁字符研究,找準(zhǔn)藏文字丁基線,以藏文字丁為切分單位,基于垂直投影進行列分割從而計算出每個字符的寬度,統(tǒng)計垂直于該直線的圖像上文字像素累加和數(shù)值.
圖3是以字丁為分割單位的投影分割效果圖,首先對藏文文本進行行分割,再進行字丁按列分割,由圖3可見,分割錯誤的類型主要有三種;①有元音的字丁.例如:、、以及等.②有下加字的字丁,例如:、和. ③元音和下加字同時存在,例如:、和.這三種分割錯誤的主要原因是元音和下加字的筆畫寬度大于基字,部分筆畫延伸到了前后字符區(qū)域.投影分割法按列遍歷像素起始位置時,元音像素區(qū)域和前后的文字像素區(qū)域有相交,被誤判為一個字符區(qū)域,因此分割錯誤.
圖3 投影法分割效果
其次,計算字丁寬度T.當(dāng)字丁帶有元音時,整個字丁的寬度是音節(jié)分割符的6倍,否則是音節(jié)分割符的5倍.因此,設(shè)置檢測字丁寬度閾值t為5×Min(w) 最后,異常文字按比例分割.遍歷每個L當(dāng)中的文字,若當(dāng)前文字寬度w小于等于Min(w)或在閾值t區(qū)間時,不進行切分.否則當(dāng)作異常寬度文字,按比例等切.例如圖3第1行的“”,它的寬度分別是“”和“”的2倍,因此可以從“”中間位置切分得到“”和“”,切分效果如圖4.圖4中有232個字丁,其中10個字丁沒有正確分割,按等切算法分割,其分割正確率達95.69%. 圖4 等切分割法效果 近年來,卷積神經(jīng)網(wǎng)絡(luò)有很多成熟的網(wǎng)絡(luò)模型[9],本文為了減小模型體量,選擇單獨使用模型,通過三種網(wǎng)絡(luò)模型之間的實驗,選出準(zhǔn)確率最高的LeNet-5模型.圖像首先經(jīng)過預(yù)處理后進行字符分割與圖像歸一化,為了加快識別速率,識別時通過圖像投影抽取藏文文本圖像的像素點,由此獲得字符的特征向量. LeNet網(wǎng)絡(luò)模型是經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)模型,由Yann LeCun[10]等人研究手寫識別數(shù)字時提出,直到現(xiàn)在仍然受用,該模型由卷積層、池化層、全連接層組成,為了防止過擬合,在最后加入Dropout層.卷積神經(jīng)網(wǎng)絡(luò)是提取特征圖像的過程,由此為了提高圖像重點區(qū)域部分,引入注意力機制思想,將賦予藏文文本圖像對應(yīng)權(quán)重完成特征提取.本文識別藏文圖像文本基線采用LeNet-5網(wǎng)絡(luò)模型,引入注意力思想從中提取重點區(qū)域的特征.LeNet-5網(wǎng)絡(luò)模型具體結(jié)構(gòu)如圖5所示. 圖5 基于藏文圖像的LeNet-5網(wǎng)絡(luò)模型 輸入一張32×32的圖像,C1卷積層有6個卷積核,卷積核的大小設(shè)置為5×5,偏置項為1最后得到一個28×28的特征圖圖像,卷積層公式見(2),公式中l(wèi)為卷積層數(shù),Mj為第j個特征圖.S2池化層采用2×2,特征圖為14×14.C3卷積層通過S2的特征計算得到C3層的卷積核數(shù)量為16,特征圖的大小為10×10,S4池化層與S2層相同,C5卷積層,把每一張?zhí)卣鲌D與池化層全連接,F(xiàn)6全連接層,輸出層采用softmax函數(shù),概率范圍為0~1. (2) MC(F)=σ(MLP(AvgPool(F)+MLP(MaxPool(F))) (3) 空間注意力模塊與通道不同的是表達了特征信息在哪里的問題,使用了兩個相似的輸出接受通道軸的聚集,是平均池化與最大池化結(jié)合后的特征信息,沿著通道模塊找到最優(yōu)的特征信息位置,最終將信息轉(zhuǎn)發(fā)到卷積層生成空間注意力模塊,記為Ms(F)∈RH×W,并連接在網(wǎng)絡(luò)結(jié)構(gòu)中進行卷積提取特征.本文網(wǎng)絡(luò)架構(gòu)選擇LeNet-5(實驗分析中將展示最佳網(wǎng)絡(luò)模型結(jié)果),通過注意力機制的思想決定強調(diào)文本圖像的重點特征或抑制文本,空間注意力模塊的過程見公式(4),公式中σ為Sigmoid,f5×5為卷積核的大小. Ms(F)=σ(f5×5([AvgPool(F);MaxPool(F)])) (4) 本文引入的卷積層注意力模塊為混合注意力(CBAM),給定一張?zhí)卣鲌DF∈RC×H×W作為輸入圖像,集成了通道注意力機制與空間注意力機制,順序為先通道注意力機制實現(xiàn)了通道層面的注意力后在空間注意力機制實現(xiàn)空間層的注意力,通過兩種注意力,綜合了通道和空間的因素組成最有效的網(wǎng)絡(luò)模型.CBAM可以與卷積神經(jīng)網(wǎng)絡(luò)模型[12]任意結(jié)合,首先利用通道維度對特征圖使用的最大池化和平均池化,將以上兩個池化后的結(jié)果輸入到卷積層中,產(chǎn)生空間注意力自動掩碼,CBAM通過特征圖的空間關(guān)系映射到空間注意力自動驗碼,選擇最有力的卷積特征,過濾信息的冗余,CBAM-LeNet-5的結(jié)構(gòu)如圖6所示. 圖6 CBAM-LeNet-5結(jié)構(gòu)圖 本文實現(xiàn)的基于Android的藏文圖像文本識別系統(tǒng),由前端開發(fā)和后端識別兩部分共同組成,前端開發(fā)Android采用三層框架模式,系統(tǒng)總體架構(gòu)圖如圖7所示.前臺與后臺識別聯(lián)通的方式是通過構(gòu)造HTTP技術(shù)完成數(shù)據(jù)通信,本文使用Get和Post方法,Android開發(fā)中在URL_UPLOAD中可查看Get參數(shù),在后臺設(shè)置指定Starget_path用于接受文件目錄,在Android端請求后臺地址和綁定的端口號,在后臺收到圖像的請求識別后,解析數(shù)據(jù)后得到文本內(nèi)容,解析的結(jié)果通過對應(yīng)的參數(shù)條件將數(shù)據(jù)封裝成JSON格式,最終請求獲取數(shù)據(jù)返回內(nèi)容,完成前臺與后臺的數(shù)據(jù)交互,由此完成藏文文本識別結(jié)果的上傳. 圖7 基于Android的藏文圖像文本識別系統(tǒng)總體框架 系統(tǒng)包括四個功能模塊:用戶注冊登錄界面、識別界面、我的界面、退出系統(tǒng)界面,其中識別模塊中包含圖像采集處理、預(yù)處理功能、藏文文本識別完成識別功能,對于最終獲取到返回的識別結(jié)果,可以對其進行復(fù)制與編輯,將其文本正確保存,可以在下一次登錄時查找歷史記錄,本文在開發(fā)系統(tǒng)時在界面的設(shè)計上考慮到不同民族用戶的習(xí)慣和需求從而設(shè)計了藏文語言的界面,功能界面展示圖如圖8所示(本文展示藏文界面). (a)用戶登錄界面 (b)識別界面 (c)我的界面 (d)設(shè)置界面圖8 基于Android的藏文圖像文本識別 實驗中選擇三種各有優(yōu)勢的網(wǎng)絡(luò)模型(LeNet-5、AlexNet、ResNet)分別對藏文印刷體的圖像進行模型訓(xùn)練.首先比對基線模型的訓(xùn)練識別率,最終ResNet網(wǎng)絡(luò)模型樣本上的識別率達到96.57%,訓(xùn)練集識別率和損失值如圖9所示,但測試集中發(fā)現(xiàn)LeNet-5網(wǎng)絡(luò)模型識別率更好,測試集變化趨勢如圖10所示,雖然LeNet網(wǎng)絡(luò)與ResNet網(wǎng)絡(luò)幾乎在同一時刻收斂,但LeNet網(wǎng)絡(luò)模型更加趨于平穩(wěn),即使在訓(xùn)練集中ResNet網(wǎng)絡(luò)的識別率比LeNet-5網(wǎng)絡(luò)高,但由于ResNet網(wǎng)絡(luò)層很深,比較適合數(shù)據(jù)集龐大的訓(xùn)練. 圖9 三種基線網(wǎng)絡(luò)模型訓(xùn)練集識別率與損失值變化趨勢 本文通過各個關(guān)于藏文的網(wǎng)站爬取到藏文字符,由此構(gòu)建的數(shù)據(jù)集有9570張,其中字丁類別達到638個,相比于其他藏文字丁數(shù)據(jù)集中的字丁類別,本文的字丁類別較多,為此本文的數(shù)據(jù)集選用LeNet-5網(wǎng)絡(luò)更合適,通過適當(dāng)調(diào)整和優(yōu)化LeNet-5網(wǎng)絡(luò),有利于基于字丁的藏文圖像提高識別率. 圖10 三種基線網(wǎng)絡(luò)模型測試集識別率與損失值 針對傳統(tǒng)的LeNet-5與引入注意力機制模塊的CBAM-LeNet-5進行比對,最終本文所使用的網(wǎng)絡(luò)模型比傳統(tǒng)模型提高2.36%,實驗結(jié)果見下表1.最后通過不同的參數(shù)進行實驗,對初始化參數(shù)進行微調(diào)參數(shù)優(yōu)化模型,訓(xùn)練出一款適合藏文圖像文本的網(wǎng)絡(luò)模型, 表1 基于藏文的兩種網(wǎng)絡(luò)模型識別率 通過上表實驗結(jié)果可見,本文最終優(yōu)化的網(wǎng)絡(luò)模型CBAM-LeNet-5識別率更高,更加適用于藏文文本圖像的識別,分別對訓(xùn)練參數(shù)進行實驗,具體參數(shù)配置見下表2. 表2 基于CBAM-LeNet-5模型的最優(yōu)化參數(shù) 系統(tǒng)的測試環(huán)境:Android7.1.1和Android10.0,Nexus S API:25和API:29,內(nèi)存:4G,CPU主頻:1.6GHz,CPU:i5-10th GEN.真機測試環(huán)境1:Meitu M6,Android 7.0,CPU主頻:2.0GHz,CPU:Helio P10,內(nèi)存:3GB.真機測試環(huán)境2:HONOR X10,Android 10.0,CPU:Kirin 820,內(nèi)存:8GB. 系統(tǒng)在開發(fā)完成后要對每個功能進行測試以完善系統(tǒng).啟動APP之后,通過用戶注冊或直接登錄系統(tǒng),如圖8(a)所示,用戶名超過8個字符或輸入其他符號則注冊失敗.在圖8(b)中,識別界面為主要識別文本功能,識別前可對圖像進行預(yù)處理,顯示識別結(jié)果后對文字進行修改并保存結(jié)果,在我的界面中的識別記錄中可查看保存結(jié)果如圖8(c).如圖8(d)設(shè)置的界面,可以分別選擇三種界面,藏文、中文、英文,按鈕可隨意切換. 考慮到目前市場中出現(xiàn)多種安卓版本的手機設(shè)備,測試版本兼容性,經(jīng)過以上測試,系統(tǒng)可以在模擬器和真機上正常運行. 本文首先對藏文圖像進行預(yù)處理技術(shù),通過改進的等切分割法分割字丁,將傳統(tǒng)的LeNet-5的網(wǎng)絡(luò)模型與CBAM注意力機制相結(jié)合,提取藏文文本圖像的特征信息,最終通過微調(diào)模型參數(shù),平均識別率達到96.03%.再通過Android開發(fā)平臺開發(fā)手機APP,采用HTTP技術(shù)實現(xiàn)數(shù)據(jù)傳輸,實現(xiàn)基于Android的藏文圖像文本識別的系統(tǒng).由于目前構(gòu)建的藏文字丁數(shù)據(jù)集只有9570,后續(xù)通過擴充數(shù)據(jù)集繼續(xù)實驗,模型也需要進一步改進.3 基于CBAM-LeNet-5模型的藏文文本識別
4 系統(tǒng)實現(xiàn)
5 實驗分析及系統(tǒng)測試
6 總結(jié)