邵慧敏,張?zhí)t
(新疆農(nóng)業(yè)大學(xué) 計算機(jī)與信息工程學(xué)院,新疆 烏魯木齊 830001)
營業(yè)執(zhí)照是工商行政管理部門發(fā)給工商企業(yè)和個體經(jīng)營者能夠從事某些生產(chǎn)經(jīng)營活動的證明,是證明某個企業(yè)具有一定資格的重要依據(jù)[1-2]。文本圖像信息是人們獲取外部信息的主要來源。在現(xiàn)代科學(xué)研究、軍事技術(shù)、醫(yī)學(xué)、工農(nóng)業(yè)生產(chǎn)等領(lǐng)域,越來越多的人使用圖像信息來識別和判斷事物并解決實(shí)際問題。雖然從圖像中獲得文字信息非常重要,但更重要的是對文字圖像進(jìn)行處理,從圖像中獲取所需要的信息,因此在當(dāng)今科學(xué)技術(shù)高速發(fā)展的時代,對文字圖像的處理技術(shù)就有了更高的要求,能夠更加快速準(zhǔn)確地檢測人們所需的圖像文本信息[3-6]。
目前,文字檢測方法主要包括基于文本框回歸的分類、基于分割的回歸以及分割和回歸結(jié)合的方法[7-8]。雖然近些年基于深度學(xué)習(xí)的文字檢測方法已經(jīng)取得巨大進(jìn)步,但是文字作為一種具有其獨(dú)有特色的目標(biāo),其字體、顏色、方向、大小等呈現(xiàn)多樣化形態(tài),相比一般目標(biāo)檢測更加困難[9-12]。一個模型在某個開源的數(shù)據(jù)集上得到了很好的效果,用這個方法直接換到另外的數(shù)據(jù)集上也許效果就不是很好,甚至是比較差的。因?yàn)楹芏嗄P褪轻槍δ稠?xiàng)數(shù)據(jù)集來調(diào)整參數(shù)進(jìn)行不斷優(yōu)化的,所以它極大依賴于數(shù)據(jù),深度學(xué)習(xí)它有沒有學(xué)到本質(zhì)的東西,這個問題還值得深度探討[13-17]。神經(jīng)網(wǎng)絡(luò)模型在文字檢測方面已經(jīng)有了研究,例如區(qū)域文本框網(wǎng)絡(luò)(RPN),只是RPN進(jìn)行的文字檢測很難準(zhǔn)確地進(jìn)行水平檢測。RPN是通過直接訓(xùn)練來定位圖像中的文本行,但是通過文本行來預(yù)測圖像中的文本出現(xiàn)錯誤的可能性很大,因?yàn)槲谋臼且粋€沒有明確的封閉邊界的序列。令人欣喜的是,Ren提出了anchor回歸機(jī)制允許RPN可以使用單尺度窗口檢測多尺度的對象,這個想法的核心是通過使用一些靈活的anchors在大尺度和縱橫比的范圍內(nèi)對物體進(jìn)行預(yù)測[18-22]。其研究結(jié)果表明,根據(jù)CTPN方法,建立營業(yè)執(zhí)照文字檢測神經(jīng)網(wǎng)絡(luò)模型,能夠準(zhǔn)確地對營業(yè)執(zhí)照的文字進(jìn)行水平檢測。
CTPN神經(jīng)網(wǎng)絡(luò)模型主要包括三個部分:卷積層、雙向LSTM、全連接層。底層使用VGG16來提取特征,由一個W*H*C的conv5的feature map,使用大小為3*3的空間窗口,在最后一層卷積(VGG16的conv5)的feature map上滑動窗口。每行中的順序窗口通過BLSTM(bi-directional long short-term memory)循環(huán)連接,其中每個窗口的卷積特征(3×3×C)作為BLSTM的輸入,再實(shí)現(xiàn)雙向BLSTM,增強(qiáng)關(guān)聯(lián)序列的信息學(xué)習(xí),再將VGG最后一層卷積層輸出的feature map轉(zhuǎn)化為向量形式,用于接下來的BLSTM訓(xùn)練。然后將BLSTM的輸出再輸入至FC中,最終模型輸出:2k個anchor的文本/非文本分?jǐn)?shù)、2k個y坐標(biāo)、k個side_refinement(側(cè)向細(xì)化偏移量)。該模型設(shè)計的CTPN神經(jīng)網(wǎng)絡(luò)模型如圖1所示。

圖1 CTPN神經(jīng)網(wǎng)絡(luò)模型
CTPN神經(jīng)網(wǎng)絡(luò)是一個完整的卷積網(wǎng)絡(luò),可以允許輸入任意大小的圖像。CTPN通過在CNN的feature map上密集地移動窗口來檢測文本行,輸出的是一系列的適當(dāng)尺寸(固定寬度16像素,長度是可以根據(jù)情況調(diào)整的)的文本proposal。給每個proposal設(shè)計了k個垂直anchor用來預(yù)測每個點(diǎn)的y坐標(biāo)。這k個anchor具有固定16個像素的水平位置,但垂直位置在k個不同的高度上變化。此次使用10個anchors,高度在11~273個像素變化,垂直坐標(biāo)是通過一個proposal邊界框的高度和y軸的中心計算得到的。有關(guān)預(yù)測anchor邊界框的相對垂直坐標(biāo)的計算公式如下:
(1)

CTPN的三個輸出都被一起連接到全連接層上。這三個輸出同時預(yù)測文本/非文本分?jǐn)?shù),垂直坐標(biāo)和side-refinement的偏移量。采用k個anchor對它們?nèi)齻€分別預(yù)測,依次在輸出層產(chǎn)生2k、2k和k個參數(shù)(CTPN固定了水平位置,只預(yù)測垂直位置)。利用多任務(wù)學(xué)習(xí)來聯(lián)合優(yōu)化模型參數(shù),目標(biāo)函數(shù)如下:
(2)

偏移量計算公式如下:
(3)
其中,O表示在X方向的歸一化的偏移量,cx表示anchor的中心,xside表示預(yù)測的中心,w表示anchor的寬度。針對文本/非文本的分類,二進(jìn)制的標(biāo)簽被分給每一個正anchor(文本)和負(fù)anchor(非文本),正負(fù)anchor是由IoU與GT邊界重疊計算得到的。正的anchor被定義為:IoU與GTbox的重疊大于0.7的或者最高(集是一個很小的文本pattern也會被分為一個正的anchor)的anchor,負(fù)的anchor是IoU小于0.5產(chǎn)生。
實(shí)驗(yàn)數(shù)據(jù)是筆者用手機(jī)拍攝及掃描的,總共收集大約2 000張營業(yè)執(zhí)照數(shù)據(jù)集,采集日期是2018年12月初-至今。由于營業(yè)執(zhí)照含有持有者的個人信息,所以收集起來比較困難。
2.2.1 圖像采集
手機(jī)拍照或者掃描得到營業(yè)執(zhí)照的圖片。
2.2.2 圖像預(yù)處理
營業(yè)執(zhí)照的圖像背景噪聲大,所以首先利用Opencv對圖像進(jìn)行灰度化、矯正處理,再用labelimg對2 000張數(shù)據(jù)進(jìn)行標(biāo)注,得到xml格式的數(shù)據(jù)集,然后再轉(zhuǎn)成VOCdevkit數(shù)據(jù)集,用于訓(xùn)練CTPN模型。
該模型使用隨機(jī)梯度下降(SGD)對現(xiàn)有的CTPN進(jìn)行訓(xùn)練。因?yàn)闋砍兜酱罅繑?shù)據(jù)的計算訓(xùn)練,所以選用的服務(wù)器是適合于大規(guī)模運(yùn)算的Google Cloud Platform的GPU服務(wù)器,所用數(shù)據(jù)集為VOCdevkit,并進(jìn)行10 000次迭代訓(xùn)練。與RPN神經(jīng)網(wǎng)絡(luò)相同的是訓(xùn)練樣本為anchors,每一個anchor是一個訓(xùn)練樣本。對每個預(yù)測來說,水平位置和k個anchors的位置是固定的,這個是由輸入圖像在conv5的feature map上窗口的位置預(yù)先計算得到的,生成的文本proposals是由文本分?jǐn)?shù)值大于0.7(通過使用NMS)的anchor生成的。通過使用垂直anchor和fine-scale策略,detector可以處理各種比例和縱橫比的文本行,進(jìn)一步節(jié)省了計算量和時間。在迭代訓(xùn)練過程中,生成的total_loss、model_loss如圖2、圖3所示。

圖2 total_loss
目前,Mean Average Precision特別適用于預(yù)測目標(biāo)位置及類別的算法,因此它對評估定位模型、目標(biāo)檢測模型和分割模型非常有用。在計算mAP之前先要了解Precision和Recall也就是精確率和召回率,精確率主要用于衡量模型做出預(yù)測的精準(zhǔn)度,召回率主要用于衡量模型對Positives的檢測程度。

圖3 model_loss
(4)

(5)
其中,TP=True Positive,TN=True Negative,F(xiàn)P=False Positive,F(xiàn)N=False Negative。隨著Recall從0到1之間的提升,AP(average precision)可以由計算11個不同Recall階層最大Precision的評價值而得到。該文使用如下方式計算AP:

(6)

模型訓(xùn)練完成后進(jìn)行測試,得到的AP如圖4所示。

圖4 AP
本次實(shí)驗(yàn)首先進(jìn)行數(shù)據(jù)采集,其次對采集數(shù)據(jù)進(jìn)行預(yù)處理,并分析所研究的營業(yè)執(zhí)照文字中所需要檢測的位置,然后運(yùn)用python語言結(jié)合Tensorflow框架、Opencv等第三方工具包構(gòu)建CTPN神經(jīng)網(wǎng)絡(luò),再根據(jù)評價指標(biāo)對模型進(jìn)行參數(shù)優(yōu)化,最后確定模型并與現(xiàn)有的方式進(jìn)行對比分析。經(jīng)過多次實(shí)驗(yàn)后,選取了其中的一個樣本進(jìn)行對比分析,此次是將RPN和未訓(xùn)練的CTPN及訓(xùn)練后的CTPN對營業(yè)執(zhí)照圖像的文字檢測結(jié)果進(jìn)行對比,檢測結(jié)果如圖5所示。

(a)RPN (b)未訓(xùn)練的CTPN (c)已訓(xùn)練的CTPN
由于營業(yè)執(zhí)照復(fù)雜的背景,噪聲干擾,字體大小不一致,顏色多樣,且需檢測的文字都是水平檢測,所以基于RPN的方法對營業(yè)執(zhí)照圖像中文字的檢測不具有良好的魯棒性,經(jīng)測試有很多的文字都未被檢測到。像營業(yè)執(zhí)照中的經(jīng)營場所和經(jīng)營范圍出現(xiàn)多行文字的情況時,每一行文字沒有被分開檢測,這對后續(xù)的文字識別率有很大的影響,因?yàn)镺CR識別只能識別單行的文字。沒有用營業(yè)執(zhí)照數(shù)據(jù)集訓(xùn)練的CTPN的檢測率也不理想,部分文字未被檢測到,同樣在出現(xiàn)多行文字時沒有將每一行進(jìn)行分開檢測,但檢測效果比RPN要好。而經(jīng)過訓(xùn)練后的CTPN,檢測的準(zhǔn)確率大大提高,也解決了出現(xiàn)多行文字時每一行文字被分開檢測,準(zhǔn)確率達(dá)到項(xiàng)目使用的要求。
CTPN利用文字序列的特點(diǎn)降低了檢測難度,使其能夠?qū)Ρ尘皬?fù)雜的營業(yè)執(zhí)照圖像進(jìn)行高精度檢測。而系統(tǒng)的不足之處是對拍攝角度、曝光度及像素較低的圖像的檢測率較低,將會在后期的研究中對其進(jìn)行改進(jìn)。目前數(shù)據(jù)集較少,還需要再不斷收集數(shù)據(jù),并且在用labelimg標(biāo)注數(shù)據(jù)時,要避免勾圖的框過大,保證文字被完整框住即可,使用這樣標(biāo)注的數(shù)據(jù)集進(jìn)行訓(xùn)練,會更有利于提高CTPN模型的文字檢測率。