文字識別是AI的一項重要應用,例如將包裝盒上的文字識別出來、將產品說明書上的文字識別出來、將大街上廣告牌的文字識別出來等等,在現實生活中能給我們帶來很大的便利,有着非常廣泛的應用。
一個簡單的文字識別流程如下:
Step 1. 通過手機、攝像機等設備採集含有待識別字符的圖像,作爲輸入;
Step 2. 對圖像進行尺寸縮放、明暗調整、去噪等預處理操作;
Step 3. 將圖像中的單個字符、或者是連續幾個字符所在的區域檢測出來;
Step 4. 根據文本檢測結果從圖像中將文本所在區域分割出來,然後導入到模型中進行文本識別,進而得到圖像中的字符信息。
其中,這個流程有兩個環節非常關鍵,一個是“文本檢測”、另一個是“文本識別”,本文將介紹“文本檢測”的經典模型CTPN,而“文本識別”模型將在後面另外介紹,敬請關注。
對於印刷字體的檢測,由於排版很規範,現在的檢測、識別技術已經很成熟了,我們日常使用的微信、QQ裏面就有提取圖片中文字的功能。而對於自然場景下的文字檢測,由於光照環境以及文字存在着很多樣的形式,要將文字檢測出來則有比較大的難度,例如要檢測出大街上廣告牌中的文字,如下圖:
本文主要介紹文本檢測的經典模型:CTPN,它不僅可以用於檢測自然場景下的文字,印刷文字的檢測自然也不在話下。
1、文字分佈的特點
在瞭解文字檢測之前,先來看一下文字分佈的特點。無論是印刷文字,還是自然場景下的文字,一般文字是水平排列,連續字符的長度可變,但高度基本相同,如下圖:
這也是CTPN的基本思路,既然寬度是可變、不確定的,那麼就按照固定的高度進行檢測,看看圖像中有哪些區域是連續出現了一片同樣高度特徵的區域,並且其邊緣符合文字的特點,就將其圈出來。
2、什麼是CTPN
CTPN,全稱是“Detecting Text in Natural Image with Connectionist Text Proposal Network”(基於連接預選框網絡的文本檢測)。該模型主要是對圖片中的文本行進行準確定位,其基本做法是直接在卷積獲得的feature map(特徵圖)上生成的一系列適當尺寸的文本proposals(預選框)進行文本行的檢測。下圖可以很好地看出該模型的檢測思路(注意:CTPN模型實際上是在feature map上生成proposals,而不是在原圖像上生成,以下只是個示意圖):
3、CTPN技術原理
CTPN模型利用了RNN和CNN的無縫結合來提高檢測精度。其中,CNN用來提取深度特徵,RNN用於序列的特徵識別,二者無縫結合,在檢測上性能更好。其中:
(1)CNN(採用VGG16)
CTPN模型通過利用VGG16卷積輸出的 feature map(特徵圖)生成一系列proposals(預選框)進行檢測。VGG是卷積神經網絡的經典模型,具體原理可詳見本公衆號之前發佈的文章:白話卷積神經網絡(VGGNet)
(2)RNN
由於文字信息是由“字符、字符的一部分、多字符”組成的一個序列,所以文字這個檢測目標並不是獨立、封閉的,而是有前後關聯的,因此在CTPN中採用了RNN(Recurrent Neural Networks,循環神經網絡)來利用前後文的信息進行文本位置的預測。關於RNN的介紹詳見本公衆號之前發佈的文章:白話循環神經網絡(RNN)
CTPN模型的網絡結構如下圖所示:
整個過程主要分爲六個步驟:
第一步:輸入3×600(h)×900(w)的圖像,使用VGG16進行特徵的提取,得到conv5_3(VGG第5個block的第三個卷積層)的特徵作爲feature map,大小爲512×38×57;
第二步:在這個feature map上做滑窗,窗口大小是3×3,即512×38×57變爲4608×38×57(512按3×3卷積展開);
第三步:將每一行的所有窗口對應的特徵輸入到RNN(BLSTM,雙向LSTM)中,每個LSTM層是128個隱層,即57×38×4608變爲57×38×128,Reverse-LSTM同樣得到的是57×38×128,合併後最終得到結果爲 256×38×57;
第四步:將RNN的結果輸入到FC層(全連接層),FC層是一個256×512的矩陣參數,得到512×38×57的結果;
第五步:FC層特徵輸入到三個分類或者回歸層中。第一個2k vertical coordinate和第三個k side-refinement是用來回歸k個anchor的位置信息(可以簡單理解爲是要確定字符位置的小的矩形框,上面示意圖中的紅色小長框,寬度固定,默認爲16),第二個2k scores 表示的是k個anchor的類別信息(是字符或不是字符);
第六步:使用文本構造的算法,將得到的細長的矩形框,將其合併成文本的序列框。其中文本構造算法的主要的思路爲:每兩個相近的候選區組成一個pair,合併不同的pair直到無法再合併爲止。
以上就是CTPN主要原理的介紹,使用CTPN模型對自然場景下的文字進行檢測,結果如下圖所示:
4、小結
綜上,CTPN模型最大的亮點是引入RNN來進行檢測。先用CNN得到深度特徵,然後用固定寬度的anchor(固定寬度的,細長的矩形框)來檢測文本區域,將同一行anchor對應的特徵串成序列,然後輸入到RNN當中,再用全連接層來做分類或迴歸,最後將小的候選框進行合併,從而得到了文本所在的完整區域。這種把RNN和CNN無縫結合的方法有效地提高了檢測精度。
牆裂建議
2016年,Zhi Tian 等人發表了關於CTPN的經典論文《Detecting Text in Natural Image with Connectionist Text Proposal Network》,在論文中詳細介紹了CTPN的思想和技術原理,建議閱讀該論文以進一步瞭解該模型。
關注本人公衆號“大數據與人工智能Lab”(BigdataAILab),然後回覆“論文”關鍵字可在線閱讀經典論文的內容。
推薦相關閱讀
- 【AI實戰】快速掌握TensorFlow(一):基本操作
- 【AI實戰】快速掌握TensorFlow(二):計算圖、會話
- 【AI實戰】快速掌握TensorFlow(三):激勵函數
- 【AI實戰】快速掌握TensorFlow(四):損失函數
- 【AI實戰】搭建基礎環境
- 【AI實戰】訓練第一個模型
- 【AI實戰】編寫人臉識別程序
- 【AI實戰】動手訓練目標檢測模型(SSD篇)
- 【AI實戰】動手訓練目標檢測模型(YOLO篇)
- 【精華整理】CNN進化史
- 大話文本識別經典模型(CRNN)
- 大話文本檢測經典模型(CTPN)
- 大話卷積神經網絡(CNN)
- 大話循環神經網絡(RNN)
- 大話深度殘差網絡(DRN)
- 大話深度信念網絡(DBN)
- 大話CNN經典模型:LeNet
- 大話CNN經典模型:AlexNet
- 大話CNN經典模型:VGGNet
- 大話CNN經典模型:GoogLeNet
- 大話目標檢測經典模型:RCNN、Fast RCNN、Faster RCNN
- 大話目標檢測經典模型:Mask R-CNN
- 27種深度學習經典模型
- 淺說“遷移學習”
- 什麼是“強化學習”
- AlphaGo算法原理淺析
- 大數據究竟有多少個V
- Apache Hadoop 2.8 完全分佈式集羣搭建超詳細教程
- Apache Hive 2.1.1 安裝配置超詳細教程
- Apache HBase 1.2.6 完全分佈式集羣搭建超詳細教程
- 離線安裝Cloudera Manager 5和CDH5(最新版5.13.0)超詳細教程