基于深度學習的文字識別模型訓練方法和識別方法
【技術領域】
[0001] 本發(fā)明涉及模式識別與機器學習領域,尤其涉及神經(jīng)網(wǎng)絡與深度學習技術領域, 更具體地涉及一種基于深度學習的文字識別模型訓練方法和識別方法。
【背景技術】
[0002] 對于文字識別(0CR),傳統(tǒng)的方法需要人工設計特征,這需要大量專家知識。而深 度學習是一種特征學習方法,只需要提供大量訓練樣本,模型就會自動學習到魯棒的特征 表達。
[0003] 另外,常見的卷積神經(jīng)網(wǎng)絡卷積層一般不超過5層。相對于少數(shù)幾個卷積層,使用 更多的卷積層不可避免地增加了問題的難度。傳統(tǒng)的解決思路是直接隨機初始化網(wǎng)絡權 值,再進行訓練。然而當卷積層超過5層后,這種方法會導致無法訓練。
【發(fā)明內(nèi)容】
[0004] 為了解決現(xiàn)有技術存在的空缺,本發(fā)明的一個目的是提供一種基于深度學習的字 符識別模型的訓練方法,再一個目的是利用訓練得到的字符識別模型對文字進行識別。
[0005] 具體地,本發(fā)明的基于深度學習的字符識別模型的訓練方法包括以下步驟:
[0006] 步驟S1,構建多層卷積神經(jīng)網(wǎng)絡的結構,包括設置網(wǎng)絡的層數(shù)、卷積窗大小、每層 的節(jié)點數(shù)等。定義一個輸出層來輸出字符分類的結果,每個類別標簽定義一個輸出結點。
[0007] 步驟S2,采用傳統(tǒng)的誤差反向傳播算法訓練網(wǎng)絡,從而得到字符識別模型,這里目 標函數(shù)為輸入圖像的真實標簽與模型預測結果的交叉熵。
[0008] 步驟S3,增加卷積層層數(shù)得到新的網(wǎng)絡結構,用步驟S3得到的模型初始化網(wǎng)絡權 重。
[0009] 步驟S4,重復步驟S2與S3,即逐漸增加卷積層層數(shù)并訓練,直到識別正確率不再 提高為止,得到最終的字符識別模型。
[0010] 步驟S5,使用維特比算法,求出每個詞語對應的分數(shù),分數(shù)最高的即為識別出的詞 語。
[0011] 步驟S6,對測試圖像采用掃描窗口進行測試,從給定詞典中找出最有可能的詞語。
[0012] 基于上述技術方案可知,本發(fā)明的方法基于深度學習,把字符識別問題當成一個 多類別分類問題,該方法可以學習到文字的魯棒特征,不必人工設計特征,且后續(xù)處理可以 有效地將備選字符識別成詞語,能夠廣泛地應用于自然場景下的文字識別問題。本發(fā)明的 方法利用更深的卷積神經(jīng)網(wǎng)絡來學習文字特征,對于文字的顏色、大小、光照、模糊具有魯 棒性,字符識別和詞語識別能夠保持較高的準確率。
【附圖說明】
[0013] 圖1是本發(fā)明的基于深度學習的自然場景詞語識別方法的流程圖;
[0014] 圖2是本發(fā)明的基于深度學習的文字識別方法所使用的網(wǎng)絡結構的示意圖。
【具體實施方式】
[0015] 以下結合附圖詳細說明本發(fā)明技術方案中所涉及的各個細節(jié)問題。應當指出的 是,所描述的實施例僅旨在便于理解,對本發(fā)明不起任何限定作用。
[0016] 本發(fā)明公開了一種基于深度學習的文字識別方法,主要包括建立更深的卷積神經(jīng) 網(wǎng)絡來識別字符,以及從識別出的備選字符中找出最可能的詞語。該方法具體包括:首先, 設計多層卷積神經(jīng)網(wǎng)絡結構,把每一個字符作為一個類別,這樣就形成了一個多類別分類 問題;然后,采用反向傳播算法訓練卷積神經(jīng)網(wǎng)絡用以識別單一字符,有監(jiān)督地最小化該網(wǎng) 絡的目標函數(shù),得到字符識別模型;最后根據(jù)現(xiàn)有識別出的字符,采用維特比算法從詞典中 找出最有可能的詞語。經(jīng)過以上步驟,一個用于自然場景下的詞語識別模型就完成了。在 測試的時候,給定一個輸入,需要先進行滑動窗口掃描獲得備選字符,再從備選字符中找出 最可能的詞語。本方法利用更深的卷積神經(jīng)網(wǎng)絡來學習文字特征,對于文字的顏色、大小、 光照、模糊具有魯棒性,字符識別和詞語識別能夠保持較高的準確率。
[0017] 更具體地,本發(fā)明基于深度學習提出一種自然場景中的詞語識別方法。通過模仿 深度置信網(wǎng)逐層訓練的方法來進行分步訓練,即每次增加2-3層卷積層,用上一次訓練好 的模型對本次模型進行權值初始化,再進行整體微調(diào)。因為大部分權值在上一步已經(jīng)較好 地學習,從而每次訓練收斂速度很快。通過設計更深的網(wǎng)絡結構并分步訓練,本發(fā)明提高了 字符識別的當前最好結果。
[0018] 以下詳細說明本發(fā)明方法涉及的關鍵步驟。
[0019] 步驟一,構建多層卷積神經(jīng)網(wǎng)絡,包括定義構成網(wǎng)絡的層數(shù)、卷積窗大小和節(jié)點數(shù) 等。每個輸出節(jié)點代表一類字符,共62類(26個大寫字母+26個小寫字母+10個數(shù)字)。 作為優(yōu)選,可以采用多于12個卷積層、多于3個全連接層和2個最大值池化層的深度卷積 神經(jīng)網(wǎng)絡,其中第一、二卷積層后面接局部響應歸一化層。如此多的卷積層可以提取更好的 特征,實驗表明比常見的5層卷積層的神經(jīng)網(wǎng)絡效果好。
[0020] 步驟二,采用誤差反向傳播算法對網(wǎng)絡進行訓練。在輸出層上利用一個結點來描 述一個標簽信息1,計算其交叉熵,并求和作為模型的目標函數(shù)。模型的激活函數(shù)f(x)可以 表示為f(x) =max(0,WTx+b)。其中W是模型權重,b是偏置項,x是輸入。記Zi為第1類 對應輸出節(jié)點的輸出值,這樣可以根據(jù)softmax層的輸出得到模型預測?1為
[0021]
[0022] 采用反向傳播算法進行有監(jiān)督訓練,模型的目標函數(shù)E為圖像的真實類別qi與模 型預測Pl之間的交叉熵:
[0023] E= -E1qilogPi;
[0024] 其中,log函數(shù)優(yōu)選以自然對數(shù)e為底;
[0025] 步驟三,增加2-3層卷積層,設計更深的網(wǎng)絡結構。用上一步已經(jīng)訓練好的模型初 始化卷積層和全連接層,新增加的卷積層權重值進行隨機初始化。
[0026] 步驟四,重復步驟二和步驟三,即每次增加卷積層得到新的結構,再對新結構進行 訓練。
[0027] 步驟五,softmax層的輸出為該字符的分數(shù)(0~1的實數(shù)),預先給定的詞典中包 含了該數(shù)據(jù)集所有可能出現(xiàn)的詞語。使用維特比算法,求出每個詞語對應的分數(shù)。
[0028] 步驟六,對測試圖像使用掃描窗口進行測試,從給定詞典中找出最有可能的詞語。
[0029] 本發(fā)明可以擴展到漢字和其他字符的識別,實驗了中文一級字庫3755個漢字的 訓練與識別,也有較好表現(xiàn)。
[0030] 實施例
[0031] 為了詳細說明本發(fā)明的【具體實施方式】,以某詞語識別數(shù)據(jù)集為例說明。該數(shù)據(jù)集 包含862張已經(jīng)裁減好的自然場景中的詞語,每張圖像包含一個詞語和少量背景。實現(xiàn)的 模型可以自動進行圖像內(nèi)詞語的識別。具體步驟如下:
[0032] 步驟S1,從詞語數(shù)據(jù)集中裁減出6113個字符圖像作為訓練集,5379個字符圖像組 成測試集。
[0033] 步驟S2,使用一個5層卷積層+3層全連接層的深度卷積神經(jīng)網(wǎng)絡進行學習,其卷 積層統(tǒng)一使用128個結點,3X3的卷積窗口,步長取為1。全連接層結點分別為256, 256,62 個。
[0034] 步驟S3,將圖像訓練集隨機劃分為8個子集,每個子集包含768個圖像(最后一個 子集不足768張,取為768是為了加速GPU運算)。
[0035] 步驟S4,采用隨機梯度下降法,迭代大約400個周期。期間當錯誤率不再降低時, 把學習率除以10,繼續(xù)訓練直至網(wǎng)絡收斂為止。
[0036] 步驟S5,依次加入額外的3個卷積層,2個卷積層,2個卷積層進行分步訓練。最終 的結構共有12個卷積層+3個全連接層,該模型字符識別效果最好,作為最終的字符識別模 型。
[0037] 步驟S6,用掃描窗口掃描測試圖像,用訓練好的模型識別出字符,再采用維特比算 法得到最有可能的單詞。
[0038] 以上所述的具體實施例,對本發(fā)明的目的、技術方案和有益效果進行了進一步詳 細說明,應理解的是,以上所述僅為本發(fā)明的具體實施例而已,并不用于限制本發(fā)明,凡在 本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護 范圍之內(nèi)。
【主權項】
1. 一種基于深度學習的字符識別模型的訓練方法,包括以下步驟: 步驟S1,構建多層卷積神經(jīng)網(wǎng)絡,包括設置網(wǎng)絡層數(shù)、卷積窗大小、每層節(jié)點數(shù);定義 一個輸出層來輸出字符分類的結果,每個類別標簽定義一個輸出結點; 步驟S2,訓練所述多層卷積神經(jīng)網(wǎng)絡,從而得到字符識別模型,這里目標函數(shù)為輸入圖 像的真實標簽與所述字符識別模型預測結果的交叉熵; 步驟S3,增加所述多層卷積神經(jīng)網(wǎng)絡的卷積層層數(shù)得到新的多層卷積神經(jīng)網(wǎng)絡,用步 驟S2得到的模型參數(shù)來初始化所述新的多層卷積神經(jīng)網(wǎng)絡卷積層的權重; 步驟S4,重復步驟S2與S3,即逐漸增加卷積層層數(shù)并訓練,直到識別正確率不再提高 為止,得到優(yōu)化的字符識別模型。2. 根據(jù)權利要求1所述的基于深度學習的字符識別模型的訓練方法,其中所述步驟S2 中采用誤差反向傳播算法來訓練所述多層卷積神經(jīng)網(wǎng)絡,從而得到字符識別模型。3. 根據(jù)權利要求1所述的基于深度學習的字符識別模型的訓練方法,所述方法還包括 步驟S5,使用維特比算法,從給定詞典中求出所述字符識別模型中每個詞語對應的分數(shù),分 數(shù)最高的即為識別出的詞語,從而得到最終的字符識別模型。4. 根據(jù)權利要求1所述的基于深度學習的字符識別模型的訓練方法,其中步驟S3所述 增加所述多層卷積神經(jīng)網(wǎng)絡的卷積層層數(shù)的步驟中,每次增加2-3層卷積層。5. 根據(jù)權利要求4所述的基于深度學習的字符識別模型的訓練方法,其中所述步驟S4 中,最終采用多于12個卷積層、多于3個全連接層和2個最大值池化層的深度卷積神經(jīng)網(wǎng) 絡,所述深度卷積神經(jīng)網(wǎng)絡中第一、二卷積層后面接局部響應歸一化層。6. -種基于深度學習的文字識別方法,包括以下步驟: 采用如權利要求1至5任意一項所述的基于深度學習的字符識別模型的訓練方法對字 符識別模型進行訓練; 掃描待識別圖像,利用上述步驟得到的所述字符識別模型對所述掃描得到的待識別圖 像進行識別,從給定詞典中找出最有可能的詞語。
【專利摘要】一種基于深度學習的文字識別方法,包括:設計更深的多層卷積神經(jīng)網(wǎng)絡結構,把每一個字符作為一個類別;采用反向傳播算法訓練卷積神經(jīng)網(wǎng)絡用以識別單一字符,有監(jiān)督地最小化該網(wǎng)絡的目標函數(shù),得到字符識別模型;最后根據(jù)現(xiàn)有識別出的字符,采用維特比算法從詞典中找出最有可能的詞語。在測試的時候,給定一個輸入,需要先進行滑動窗口掃描獲得備選字符,再從備選字符中找出最可能的詞語。本方法利用更深的卷積神經(jīng)網(wǎng)絡來學習文字特征,對于文字的顏色、大小、光照、模糊具有魯棒性,字符識別和詞語識別能夠保持較高的準確率。
【IPC分類】G06K9/00, G06K9/62
【公開號】CN105205448
【申請?zhí)枴緾N201510522576
【發(fā)明人】王亮, 王威, 張宇琪, 范偉
【申請人】中國科學院自動化研究所, 富士通株式會社
【公開日】2015年12月30日
【申請日】2015年8月24日