邵慧敏,張?zhí)t
(新疆農(nóng)業(yè)大學(xué) 計(jì)算機(jī)與信息工程學(xué)院,新疆 烏魯木齊 830001)
營(yíng)業(yè)執(zhí)照是工商行政管理部門發(fā)給工商企業(yè)和個(gè)體經(jīng)營(yíng)者能夠從事某些生產(chǎn)經(jīng)營(yíng)活動(dòng)的證明,是證明某個(gè)企業(yè)具有一定資格的重要依據(jù)[1-2]。文本圖像信息是人們獲取外部信息的主要來源。在現(xiàn)代科學(xué)研究、軍事技術(shù)、醫(yī)學(xué)、工農(nóng)業(yè)生產(chǎn)等領(lǐng)域,越來越多的人使用圖像信息來識(shí)別和判斷事物并解決實(shí)際問題。雖然從圖像中獲得文字信息非常重要,但更重要的是對(duì)文字圖像進(jìn)行處理,從圖像中獲取所需要的信息,因此在當(dāng)今科學(xué)技術(shù)高速發(fā)展的時(shí)代,對(duì)文字圖像的處理技術(shù)就有了更高的要求,能夠更加快速準(zhǔn)確地檢測(cè)人們所需的圖像文本信息[3-6]。
目前,文字檢測(cè)方法主要包括基于文本框回歸的分類、基于分割的回歸以及分割和回歸結(jié)合的方法[7-8]。雖然近些年基于深度學(xué)習(xí)的文字檢測(cè)方法已經(jīng)取得巨大進(jìn)步,但是文字作為一種具有其獨(dú)有特色的目標(biāo),其字體、顏色、方向、大小等呈現(xiàn)多樣化形態(tài),相比一般目標(biāo)檢測(cè)更加困難[9-12]。一個(gè)模型在某個(gè)開源的數(shù)據(jù)集上得到了很好的效果,用這個(gè)方法直接換到另外的數(shù)據(jù)集上也許效果就不是很好,甚至是比較差的。因?yàn)楹芏嗄P褪轻槍?duì)某項(xiàng)數(shù)據(jù)集來調(diào)整參數(shù)進(jìn)行不斷優(yōu)化的,所以它極大依賴于數(shù)據(jù),深度學(xué)習(xí)它有沒有學(xué)到本質(zhì)的東西,這個(gè)問題還值得深度探討[13-17]。神經(jīng)網(wǎng)絡(luò)模型在文字檢測(cè)方面已經(jīng)有了研究,例如區(qū)域文本框網(wǎng)絡(luò)(RPN),只是RPN進(jìn)行的文字檢測(cè)很難準(zhǔn)確地進(jìn)行水平檢測(cè)。RPN是通過直接訓(xùn)練來定位圖像中的文本行,但是通過文本行來預(yù)測(cè)圖像中的文本出現(xiàn)錯(cuò)誤的可能性很大,因?yàn)槲谋臼且粋€(gè)沒有明確的封閉邊界的序列。令人欣喜的是,Ren提出了anchor回歸機(jī)制允許RPN可以使用單尺度窗口檢測(cè)多尺度的對(duì)象,這個(gè)想法的核心是通過使用一些靈活的anchors在大尺度和縱橫比的范圍內(nèi)對(duì)物體進(jìn)行預(yù)測(cè)[18-22]。其研究結(jié)果表明,根據(jù)CTPN方法,建立營(yíng)業(yè)執(zhí)照文字檢測(cè)神經(jīng)網(wǎng)絡(luò)模型,能夠準(zhǔn)確地對(duì)營(yíng)業(yè)執(zhí)照的文字進(jìn)行水平檢測(cè)。
CTPN神經(jīng)網(wǎng)絡(luò)模型主要包括三個(gè)部分:卷積層、雙向LSTM、全連接層。底層使用VGG16來提取特征,由一個(gè)W*H*C的conv5的feature map,使用大小為3*3的空間窗口,在最后一層卷積(VGG16的conv5)的feature map上滑動(dòng)窗口。每行中的順序窗口通過BLSTM(bi-directional long short-term memory)循環(huán)連接,其中每個(gè)窗口的卷積特征(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個(gè)anchor的文本/非文本分?jǐn)?shù)、2k個(gè)y坐標(biāo)、k個(gè)side_refinement(側(cè)向細(xì)化偏移量)。該模型設(shè)計(jì)的CTPN神經(jīng)網(wǎng)絡(luò)模型如圖1所示。
圖1 CTPN神經(jīng)網(wǎng)絡(luò)模型
CTPN神經(jīng)網(wǎng)絡(luò)是一個(gè)完整的卷積網(wǎng)絡(luò),可以允許輸入任意大小的圖像。CTPN通過在CNN的feature map上密集地移動(dòng)窗口來檢測(cè)文本行,輸出的是一系列的適當(dāng)尺寸(固定寬度16像素,長(zhǎng)度是可以根據(jù)情況調(diào)整的)的文本proposal。給每個(gè)proposal設(shè)計(jì)了k個(gè)垂直anchor用來預(yù)測(cè)每個(gè)點(diǎn)的y坐標(biāo)。這k個(gè)anchor具有固定16個(gè)像素的水平位置,但垂直位置在k個(gè)不同的高度上變化。此次使用10個(gè)anchors,高度在11~273個(gè)像素變化,垂直坐標(biāo)是通過一個(gè)proposal邊界框的高度和y軸的中心計(jì)算得到的。有關(guān)預(yù)測(cè)anchor邊界框的相對(duì)垂直坐標(biāo)的計(jì)算公式如下:
(1)
CTPN的三個(gè)輸出都被一起連接到全連接層上。這三個(gè)輸出同時(shí)預(yù)測(cè)文本/非文本分?jǐn)?shù),垂直坐標(biāo)和side-refinement的偏移量。采用k個(gè)anchor對(duì)它們?nèi)齻€(gè)分別預(yù)測(cè),依次在輸出層產(chǎn)生2k、2k和k個(gè)參數(shù)(CTPN固定了水平位置,只預(yù)測(cè)垂直位置)。利用多任務(wù)學(xué)習(xí)來聯(lián)合優(yōu)化模型參數(shù),目標(biāo)函數(shù)如下:
(2)
偏移量計(jì)算公式如下:
(3)
其中,O表示在X方向的歸一化的偏移量,cx表示anchor的中心,xside表示預(yù)測(cè)的中心,w表示anchor的寬度。針對(duì)文本/非文本的分類,二進(jìn)制的標(biāo)簽被分給每一個(gè)正anchor(文本)和負(fù)anchor(非文本),正負(fù)anchor是由IoU與GT邊界重疊計(jì)算得到的。正的anchor被定義為:IoU與GTbox的重疊大于0.7的或者最高(集是一個(gè)很小的文本pattern也會(huì)被分為一個(gè)正的anchor)的anchor,負(fù)的anchor是IoU小于0.5產(chǎn)生。
實(shí)驗(yàn)數(shù)據(jù)是筆者用手機(jī)拍攝及掃描的,總共收集大約2 000張營(yíng)業(yè)執(zhí)照數(shù)據(jù)集,采集日期是2018年12月初-至今。由于營(yíng)業(yè)執(zhí)照含有持有者的個(gè)人信息,所以收集起來比較困難。
2.2.1 圖像采集
手機(jī)拍照或者掃描得到營(yíng)業(yè)執(zhí)照的圖片。
2.2.2 圖像預(yù)處理
營(yíng)業(yè)執(zhí)照的圖像背景噪聲大,所以首先利用Opencv對(duì)圖像進(jìn)行灰度化、矯正處理,再用labelimg對(duì)2 000張數(shù)據(jù)進(jìn)行標(biāo)注,得到xml格式的數(shù)據(jù)集,然后再轉(zhuǎn)成VOCdevkit數(shù)據(jù)集,用于訓(xùn)練CTPN模型。
該模型使用隨機(jī)梯度下降(SGD)對(duì)現(xiàn)有的CTPN進(jìn)行訓(xùn)練。因?yàn)闋砍兜酱罅繑?shù)據(jù)的計(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,每一個(gè)anchor是一個(gè)訓(xùn)練樣本。對(duì)每個(gè)預(yù)測(cè)來說,水平位置和k個(gè)anchors的位置是固定的,這個(gè)是由輸入圖像在conv5的feature map上窗口的位置預(yù)先計(jì)算得到的,生成的文本proposals是由文本分?jǐn)?shù)值大于0.7(通過使用NMS)的anchor生成的。通過使用垂直anchor和fine-scale策略,detector可以處理各種比例和縱橫比的文本行,進(jìn)一步節(jié)省了計(jì)算量和時(shí)間。在迭代訓(xùn)練過程中,生成的total_loss、model_loss如圖2、圖3所示。
圖2 total_loss
目前,Mean Average Precision特別適用于預(yù)測(cè)目標(biāo)位置及類別的算法,因此它對(duì)評(píng)估定位模型、目標(biāo)檢測(cè)模型和分割模型非常有用。在計(jì)算mAP之前先要了解Precision和Recall也就是精確率和召回率,精確率主要用于衡量模型做出預(yù)測(cè)的精準(zhǔn)度,召回率主要用于衡量模型對(duì)Positives的檢測(cè)程度。
圖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)可以由計(jì)算11個(gè)不同Recall階層最大Precision的評(píng)價(jià)值而得到。該文使用如下方式計(jì)算AP:
(6)
模型訓(xùn)練完成后進(jìn)行測(cè)試,得到的AP如圖4所示。
圖4 AP
本次實(shí)驗(yàn)首先進(jìn)行數(shù)據(jù)采集,其次對(duì)采集數(shù)據(jù)進(jìn)行預(yù)處理,并分析所研究的營(yíng)業(yè)執(zhí)照文字中所需要檢測(cè)的位置,然后運(yùn)用python語言結(jié)合Tensorflow框架、Opencv等第三方工具包構(gòu)建CTPN神經(jīng)網(wǎng)絡(luò),再根據(jù)評(píng)價(jià)指標(biāo)對(duì)模型進(jìn)行參數(shù)優(yōu)化,最后確定模型并與現(xiàn)有的方式進(jìn)行對(duì)比分析。經(jīng)過多次實(shí)驗(yàn)后,選取了其中的一個(gè)樣本進(jìn)行對(duì)比分析,此次是將RPN和未訓(xùn)練的CTPN及訓(xùn)練后的CTPN對(duì)營(yíng)業(yè)執(zhí)照?qǐng)D像的文字檢測(cè)結(jié)果進(jìn)行對(duì)比,檢測(cè)結(jié)果如圖5所示。
(a)RPN (b)未訓(xùn)練的CTPN (c)已訓(xùn)練的CTPN
由于營(yíng)業(yè)執(zhí)照復(fù)雜的背景,噪聲干擾,字體大小不一致,顏色多樣,且需檢測(cè)的文字都是水平檢測(cè),所以基于RPN的方法對(duì)營(yíng)業(yè)執(zhí)照?qǐng)D像中文字的檢測(cè)不具有良好的魯棒性,經(jīng)測(cè)試有很多的文字都未被檢測(cè)到。像營(yíng)業(yè)執(zhí)照中的經(jīng)營(yíng)場(chǎng)所和經(jīng)營(yíng)范圍出現(xiàn)多行文字的情況時(shí),每一行文字沒有被分開檢測(cè),這對(duì)后續(xù)的文字識(shí)別率有很大的影響,因?yàn)镺CR識(shí)別只能識(shí)別單行的文字。沒有用營(yíng)業(yè)執(zhí)照數(shù)據(jù)集訓(xùn)練的CTPN的檢測(cè)率也不理想,部分文字未被檢測(cè)到,同樣在出現(xiàn)多行文字時(shí)沒有將每一行進(jìn)行分開檢測(cè),但檢測(cè)效果比RPN要好。而經(jīng)過訓(xùn)練后的CTPN,檢測(cè)的準(zhǔn)確率大大提高,也解決了出現(xiàn)多行文字時(shí)每一行文字被分開檢測(cè),準(zhǔn)確率達(dá)到項(xiàng)目使用的要求。
CTPN利用文字序列的特點(diǎn)降低了檢測(cè)難度,使其能夠?qū)Ρ尘皬?fù)雜的營(yíng)業(yè)執(zhí)照?qǐng)D像進(jìn)行高精度檢測(cè)。而系統(tǒng)的不足之處是對(duì)拍攝角度、曝光度及像素較低的圖像的檢測(cè)率較低,將會(huì)在后期的研究中對(duì)其進(jìn)行改進(jìn)。目前數(shù)據(jù)集較少,還需要再不斷收集數(shù)據(jù),并且在用labelimg標(biāo)注數(shù)據(jù)時(shí),要避免勾圖的框過大,保證文字被完整框住即可,使用這樣標(biāo)注的數(shù)據(jù)集進(jìn)行訓(xùn)練,會(huì)更有利于提高CTPN模型的文字檢測(cè)率。