天天看點

複雜場景下的OCR如何實作--深度學習算法綜述

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

一、背景知識

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

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

複雜場景下的OCR如何實作--深度學習算法綜述

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

二、傳統算法

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

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

複雜場景下的OCR如何實作--深度學習算法綜述

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

三、深度學習

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

3.1文字檢測

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

3.1.1 CTPN [1]

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

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

  • 使用VGG16網絡提取特征,得到conv5_3的特征圖;
  • 在所得特征圖上使用3*3滑動視窗進行滑動,得到相應的特征向量;
  • 将所得特征向量輸入BLSTM,學習序列特征,然後連接配接一個全連接配接FC層;
  • 最後輸出層輸出結果。
    複雜場景下的OCR如何實作--深度學習算法綜述

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

    3.1.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.1.3 EAST [4]

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

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

  • 特征提取:使用PVANet/VGG16提取四個級别的特征圖;
  • 特征合并:使用上采樣、串聯、卷積等操作得到合并的特征圖;
  • 輸出層:輸出單通道的分數特征圖和多通道的幾何特征圖。
    複雜場景下的OCR如何實作--深度學習算法綜述

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

    3.2文字識别

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

    3.2.1 CNN + softmax [5]

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

    複雜場景下的OCR如何實作--深度學習算法綜述

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

    3.2.2 CNN + RNN + attention [6]

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

  • 模型首先在輸入圖檔上運作滑動CNN以提取特征;
  • 将所得特征序列輸入到推疊在CNN頂部的LSTM進行特征序列的編碼;
  • 使用注意力模型進行解碼,并輸出标簽序列。
    複雜場景下的OCR如何實作--深度學習算法綜述

    本方法采用的attention模型允許解碼器在每一步的解碼過程中,将編碼器的隐藏狀态通過權重平均,計算可變的上下文向量,是以可以時刻讀取最相關的資訊,而不必完全依賴于上一時刻的隐藏狀态。

    3.2.3 CNN + stacked CNN + CTC [7]

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

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

  • 注意特征編碼器:提取圖檔中文字區域的特征向量,并生成特征序列;
  • 卷積序列模組化:将特征序列轉換為二維特征圖輸入CNN,擷取序列中的上下文關系;
  • CTC:獲得最後的标簽序列。
    複雜場景下的OCR如何實作--深度學習算法綜述

    本方法基于CNN算法,相比RNN節省了記憶體空間,且通過卷積的并行運算提高了運算速度。

    3.3 端對端文字識别

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

    3.3.1 STN-ORC [8]

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

  • 定位網絡:針對輸入圖像預測N個變換矩陣,相應的輸出N個文本區域,最後借助雙線性內插補點提取相應區域;
  • 識别網絡:使用N個提取的文本圖像進行文本識别。
    複雜場景下的OCR如何實作--深度學習算法綜述

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

    3.3.2 FOTS [9]

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

    複雜場景下的OCR如何實作--深度學習算法綜述
  • 卷積共享:從輸入圖象中提取特征,并将底層和高層的特征進行融合;
  • 文本檢測:通過轉化共享特征,輸出每像素的文本預測;
  • ROIRotate:将有角度的文本塊,通過仿射變換轉化為正常的軸對齊的本文塊;
  • 文本識别:使用ROIRotate轉換的區域特征來得到文本标簽。

    FOTS是一個将檢測和識别內建化的架構,具有速度快、精度高、支援多角度等優點,減少了其他模型帶來的文本遺漏、誤識别等問題。

四、總結

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

通過對現有算法模型的細節調整,将成熟的文本識别模型內建化,即可實作工業場景中的OCR識别。

五、公司介紹

北京矩視智能科技有限公司(www.nb-ai.com)是一家工業AI視覺雲平台提供商,緻力于将人工智能應用于工業視覺領域,線上提供字元識别、缺陷檢測、目标定位等功能,可覆寫上千種工業細分場景,引領工業視覺領域的通用人工智能。創始團隊來自國内外頂尖大學,已落地近百個工業視覺場景,獲融資近千萬元。

參考文獻:

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

繼續閱讀