乙個簡單的文字識別流程如下:
step 1. 通過手機、攝像機、掃瞄器等裝置採集含有待識別字元的影象,作為輸入;
step 2. 對影象進行尺寸縮放、明暗調整、去噪等預處理操作;
step 3. 將影象中的單個字元、或者是連續幾個字元所在的區域檢測出來;
step 4. 根據文字檢測結果從影象中將文字所在區域分割出來,然後匯入到模型中進行文字識別,進而得到影象中的字元資訊。
ctpn 對自然場景下的文字,印刷文字的檢測良好。
文字分布的特點**
在了解文字檢測之前,先來看一下文字分布的特點。無論是印刷文字,還是自然場景下的文字,一般文字是水平排列,連續字元的長度可變,但高度基本相同。既然寬度是可變、不確定的,那麼就按照固定的高度進行檢測,看看影象中有哪些區域是連續出現了一片同樣高度特徵的區域,並且其邊緣符合文字的特點,就將其圈出來。
ctpn
ctpn,全稱是「detecting text in natural image with connectionist text proposal network」(基於連線預選框網路的文字檢測)。該模型主要是對中的文字行進行準確定位,其基本做法是直接在卷積獲得的feature map(特徵圖)上生成的一系列適當尺寸的文字proposals(預選框)進行文字行的檢測。下圖可以很好地看出該模型的檢測思路(注意:ctpn模型實際上是在feature map上生成proposals,而不是在原影象上生成,以下只是個示意圖):
ctpn技術原理
ctpn模型利用了rnn和cnn的無縫結合來提高檢測精度。其中,cnn用來提取深度特徵,rnn用於序列的特徵識別,二者無縫結合,在檢測上效能更好。其中:
整個過程主要分為六個步驟:
以上就是ctpn主要原理的介紹,使用ctpn模型對自然場景下的文字進行檢測,結果如下圖所示:
ctpn模型最大的亮點是引入rnn來進行檢測。
先用cnn得到深度特徵,然後用固定寬度的anchor(固定寬度的,細長的矩形框)來檢測文字區域,將同一行anchor對應的特徵串成序列,然後輸入到rnn當中,再用全連線層來做分類或回歸,最後將小的候選框進行合併,從而得到了文字所在的完整區域。這種把rnn和cnn無縫結合的方法有效地提高了檢測精度。
文字檢測模型之CTPN
思路將文字定位框拆分成乙個個等寬 中為16 的小文字框,然後只需在y方向上做回歸。這裡仍然使用了rpn 可看faster rcnn 唯一不同的是這裡得到的候選區域 region proposal 是乙個等寬不等高的。這種小文字框也規避了網路感受野不足的問題。使用了cnn rnn的組合,這裡加入rnn...
文字檢測 CTPN
參考 faster rcnn 非常詳盡 零基礎入門深度學習 5 迴圈神經網路 零基礎入門深度學習 6 長短時記憶網路 lstm 文章基本資訊 題目 detecting text in natural image with connectionist text proposal network,簡稱c...
ubuntu配置ctpn 文字檢測
我是在ubuntu14.04系統下進行的操作。這個工程是基於tensorflow的,所以,首先要確保安裝了tensorflow。tensorflow的安裝很簡單,直接使用pip安裝即可。pip install tensorflow檢驗安裝是否成功 import tensorflow as tf不報錯...