衝擊年薪50w,助你高階python工程師》
在前一篇文章中(詳見本部落格文章:大話文字檢測經典模型 ctpn),介紹了文字識別在現實生活中的廣泛應用,以及文字識別的簡單流程:
其中「文字檢測」、「文字識別」是其中兩個關鍵環節,「文字檢測」已經在前一篇文章中介紹了詳細的介紹,本文主要介紹「文字識別」的經典模型crnn及其原理。
在介紹crnn之前,先來梳理一下要實現「文字識別」的模型,需要具備哪些要素:
(3)為了提公升模型的適用性,最好不要要求對輸入字元進行分割,直接可進行端到端的訓練,這樣可減少大量的分割標註工作,這時就要引入ctc模型(connectionist temporal classification, 聯接時間分類),來解決樣本的分割對齊的問題。
(4)最後根據一定的規則,對模型輸出結果進行糾正處理,輸出正確結果。
以上就是「文字識別」模型的幾個必須具備的要素。
接下來要介紹的crnn模型,也是基本由這幾部分組成的。
1、什麼是crnn
crnn的主要特點是:
(1)可以進行端到端的訓練;
(2)不需要對樣本資料進行字元分割,可識別任意長度的文字序列
(3)模型速度快、效能好,並且模型很小(引數少)
2、crnn模型結構
crnn模型的結構如下:
正如前面梳理的「文字識別」模型必須具備的要素,crnn模型主要由以下三部分組成:
(1)卷積層:從輸入影象中提取出特徵序列;
(2)迴圈層:**從卷積層獲取的特徵序列的標籤分布;
(3)轉錄層:把從迴圈層獲取的標籤分布通過去重、整合等操作轉換成最終的識別結果。
下面將展開對這三個層進行介紹:
(1)卷積層
① 預處理
crnn對輸入影象先做了縮放處理,把所有輸入影象縮放到相同高度,預設是32,寬度可任意長。
② 卷積運算
由標準的cnn模型中的卷積層和最大池化層組成,結構類似於vgg,如下圖:
從上圖可以看出,卷積層是由一系列的卷積、最大池化、批量歸一化等操作組成。
③ 提取序列特徵
提取的特徵序列中的向量是在特徵圖上從左到右按照順序生成的,用於作為迴圈層的輸入,每個特徵向量表示了影象上一定寬度上的特徵,預設的寬度是1,也就是單個畫素。由於crnn已將輸入影象縮放到同樣高度了,因此只需按照一定的寬度提取特徵即可。如下圖所示:
(2)迴圈層
迴圈層由乙個雙向lstm迴圈神經網路構成,**特徵序列中的每乙個特徵向量的標籤分布。
由於lstm需要有個時間維度,在本模型中把序列的 width 當作lstm 的時間 time steps。
其中,「map-to-sequence」自定義網路層主要是做迴圈層誤差反饋,與特徵序列的轉換,作為卷積層和迴圈層之間連線的橋梁,從而將誤差從迴圈層反饋到卷積層。
(3)轉錄層
轉錄層是將lstm網路**的特徵序列的結果進行整合,轉換為最終輸出的結果。
在crnn模型中雙向lstm網路層的最後連線上乙個ctc模型,從而做到了端對端的識別。所謂ctc模型(connectionist temporal classification,聯接時間分類),主要用於解決輸入資料與給定標籤的對齊問題,可用於執行端到端的訓練,輸出不定長的序列結果。
由於輸入的自然場景的文字影象,由於字元間隔、影象變形等問題,導致同個文字有不同的表現形式,但實際上都是同乙個詞,如下圖:
而引入ctc就是主要解決這個問題,通過ctc模型訓練後,對結果中去掉間隔字元、去掉重複字元(如果同個字元連續出現,則表示只有1個字元,如果中間有間隔字元,則表示該字元出現多次),如下圖所示:
以上就是文字識別模型crnn的介紹,該模型既可用於識別英文、數字,也可用於識別中文。一般是跟ctpn結合一起使用,使用ctpn進行文字的檢測,使用crnn進行文字的識別。
本人使用ctpn+crnn對中文識別出來的效果如下(隱去私密資訊):
牆裂建議
2015
年,baoguang shi
等人發表了關於
crnn
的經典**《
》,在**中詳細介紹了
crnn
的思想和技術原理,建議閱讀該**以進一步了解該模型。
文字識別 CRNN
來自 文字檢測主要解決的問題是 有文字,文字的範圍有多大,即定位文字行的所在位置和範圍及其布局。文字識別是在文字行定位的基礎上,對文字行內容進行識別,將影象中的文字資訊轉化為文字資訊。文字識別主要解決的問題是每個文字是什麼。圖1 文字識別的步驟 常用文字行識別演算法主要有兩個框架 ctc是一種los...
文字識別 CRNN 白翔
pytorch 只針對英文 中文翻譯 架構包括三部分 1 卷積層,從輸入影象中提取特徵序列 2 迴圈層,每一幀的標籤分布 每幀 3 轉錄層,將每一幀的 變為最終的標籤序列。cnn 特徵序列的每乙個特徵向量在特徵圖上按列從左到右生成。這意味著第i個特徵向量是所有特徵圖第i列的連線。在我們的設定中每列的...
大話文字檢測經典模型 SegLink
在自然場景中,例如燈箱廣告牌 產品包裝盒 商標等,要檢測出其中的文字會面臨著各種複雜的情況,例如角度傾斜 變形等情況,這時就需要使用基於深度學習的方法進行文字檢測。在之前的文章中,介紹了基於卷積神經網路和迴圈神經網路的ctpn文字檢測方法 見文章 大話文字檢測經典模型 ctpn 該方法能在自然場景下...