大話文字識別經典模型 CRNN

2021-09-24 15:21:18 字數 2700 閱讀 2998

衝擊年薪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 該方法能在自然場景下...