一文全覽,深度學習時代下,複雜場景下的 OCR 如何實現?

一文全覽,深度學習時代下,複雜場景下的 OCR 如何實現?

Source: kurzweilai.net

作者 | 北京矩視智能科技有限公司

文本是人類最重要的信息來源之一,自然場景中充滿了形形色色的文字符號。在過去的十幾年中,研究人員一直在探索如何能夠快速準確的從圖像中讀取文本信息,也就是現在OCR技術。

工業場景下的圖像文本識別更為複雜,它會出現在許多不同的情景下,如醫藥包裝上的文字、各類鋼製零部件上的字符、集裝箱表面噴印的字符、商鋪Logo上的個性化字符等等。

一文全览,深度学习时代下,复杂场景下的 OCR 如何实现?

在這類圖像中,文字部分可能會呈現為彎曲排列、曲面異形、傾斜分佈、褶皺變形、殘缺不全等多種形式,與標準字符的特徵有較大出入,從而給圖像文字的檢測與識別帶來了困難。

傳統算法

傳統OCR技術通常使用OpenCV算法庫,通過圖像處理和統計機器學習方法提取圖像中的文字信息,用到的技術包括二值化、噪聲濾除、連通域分析和Adaboost、SVM等。

按處理方式可以將傳統OCR技術劃分為圖片預處理、文字識別、後處理三個階段,其具體的技術流程如下表所示。

一文全览,深度学习时代下,复杂场景下的 OCR 如何实现?

針對簡單場景下的圖片,傳統OCR已經取得了很好的識別效果。但是從操作流程可以看出,傳統方法是針對特定場景的圖像進行建模的,一旦跳出當前場景,模型就會失效。隨著近些年深度學習技術的迅速發展,基於深度學習的OCR技術也已逐漸成熟,能夠靈活應對不同場景。

深度學習

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

1、文字檢測

顧名思義,文字檢測就是要檢測到圖片中文字所在的區域,其核心是區分文字和背景。常用的文字檢測算法包括以下幾種:

1)CTPN [1]

CTPN是ECCV 2016提出的一種文字檢測算法,由Faster RCNN改進而來,結合了CNN與LSTM深度網絡,其支持任意尺寸的圖像輸入,並能夠直接在卷積層中定位文本行。

CTPN由檢測小尺度文本框、循環連接文本框、文本行邊細化三個部分組成,具體實現流程為:

  • 使用VGG16網絡提取特徵,得到conv5­_3的特徵圖;

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

  • 將所得特徵向量輸入BLSTM,學習序列特徵,然後連接一個全連接FC層;

  • 最後輸出層輸出結果。

一文全览,深度学习时代下,复杂场景下的 OCR 如何实现?

CTPN是基於Anchor的算法,在檢測橫向分佈的文字時能得到較好的效果。此外,BLSTM的加入也進一步提高了其檢測能力。

2)TextBoxes/TextBoxes++ [2,3]

TextBoxes和TextBoxes++模型都來自華中科技大學的白翔老師團隊,其中TextBoxes是改進版的SSD,而TextBoxes++則是在前者的基礎上繼續擴展。

一文全览,深度学习时代下,复杂场景下的 OCR 如何实现?

TextBoxes共有28層卷積,前13層來自於VGG-16(conv_1到conv4_3),後接9個額外的卷積層,最後是包含6個卷積層的多重輸出層,被稱為text-box layers,分別和前面的9個卷積層相連。由於這些default box都是細長型的,使得box在水平方向密集在垂直方向上稀疏,從而導致該模型對水平方向上的文字檢測結果較好。

一文全览,深度学习时代下,复杂场景下的 OCR 如何实现?

TextBoxes++保留了TextBoxes的基本框架,只是對卷積層的組成進行了略微調整,同時調整了default box的縱橫比和輸出階段的卷積核大小,使得模型能夠檢測任意方向的文字。

3)EAST [4]

EAST算法是一個高效且準確的文字檢測算法,僅包括全卷積網絡檢測文本行候選框和NMS算法過濾冗餘候選框兩個步驟。

其網絡結構結合了HyperNet和U-shape思想,由三部分組成:

  • 特徵提取:使用PVANet/VGG16提取四個級別的特徵圖;

  • 特徵合併:使用上採樣、串聯、卷積等操作得到合併的特徵圖;

  • 輸出層:輸出單通道的分數特徵圖和多通道的幾何特徵圖。

一文全览,深度学习时代下,复杂场景下的 OCR 如何实现?

EAST算法藉助其獨特的結構和簡練的pipline,可以檢測不同方向、不同尺寸的文字且運行速度快,效率高。

2、文字識別

通過文字檢測對圖片中的文字區域進行定位後,還需要對區域內的文字進行識別。針對文字識別部分目前存在幾種架構,下面將分別展開介紹。

1)CNN + softmax [5]

此方法主要用於街牌號識別,對每個字符識別的架構為:先使用卷積網絡提取特徵,然後使用N+1個softmax分類器對每個字符進行分類。具體流程如下圖所示:

一文全览,深度学习时代下,复杂场景下的 OCR 如何实现?

使用此方法可以處理不定長的簡單文字序列(如字符和字母),但是對較長的字符序列識別效果不佳。

2)CNN + RNN + attention [6]

本方法是基於視覺注意力的文字識別算法。主要分為以下三步:

  • 模型首先在輸入圖片上運行滑動CNN以提取特徵;

  • 將所得特徵序列輸入到推疊在CNN頂部的LSTM進行特徵序列的編碼;

  • 使用注意力模型進行解碼,並輸出標籤序列。

一文全览,深度学习时代下,复杂场景下的 OCR 如何实现?

本方法採用的attention模型允許解碼器在每一步的解碼過程中,將編碼器的隱藏狀態通過加權平均,計算可變的上下文向量,因此可以時刻讀取最相關的信息,而不必完全依賴於上一時刻的隱藏狀態。

3)CNN + stacked CNN + CTC [7]

上一節中提到的CNN + RNN + attention方法不可避免的使用到RNN架構,RNN可以有效的學習上下文信息並捕獲長期依賴關係,但其龐大的遞歸網絡計算量和梯度消失/爆炸的問題導致RNN很難訓練。基於此,有研究人員提出使用CNN與CTC結合的卷積網絡生成標籤序列,沒有任何重複連接。

這種方法的整個網絡架構如下圖所示,分為三個部分:

  • 注意特徵編碼器:提取圖片中文字區域的特徵向量,並生成特徵序列;

  • 卷積序列建模:將特徵序列轉換為二維特徵圖輸入CNN,獲取序列中的上下文關係;

  • CTC:獲得最後的標籤序列。

一文全览,深度学习时代下,复杂场景下的 OCR 如何实现?

本方法基於CNN算法,相比RNN節省了內存空間,且通過卷積的並行運算提高了運算速度。

3、端對端文字識別

使用文字檢測加文字識別兩步法雖然可以實現場景文字的識別,但融合兩個步驟的結果時仍需使用大量的手工知識,且會增加時間的消耗,而端對端文字識別能夠同時完成檢測和識別任務,極大的提高了文字識別的實時性。

1)STN-ORC [8]

STN-OCR使用單個深度神經網絡,以半監督學習方式從自然圖像中檢測和識別文本。網絡實現流程如下圖所示,總體分為兩個部分:

  • 定位網絡:針對輸入圖像預測N個變換矩陣,相應的輸出N個文本區域,最後藉助雙線性差值提取相應區域;

  • 識別網絡:使用N個提取的文本圖像進行文本識別。

一文全览,深度学习时代下,复杂场景下的 OCR 如何实现?

本方法的訓練集不需要bbox標註,使用友好性較高;但目前此模型還不能完全檢測出圖像中任意位置的文本,需要在後期繼續調整。

2)FOTS [9]

FOTS是一個快速的端對端的文字檢測與識別框架,通過共享訓練特徵、互補監督的方法減少了特徵提取所需的時間,從而加快了整體的速度。其整體結構如圖所示:

一文全览,深度学习时代下,复杂场景下的 OCR 如何实现?
  • 卷積共享:從輸入圖象中提取特徵,並將底層和高層的特徵進行融合;

  • 文本檢測:通過轉化共享特徵,輸出每像素的文本預測;

  • ROIRotate:將有角度的文本塊,通過仿射變換轉化為正常的軸對齊的本文塊;

  • 文本識別:使用ROIRotate轉換的區域特徵來得到文本標籤。

FOTS是一個將檢測和識別集成化的框架,具有速度快、精度高、支持多角度等優點,減少了其他模型帶來的文本遺漏、誤識別等問題。

總結

本文參考前沿文獻,總結了當前主流的OCR場景檢測技術。相對來說,使用基於深度學習的端對端檢測模型可以實現快速、準確的文字識別,且可以靈活的應用於傾斜、彎曲、褶皺變形等複雜場景。

通過對現有算法模型的細節調整,將成熟的文本識別模型集成化,即可實現工業場景中的OCR識別。

參考文獻:

[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.

一文全览,深度学习时代下,复杂场景下的 OCR 如何实现?


分享到:


相關文章: