Fast AI for OCR—深度學習背景下的文字識別實踐應用

作者:滴普科技-算法工程師-溫志平

圖片1.png

Fast Data是滴普針對圖像和數據打造的智能算法產品,分為圖像識別和數據AI兩大模塊,圖像識別部分主要基於深度學習和模式識別算法實現目標檢測、分類、識別,機器視覺模塊應用於工業缺陷檢測、安防識別,其中OCR字符識別是圖像識別模塊的重要組成部分,接下來我們將從傳統OCR的典型算法、應用領域展開分析,再結合滴普的實踐,對傳統OCR算法改進作深入剖析。

 

1.OCR技術簡述

光學字符識別(Optical Character Recognition,OCR)是從圖像中識別出文字的技術,利用機器將圖像中手寫或印刷文本轉換為計算機可以直接處理的格式。文字識別是計算機視覺研究領域的分支之一,處於研究較深入的階段,當前已取得不少商業應用。前有百度,阿里,騰訊等OCR雲服務平台,後有漢王,合合信息,ABBYY,文通等OCR定製化系統集成提供商。OCR 技術能夠處理多種不同場景的圖像,包括拍攝或掃描得到的各種卡證、紙質文檔圖像,也包括含有文字的自然場景圖像和疊加了字幕文本的視頻圖像等,被廣泛運用於工業、商業和證券金融等領域。

2.OCR技術路線

在深度學習沒有全面推廣之前,大部分OCR識別都是基於傳統機器視覺方法進行檢測識別。在背景單一、數據場景簡單的情況下,傳統OCR一般都能達到好的效果,但在一些場景複雜、干擾多的情況下,識別效果不好,深度學習OCR此時體現出巨大的優勢。2016年,Google DeepeMind發佈以深度學習技術為基礎的AlphaGo機械人[1],以4:1的比分戰勝了國際頂尖圍棋高手李世石,深度學習的熱度一時無兩。基於深度學習技術的OCR識別框架以另外一種新的思路迅速突破了原有的技術瓶頸,並已在工業界得到廣泛應用。

2.1傳統識別技術

傳統OCR基於圖像處理(二值化、連通域分析、投影分析等)和統計機器學習(Adaboot、SVM),提取圖片上的文本內容。按處理方式劃分為四個階段:預處理、文字定位、文字識別和後處理。

圖片2.png

Fig 1. 基於傳統機器視覺OCR技術實現流程

OCR技術在複雜場景下面臨這以下挑戰。

· 成像複雜:噪聲、模糊、光線變化、形變;

· 文字複雜:字體、字號、色彩、磨損、筆畫寬度任意、方向任意;

· 場景複雜:版面缺失、背景干擾;

· 特徵單一:人工指定特徵算子,能夠表徵的信息有限,無法提取深層語義信息。

2.2 深度學習技術

基於深度學習的OCR技術主要包括兩種方法,第一種是分為文字檢測和文字識別兩個階段;第二種則是通過端對端的模型一次性完成文字的檢測和識別。

· 檢測算法:CTPN、TextBoxes、SegLink、EAST等;

· 識別算法:CRNN、CRNN+CTC、Seq2Seq-Attention等;

· End-to-End算法:FOTS、Mask TextSpotter等。

 

基於深度學習的方法有以下幾種優點:

· 自動:自動的特徵表示學習可以使研究人員擺脫憑經驗設計、 手工製作;

· 效率:性能通常比傳統算法更好;

· 泛化:更容易推廣到類似場景。

圖片3.png

Fig 2. 基於深度學習OCR技術實現流程

3.深度學習文本檢測

文本檢測是物體檢測的一個特例,把文本當成單類目標,即可借鑒通用的目標檢測模型完成文字的檢測任務。但文本檢測比普通物體檢測存在更多特點:

· 相比於常規物體檢測,文字行長度、長寬比例變化範圍很大;

· 文本行有方向性,Anchor-Based的檢測通常是水平和垂直方向的矩形;

· 有些藝術字體形狀變化非常大,很多是彎曲的,並且字體類型豐富,語言種類豐富;

· 由於豐富的背景圖像干擾,手工設計特徵在自然場景文本識別任務中不夠魯棒。

常見的文字檢測方法主要有基於候選框方法、基於分割方法、混合方法和其他方法幾種類型。

圖片4.png

Fig 3. 深度學習OCR文字檢測方法一覽

· 基於回歸的方法分為box回歸和像素值回歸。a. 採用box回歸的方法主要有CTPN、Textbox系列和EAST等,這類算法對規則形狀文本檢測效果較好,但無法準確檢測不規則形狀文本。 b. 像素值回歸的方法主要有CRAFT和SA-Text,這類算法能夠檢測彎曲文本且對小文本效果優秀但是實時性能不夠。

· 基於分割的算法,如PSENet,這類算法不受文本形狀的限制,對各種形狀的文本都能取得較好的效果,但是往往後處理比較複雜,導致耗時嚴重。目前也有一些算法專門針對這個問題進行改進,如DB,將二值化進行近似,使其可導,融入訓練,從而獲取更準確的邊界,大大降低了後處理的耗時。

3.1 CTPN算法

阿德萊德大學博士生Tian Zhi在ECCV 2016提出一種文字檢測算法——CTPN[3],其由經典的目標檢測模型Faster RCNN改進而來,結合了CNN與LSTM深度網絡,其支持任意尺寸的圖像輸入,並能夠直接在卷積層中定位文本行。CTPN由檢測小尺度文本框、循環連接文本框、文本行邊細化三個部分組成。

· 使用VGG16網絡提取特徵,得到conv5_3的特徵作為Feature Map;

· 在所得特徵圖上使用3*3滑動窗口進行滑動,得到相應的特徵向量;

· 將所得特徵向量輸入雙向長短記憶網絡BLSTM,學習序列特徵,然後連接一個全連接FC層;

· 然後經過類似Faster R-CNN的RPN網絡,獲得Text Proposals;

· 獲得密集的小text proposals後,經過NMS方法過濾多餘的文本框;

· 最後通過文本線構造算法合成相鄰文本,形成文本行。

圖片5.png

Fig 4. CTPN網絡實現

 

CNN學習的是感受野內的空間信息,LSTM學習的是序列特徵。對於文本序列檢測,顯然既需要CNN抽象空間特徵,也需要序列特徵(文字是連續的)。BLSTM實際上就是將2個方向相反的LSTM連起來,相比一般單向LSTM可學習到更強的上下文信息,避免單向LSTM的長鏈遺忘問題,更完整地提取出序列特徵,改善文本行的連貫性。CTPN通過CNN和BLSTM學到一組”空間+序列”特徵後,在”FC”卷積層後接入RPN網絡[4]。這裡的RPN與Faster R-CNN類似,分為兩個分支:

· 左邊分支用於Bounding Box Regression。由於FC Feature Map每個點配備了10個Anchor,同時只回歸中心y坐標與高度2個值,所以Rpn_bbox_pred有20個Channels;

· 右邊分支用於Softmax分類Anchor。

圖片6.png

Fig 5. CTPN網絡RPN細節

 

文本長度的劇烈變化是文本檢測的挑戰之一,作者認為文本在長度的變化比高度的變化劇烈得多,文本邊界開始與結束的地方難以和Faster-Rcnn一樣去用Anchor匹配回歸,所以作者提出一種Vertical Anchor的方法,即只去預測文本的豎直方向上的位置,不去預測水平方向的位置,水平位置的確定只需要檢測一個一個小的固定寬度的文本段,將他們對應的高度預測準確,最後再將他們連接在一起,就得到了文本行。總結CTPN有如下優點:

· 對水平文本效果很好,比較魯棒,通過改變後處理的錨框合併方式也可處理10度以內的傾斜文本;

· 對長文本尤其是字距過大的長文本效果好。

CTPN是一個有效的文字檢測方法,但也存在一些問題:

· 因為Anchor設定的原因,CTPN只能檢測橫向分佈的文字,小幅改進加入水平Anchor即可檢測豎直文字。但是由於框架限定,對不規則傾斜文字檢測效果一般;

· 密集型文本可能存在水平粘連的情形;

· CTPN加入了雙向LSTM學習文字的序列特徵,有利於文字檢測。但是引入LSTM後,在訓練時很容易梯度爆炸,需要小心處理。

3.2 DB算法

基於分割的文本檢測中,把分割方法產生的概率圖轉化為邊界框和文字區域,其中會包含二值化的後處理過程。二值化的過程非常關鍵,常規二值化操作通過設定固定的閾值,然而固定的閾值難以適應複雜多變的檢測場景。DBNet[7]提出了一種可微分的二值化操作,通過將二值化操作插入到分割網絡中進行組合優化,對每一個像素點進行自適應二值化,二值化閾值由網絡學習得到,徹底將二值化這一步驟加入到網絡里一起訓練,這樣最終的輸出圖對於閾值就會具有非常強的魯棒性,在簡化了後處理的同時提高了文本檢測的效果。具體流程如下圖紅色箭頭所示。

圖片7.png

Fig 6. DBNet網絡層結構信息

 

首先,輸入圖片經過特徵金字塔backbone,接着,金字塔特徵上採樣到輸出與原圖相同尺寸的特徵圖F,然後,特徵圖F用來同時預測概率圖P和閾值圖T,由F和T計算後近似得到二值圖B。在訓練階段,對概率圖、閾值圖和近似二值圖進行監督,其中概率圖和近似二值圖共用一個監督。在推理過程中,通過一個box公式化模塊,可以很容易地從近似二值圖或概率圖中得到文本包圍框。

DB算法的主要優勢:

· 在五個基準數據集上有良好的表現,其中包括水平、多個方向、彎曲的文本;

· 比之前的方法要快很多,因為DB可以提供健壯的二值化圖,從而大大簡化了後處理過程;

· 使用輕量級的backbone(ResNet18)也有很好的表現;

· DB模塊在推理過程中可以去除,因此不佔用額外的內存和時間的消耗。

缺點主要有:

· 無法解決「text in text」的情況,即文本中心重疊的情況,這也是基於分割原理的文字檢測模型的通病了。

4.基於深度學習的文本識別

通過文字檢測對圖片中的文字區域進行定位後,即可對區域內的文字進行識別。與傳統OCR的單字符切分後單獨識別不同,基於深度學習方法的文字識別技術一般在文本行維度進行一次識別,避免字符切分操作的不確定性。

CRNN識別算法

CRNN( Convolutional Recurrent Neural Network)[8],主要用於端到端地對不定長的文本序列進行識別,不用先對單個文字進行切割,而是將文本識別轉化為時序依賴的序列學習問題,是一種基於圖像的序列識別方法。整個CRNN網絡結構包含三部分,從下到上依次為:

· CNN(卷積層):使用深度CNN,對輸入圖像提取特徵,得到特徵圖;

· RNN(循環層):使用雙向RNN(BLSTM)對特徵序列進行預測,對序列中的每個特徵向量進行學習,並輸出預測標籤(真實值)分佈;

· CTC loss(轉錄層):使用 CTC 損失,把從循環層獲取的一系列標籤分佈轉換成最終的標籤序列。

 

5.OCR實踐

滴普科技在產業實踐過程中,主要使用DB作為文字檢測和CRNN作為文字識別模型,打造了Fast AI系列產品。以某項目中車牌識別任務為例,闡述基於滴普Fast AI產品中的OCR模塊在實際項目中應用。

5.1數據準備

項目中採用中國科學技術大學開源數據集CCPD(200K)+實際場景數據集(10K)+人工合成車牌數據集(100K)相結合。由於CCPD和實際場景地域固定,導致採集到的車牌屬地比較單一,車牌中文字符的分佈差異較大,所有加入了人工合成數據集[13,14]。人工標註了車牌邊框四點位置(四邊形,不一定為矩形)及車牌字符信息。

圖片8.png

Fig 7. CCPD Base車牌數據集

圖片9.png

Fig 8. 實際場景車牌數據集

圖片10.png

Fig 9 車牌標註數據

圖片11.png

Fig 10車牌區域圖像


5.2模型訓練

車牌檢測:採用DB模型(MobileNetV3為BackBone)對車牌區域進行檢測,對原始圖像填充縮放至640*640尺寸,以16Batch Size,訓練1000Epoch,Adam為優化器,初始學習率0.001,採用餘弦退火學習率調整策略,在0.5@mAP下取得0.96。

車牌識別:採用CRNN模型(ResNet為BackBone,CTC解碼)對車牌區域內字符信息進行識別,根據車牌原始寬高比例(440*140),將標註數據內的車牌區域截取並縮放至(100*32)尺寸,並收集67個車牌字符作為字典文件。以64Batch Size,訓練1000Epoch,Adam為優化器,初始學習率0.0005,採用餘弦退火學習率調整策略,取得0.91的準確率。

5.3系統集成

將車牌檢測和車牌識別模型進行串聯即可實現車牌識別系統的集成,可實現一副圖像內的多張車牌識別任務。在實際場景中可實現94% 的綜合準確率,在1080TI GPU硬件環境下,720P的圖像可實現20FPS的識別速度,滿足實際項目的指標需求。

Fig 11 車牌識別結果

6. OCR總結與展望

基於深度學習的OCR發展已經取得了長足的發展,不管是通用意義的OCR,還是自然場景下STR,深度學習對不同尺度、不同方向和不同形狀的文字均可實現較好的檢測和識別。但對端到端OCR任務的研究仍有很長的路要走,對OCR推理實時性的要求也逐漸提高。

 

了解更多產品詳情請登錄://www.deepexi.com/product-new/6

 

 

參考文獻

[1] //deepmind.com/research/case-studies/alphago-the-story-so-far

[2] //github.com/hwalsuklee/awesome-deep-text-detection-recognition

[3] Z. Tian, W. Huang, T. He, P. He and Y. Qiao: Detecting Text in Natural Image with Connectionist Text Proposal Network, ECCV, 2016.

[4] //zhuanlan.zhihu.com/p/137540923

[5] Zhou X, Yao C, Wen H, et al. East: an efficient and accurate scene text detector[C]//Proceedings of the IEEE conference on Computer Vision and Pattern Recognition. 2017: 5551-5560.

[6] //www.cnblogs.com/skyfsm/p/9776611.html

[7] Liao M, Wan Z, Yao C, et al. Real-time Scene Text Detection with Differentiable Binarization[J].

[8] //zhuanlan.zhihu.com/p/71506131

[9] //xiaodu.io/ctc-explained/

[10] Graves A, Fernández S, Gomez F, et al. Connectionist temporal classification: labelling unsegmented sequence data with recurrent neural networks[C]//Proceedings of the 23rd international conference on Machine learning. 2006: 369-376.

[11] //blog.csdn.net/sinat_30822007/article/details/89294068

[12] Lyu P, Liao M, Yao C, et al. Mask textspotter: An end-to-end trainable neural network for spotting text with arbitrary shapes[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2018: 67-83.

[13] //github.com/ufownl/fake_chs_lp

[14] //github.com/zhangjianying/A-Simple-Chinese-License-Plate-Generator-and-Recognition-Framework

Tags: