文字識別是AI的一項重要應用,例如將包裝盒上的文字識別出來、將產品說明書上的文字識別出來、將大街上廣告牌的文字識別出來等等,在現實生活中能給咱們帶來很大的便利,有着很是普遍的應用。算法
一個簡單的文字識別流程以下:微信
Step 1. 經過手機、攝像機等設備採集含有待識別字符的圖像,做爲輸入;網絡
Step 2. 對圖像進行尺寸縮放、明暗調整、去噪等預處理操做;分佈式
Step 3. 將圖像中的單個字符、或者是連續幾個字符所在的區域檢測出來;ide
Step 4. 根據文本檢測結果從圖像中將文本所在區域分割出來,而後導入到模型中進行文本識別,進而獲得圖像中的字符信息。函數
其中,這個流程有兩個環節很是關鍵,一個是「文本檢測」、另外一個是「文本識別」,本文將介紹「文本檢測」的經典模型CTPN,而「文本識別」模型將在後面另外介紹,敬請關注。oop
對於印刷字體的檢測,因爲排版很規範,如今的檢測、識別技術已經很成熟了,咱們平常使用的微信、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),而後回覆「論文」關鍵字可在線閱讀經典論文的內容。
推薦相關閱讀