0
本文作者: 張夢華 | 2020-03-14 19:31 |
雷鋒網(wǎng)按:本文為矩視智能創(chuàng)始人弭寶瞳投稿。矩視智能成立于 2017 年 10 月,專注于機(jī)器視覺,主要通過 SaaS 云平臺幫助提升工廠機(jī)器視覺開發(fā)、升級效率。弭寶瞳為中國人民大學(xué)計(jì)算機(jī)博士,曾在奇虎 360 任產(chǎn)品經(jīng)理、研發(fā)工程師。
一、背景知識
文本是人類最重要的信息來源之一,自然場景中充滿了形形色色的文字符號。在過去的十幾年中,研究人員一直在探索如何能夠快速準(zhǔn)確的從圖像中讀取文本信息,也就是現(xiàn)在OCR技術(shù)。
工業(yè)場景下的圖像文本識別更為復(fù)雜,它會(huì)出現(xiàn)在許多不同的情景下,如醫(yī)藥包裝上的文字、各類鋼制零部件上的字符、集裝箱表面噴印的字符、商鋪Logo上的個(gè)性化字符等等。
在這類圖像中,文字部分可能會(huì)呈現(xiàn)為彎曲排列、曲面異形、傾斜分布、褶皺變形、殘缺不全等多種形式,與標(biāo)準(zhǔn)字符的特征有較大出入,從而給圖像文字的檢測與識別帶來了困難。
二、傳統(tǒng)算法
傳統(tǒng)OCR技術(shù)通常使用OpenCV算法庫,通過圖像處理和統(tǒng)計(jì)機(jī)器學(xué)習(xí)方法提取圖像中的文字信息,用到的技術(shù)包括二值化、噪聲濾除、連通域分析和Adaboost、SVM等。
按處理方式可以將傳統(tǒng)OCR技術(shù)劃分為圖片預(yù)處理、文字識別、后處理三個(gè)階段,其具體的技術(shù)流程如下圖所示。
針對簡單場景下的圖片,傳統(tǒng)OCR已經(jīng)取得了很好的識別效果。但是從操作流程可以看出,傳統(tǒng)方法是針對特定場景的圖像進(jìn)行建模的,一旦跳出當(dāng)前場景,模型就會(huì)失效。隨著近些年深度學(xué)習(xí)技術(shù)的迅速發(fā)展,基于深度學(xué)習(xí)的OCR技術(shù)也已逐漸成熟,能夠靈活應(yīng)對不同場景。
三、深度學(xué)習(xí)
目前,基于深度學(xué)習(xí)的場景文字識別主要包括兩種方法,第一種是分為文字檢測和文字識別兩個(gè)階段;第二種則是通過端對端的模型一次性完成文字的檢測和識別。
3.1文字檢測
顧名思義,文字檢測就是要檢測到圖片中文字所在的區(qū)域,其核心是區(qū)分文字和背景。常用的文字檢測算法包括以下幾種:
3.1.1 CTPN [1]
CTPN是ECCV 2016提出的一種文字檢測算法,由Faster RCNN改進(jìn)而來,結(jié)合了CNN與LSTM深度網(wǎng)絡(luò),其支持任意尺寸的圖像輸入,并能夠直接在卷積層中定位文本行。
CTPN由檢測小尺度文本框、循環(huán)連接文本框、文本行邊細(xì)化三個(gè)部分組成,具體實(shí)現(xiàn)流程為:
使用VGG16網(wǎng)絡(luò)提取特征,得到conv5_3的特征圖;
在所得特征圖上使用3*3滑動(dòng)窗口進(jìn)行滑動(dòng),得到相應(yīng)的特征向量;
將所得特征向量輸入BLSTM,學(xué)習(xí)序列特征,然后連接一個(gè)全連接FC層;
最后輸出層輸出結(jié)果。
CTPN是基于Anchor的算法,在檢測橫向分布的文字時(shí)能得到較好的效果。此外,BLSTM的加入也進(jìn)一步提高了其檢測能力。
3.1.2 TextBoxes/TextBoxes++ [2,3]
TextBoxes和TextBoxes++模型都來自華中科技大學(xué)的白翔老師團(tuán)隊(duì),其中TextBoxes是改進(jìn)版的SSD,而TextBoxes++則是在前者的基礎(chǔ)上繼續(xù)擴(kuò)展。
TextBoxes共有28層卷積,前13層來自于VGG-16(conv_1到conv4_3),后接9個(gè)額外的卷積層,最后是包含6個(gè)卷積層的多重輸出層,被稱為text-box layers,分別和前面的9個(gè)卷積層相連。由于這些default box都是細(xì)長型的,使得box在水平方向密集在垂直方向上稀疏,從而導(dǎo)致該模型對水平方向上的文字檢測結(jié)果較好。
TextBoxes++保留了TextBoxes的基本框架,只是對卷積層的組成進(jìn)行了略微調(diào)整,同時(shí)調(diào)整了default box的縱橫比和輸出階段的卷積核大小,使得模型能夠檢測任意方向的文字。
3.1.3 EAST [4]
EAST算法是一個(gè)高效且準(zhǔn)確的文字檢測算法,僅包括全卷積網(wǎng)絡(luò)檢測文本行候選框和NMS算法過濾冗余候選框兩個(gè)步驟。
其網(wǎng)絡(luò)結(jié)構(gòu)結(jié)合了HyperNet和U-shape思想,由三部分組成:
特征提?。菏褂肞VANet/VGG16提取四個(gè)級別的特征圖;
特征合并:使用上采樣、串聯(lián)、卷積等操作得到合并的特征圖;
輸出層:輸出單通道的分?jǐn)?shù)特征圖和多通道的幾何特征圖。
EAST算法借助其獨(dú)特的結(jié)構(gòu)和簡練的pipline,可以檢測不同方向、不同尺寸的文字且運(yùn)行速度快,效率高。
3.2文字識別
通過文字檢測對圖片中的文字區(qū)域進(jìn)行定位后,還需要對區(qū)域內(nèi)的文字進(jìn)行識別。針對文字識別部分目前存在幾種架構(gòu),下面將分別展開介紹。
3.2.1 CNN + softmax [5]
此方法主要用于街牌號識別,對每個(gè)字符識別的架構(gòu)為:先使用卷積網(wǎng)絡(luò)提取特征,然后使用N+1個(gè)softmax分類器對每個(gè)字符進(jìn)行分類。具體流程如下圖所示:
使用此方法可以處理不定長的簡單文字序列(如字符和字母),但是對較長的字符序列識別效果不佳。
3.2.2 CNN + RNN + attention [6]
本方法是基于視覺注意力的文字識別算法。主要分為以下三步:
模型首先在輸入圖片上運(yùn)行滑動(dòng)CNN以提取特征;
將所得特征序列輸入到推疊在CNN頂部的LSTM進(jìn)行特征序列的編碼;
使用注意力模型進(jìn)行解碼,并輸出標(biāo)簽序列。
本方法采用的attention模型允許解碼器在每一步的解碼過程中,將編碼器的隱藏狀態(tài)通過加權(quán)平均,計(jì)算可變的上下文向量,因此可以時(shí)刻讀取最相關(guān)的信息,而不必完全依賴于上一時(shí)刻的隱藏狀態(tài)。
3.2.3 CNN + stacked CNN + CTC [7]
上一節(jié)中提到的CNN + RNN + attention方法不可避免的使用到RNN架構(gòu),RNN可以有效的學(xué)習(xí)上下文信息并捕獲長期依賴關(guān)系,但其龐大的遞歸網(wǎng)絡(luò)計(jì)算量和梯度消失/爆炸的問題導(dǎo)致RNN很難訓(xùn)練?;诖?,有研究人員提出使用CNN與CTC結(jié)合的卷積網(wǎng)絡(luò)生成標(biāo)簽序列,沒有任何重復(fù)連接。
這種方法的整個(gè)網(wǎng)絡(luò)架構(gòu)如下圖所示,分為三個(gè)部分:
注意特征編碼器:提取圖片中文字區(qū)域的特征向量,并生成特征序列;
卷積序列建模:將特征序列轉(zhuǎn)換為二維特征圖輸入CNN,獲取序列中的上下文關(guān)系;
CTC:獲得最后的標(biāo)簽序列。
本方法基于CNN算法,相比RNN節(jié)省了內(nèi)存空間,且通過卷積的并行運(yùn)算提高了運(yùn)算速度。
3.3端對端文字識別
使用文字檢測加文字識別兩步法雖然可以實(shí)現(xiàn)場景文字的識別,但融合兩個(gè)步驟的結(jié)果時(shí)仍需使用大量的手工知識,且會(huì)增加時(shí)間的消耗,而端對端文字識別能夠同時(shí)完成檢測和識別任務(wù),極大的提高了文字識別的實(shí)時(shí)性。
3.3.1 STN-ORC [8]
STN-OCR使用單個(gè)深度神經(jīng)網(wǎng)絡(luò),以半監(jiān)督學(xué)習(xí)方式從自然圖像中檢測和識別文本。網(wǎng)絡(luò)實(shí)現(xiàn)流程如下圖所示,總體分為兩個(gè)部分:
定位網(wǎng)絡(luò):針對輸入圖像預(yù)測N個(gè)變換矩陣,相應(yīng)的輸出N個(gè)文本區(qū)域,最后借助雙線性差值提取相應(yīng)區(qū)域;
識別網(wǎng)絡(luò):使用N個(gè)提取的文本圖像進(jìn)行文本識別。
本方法的訓(xùn)練集不需要bbox標(biāo)注,使用友好性較高;但目前此模型還不能完全檢測出圖像中任意位置的文本,需要在后期繼續(xù)調(diào)整。
3.3.2 FOTS [9]
FOTS是一個(gè)快速的端對端的文字檢測與識別框架,通過共享訓(xùn)練特征、互補(bǔ)監(jiān)督的方法減少了特征提取所需的時(shí)間,從而加快了整體的速度。其整體結(jié)構(gòu)如圖所示:
卷積共享:從輸入圖象中提取特征,并將底層和高層的特征進(jìn)行融合;
文本檢測:通過轉(zhuǎn)化共享特征,輸出每像素的文本預(yù)測;
ROIRotate:將有角度的文本塊,通過仿射變換轉(zhuǎn)化為正常的軸對齊的本文塊;
文本識別:使用ROIRotate轉(zhuǎn)換的區(qū)域特征來得到文本標(biāo)簽。
FOTS是一個(gè)將檢測和識別集成化的框架,具有速度快、精度高、支持多角度等優(yōu)點(diǎn),減少了其他模型帶來的文本遺漏、誤識別等問題。
四、總結(jié)
本文參考前沿文獻(xiàn),總結(jié)了當(dāng)前主流的OCR場景檢測技術(shù)。相對來說,使用基于深度學(xué)習(xí)的端對端檢測模型可以實(shí)現(xiàn)快速、準(zhǔn)確的文字識別,且可以靈活的應(yīng)用于傾斜、彎曲、褶皺變形等復(fù)雜場景。
通過對現(xiàn)有算法模型的細(xì)節(jié)調(diào)整,將成熟的文本識別模型集成化,即可實(shí)現(xiàn)工業(yè)場景中的OCR識別。
參考文獻(xiàn):
[1] Tian Z et al. Detecting text in natural image with connectionist text proposal network[C]//European conference on computer vision. Springer, Cham, 2016.
[2] Liao M et al. Textboxes: A fast text detector with a single deep neural network [C]//Thirty-First AAAI Conference on Artificial Intelligence. 2017.
[3] Liao M et al. Textboxes++: A single-shot oriented scene text detector[J]. IEEE transactions on image processing, 2018.
[4] Zhou X et al. EAST: an efficient and accurate scene text detector[C]// Proceedings of the IEEE conference on Computer Vision and Pattern Recognition. 2017.
[5] Goodfellow I J et al. Multi-digit number recognition from street view imagery using deep convolutional neural networks[J]. 2013.
[6] Deng Y et al. Image-to-markup generation with coarse-to-fine attention[C]// Proceedings of the 34th International Conference on Machine Learning-Volume 70. JMLR. org, 2017.
[7] Gao Y et al. Reading scene text with fully convolutional sequence modeling[J]. Neurocomputing, 2019.
[8] Bartz C et al. STN-OCR: A single neural network for text detection and text recognition[J]. arXiv preprint arXiv:1707.08831, 2017.
[9] Liu X et al. Fots: Fast oriented text spotting with a unified network [C]// Proceedings of the IEEE conference on computer vision and pattern recognition. 2018.
雷鋒網(wǎng).雷鋒網(wǎng).
雷峰網(wǎng)特約稿件,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。