999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于深度學習的圖像文字識別技術(shù)研究與應用

2020-05-25 02:30:57夏昌新莫浩泓王成鑫王瑤閆仕宇
軟件導刊 2020年2期
關(guān)鍵詞:深度模型

夏昌新 莫浩泓 王成鑫 王瑤 閆仕宇

摘 要:針對傳統(tǒng)圖像文字識別技術(shù)采用模板匹配法和幾何特征抽取法存在識別速度慢、準確率低的缺點,提出一種基于深度學習的圖像文字識別技術(shù),使用開源、靈活的Tensor Flow框架以及LeNet-5網(wǎng)絡訓練數(shù)據(jù)模型,并將訓練好的模型應用于特定場景印刷體文字識別。實驗結(jié)果表明,識別模型的top 1與top 5準確率分別達到了99.8%和99.9%。該技術(shù)不僅可快速有效地處理大量圖片文件,而且能綜合提高圖像文字識別性能,節(jié)省大量時間。

關(guān)鍵詞:文字識別;TensorFlow;深度學習;LeNet-5;數(shù)據(jù)模型

DOI:10. 11907/rjdk. 191546 開放科學(資源服務)標識碼(OSID):

中圖分類號:TP301文獻標識碼:A 文章編號:1672-7800(2020)002-0127-05

英標:Research and Application of Image Character Recognition Technology Based on Deep Learning

英作:XIA Chang-xin,MO Hao-hong,WANG Cheng-xin,WANG Yao,YAN Shi-yu

英單:(School of Computer Science,University of South China, Hengyang 421001,China)

Abstract: In view of the shortcomings of slow recognition speed and low accuracy in the traditional image and character recognition technology based on template matching method and geometric feature extraction method,an image character recognition technology based on deep learning is proposed. Open source, flexible TensorFlow framework and LeNet-5 network are used to train data model, and the trained model is applied to the recognition of printed characters in specific scenes. The experimental results show that the accuracy of top 1 and top 5 of the recognition model reaches 99.8% and 99.9% respectively. This technology can not only process a large number of image files quickly and effectively, but also improve the performance of optical character recognition and save a lot of time.

Key Words: character recognition;Tensorflow;deep learning;LeNet-5;data model

0 引言

隨著信息化水平的不斷提升,以圖像為主的多媒體信息迅速成為重要的信息傳遞媒介,圖像中的文字數(shù)據(jù)包含豐富的高層語義信息與分析價值。光學字符識別(Optical Character Recognition,OCR)指利用電子設備(例如掃描儀或數(shù)碼相機)檢查紙上打印的字符,通過檢測暗、亮模式確定其形狀,然后用字符識別方法將形狀翻譯成計算機文字的過程。它是一種針對印刷體字符,采用光學方式將紙質(zhì)文檔中的文字轉(zhuǎn)換為黑白點陣的圖像文件,并通過識別軟件將圖像中的文字轉(zhuǎn)換成文本格式,供文字處理軟件進一步編輯加工的技術(shù),通過該技術(shù)可將使用攝像機、掃描儀等光學輸入儀器得到的報刊、書籍、文稿、表格等印刷品圖像信息轉(zhuǎn)化為可供計算機識別和處理的文本信息[1]。目前,OCR技術(shù)廣泛應用于多個領(lǐng)域,比如文檔識別、車牌識別、名片識別、票據(jù)識別、身份證識別和駕駛證識別等。如何除錯或利用輔助信息提高識別準確率和效率,已成為OCR技術(shù)研究熱門課題。

傳統(tǒng)OCR技術(shù)基于圖像處理(二值化、連通域分析、投影分析等)和統(tǒng)計機器學習(Adaboost、SVM),采用模板匹配和幾何特征抽取的方法進行識別,過去20年間我國在印刷體和掃描文檔識別上取得了進展,如李俊[2]提出采用基于連通域的方法,通過對不同連通域的特征分析,區(qū)分識別有效區(qū)域和無效區(qū)域,解決了投影法對于圖文混排、兼有表格的復雜版面不能正確切分的問題,但是該方法只限于一些簡單場景,對于稍微復雜的應用場景,通過版面分析(連通域分析)和行切分(投影分析)生成文本行時,無法處理前背景復雜的隨意文字(例如場景文字、菜單、廣告文字等),且過度依賴字符切分結(jié)果,在字符扭曲、粘連、噪聲干擾的情況下,切分的錯誤傳播尤其突出;鄭澤鴻等[3]提出將AP聚類算法應用于字符分割,根據(jù)類中心對特征點進行歸類得到分割結(jié)果,該方法具有較高識別準確率,但在識別效率上有待提高,另外,二值化操作本身對圖像成像條件和背景要求比較苛刻;田潔等[4]指出,二值化過程容易引入噪聲、造成文字筆劃信息丟失,傳統(tǒng)OCR引擎用于識別疊加文字二值化后的結(jié)果可能不夠魯棒。

本文基于深度學習方法,將神經(jīng)網(wǎng)絡LeNet-5應用于字符識別模型訓練,以期彌補傳統(tǒng)方法對于字符粘連、模糊和形變情況下識別準確度較差的不足。

1 基本原理

1.1 OCR文字識別技術(shù)

通常OCR文字識別過程可分為圖像輸入、圖像預處理、對比識別、后期糾正和結(jié)果輸出等步驟。據(jù)此可將整個OCR識別流程劃分為5個部分,圖1為OCR文字識別系統(tǒng)工作流程。

文字識別常用方法有模板匹配法和幾何特征抽取法。

(1)模板匹配法。將輸入的文字與給定的各類別標準文字(模板)進行相關(guān)匹配,計算輸入文字與各模板的相似程度,取相似度最大的類別作為識別結(jié)果。該方法適用于識別固定字型的印刷體文字,優(yōu)點是用整個文字進行相似度計算,對文字缺損、邊緣噪聲等具有較強的適應能力;缺點是當被識別類別數(shù)增加時,標準文字模板的數(shù)量也隨之增加,增加機器存儲容量會降低識別正確率。

(2)幾何特征抽取法。抽取文字的一些幾何特征,如文字端點、分叉點、凹凸部分及水平、垂直、傾斜等各方向的線段、閉合環(huán)路等,根據(jù)這些特征的位置和相互關(guān)系進行邏輯組合判斷,獲得識別結(jié)果。該識別方式由于利用結(jié)構(gòu)信息,也適用于變形較大的手寫體文字。不足之處在于當出現(xiàn)文字粘連扭曲、有噪聲干擾時,識別效果不佳。

1.2 基于深度學習的LeNet-5網(wǎng)絡

深度學習(Deep Learning)是多層神經(jīng)網(wǎng)絡運用各種機器學習算法解決圖像、文本等各種問題的算法集合。深度學習的核心是特征學習,它通過組合低層特征形成更加抽象的高層表示屬性類別或特征,從分層網(wǎng)絡中獲取分層次的特征信息,以發(fā)現(xiàn)數(shù)據(jù)分布式特征表示,從而解決以往需要人工設計特征的難題。

利用深度學習進行文字識別,采用的神經(jīng)網(wǎng)絡是卷積神經(jīng)網(wǎng)絡(Convolutional Neural Networks,CNN),具體選擇使用哪一個經(jīng)典網(wǎng)絡需綜合考慮,越深的網(wǎng)絡訓練得到的模型越好,但是相應訓練難度會增加,此后線上部署時預測的識別速度也會很慢,所以本文使用經(jīng)簡化改進后的LeNet-5(-5表示具有5個層)網(wǎng)絡,如圖2所示。它與原始LeNet稍有不同,比如把激活函數(shù)改為目前常用的ReLu函數(shù);與現(xiàn)有conv->pool->ReLu不同的是其使用的方式是conv1->pool->conv2->pool2,再接全連接層,但是不變的是卷積層后仍然緊接池化層。

2 基于深度學習的圖像文字識別技術(shù)

2.1 方法步驟

本文在開源的TensorFlow框架開發(fā)環(huán)境下,搭建深度學習神經(jīng)網(wǎng)絡LeNet-5和計算圖,將樣本文件添加到訓練隊列中喂給網(wǎng)絡訓練,完成充足的訓練量后,對模型進行識別準確率評估,并最終將訓練得到的識別模型應用于實際場景中的圖像文字識別實驗檢測,流程如圖3所示。

2.1.1 網(wǎng)絡搭建

深度學習訓練的第一步是搭建網(wǎng)絡和計算圖。文字識別實質(zhì)上是一個多分類任務,識別1 000個不同的文字,相當于1 000個類別的分類任務。在搭建的網(wǎng)絡中加入batch normalization。另外損失函數(shù)選擇sparse_softmax_cross_entropy_with_logits,優(yōu)化器選擇Adam,學習率設為0.1,實現(xiàn)代碼如下:

#network: conv2d->max_pool2d->conv2d->max_pool2d->conv2d->max_pool2d->conv2d->conv2d->max_pool2d->fully_connected->fully_connected

#給slim.conv2d和slim.fully_connected準備了默認參數(shù):batch_norm

with slim.arg_scope([slim.conv2d, slim.fully_connected],

normalizer_fn=slim.batch_norm,

normalizer_params={'is_training': is_training}):

conv3_1 = slim.conv2d(images, 64, [3, 3], 1, padding='SAME', scope='conv3_1')

max_pool_1 = slim.max_pool2d(conv3_1, [2, 2], [2, 2], padding='SAME', scope='pool1')

conv3_2 = slim.conv2d(max_pool_1, 128, [3, 3], padding='SAME', scope='conv3_2')

max_pool_2 = slim.max_pool2d(conv3_2, [2, 2], [2, 2], padding='SAME', scope='pool2')

conv3_3 = slim.conv2d(max_pool_2, 256, [3, 3], padding='SAME', scope='conv3_3')

max_pool_3 = slim.max_pool2d(conv3_3, [2, 2], [2, 2], padding='SAME', scope='pool3')

conv3_4 = slim.conv2d(max_pool_3, 512, [3, 3], padding='SAME', scope='conv3_4')

conv3_5 = slim.conv2d(conv3_4, 512, [3, 3], padding='SAME', scope=‘conv3_5)

max_pool_4 = slim.max_pool2d(conv3_5, [2, 2], [2, 2], padding='SAME', scope='pool4')

flatten = slim.flatten(max_pool_4)

fc1 = slim.fully_connected(slim.dropout(flatten, keep_prob), 1024,

activation_fn=tf.nn.relu, scope='fc1')

logits = slim.fully_connected(slim.dropout(fc1, keep_prob), FLAGS.charset_size, activation_fn=None,scope='fc2')

# 因為沒有做熱編碼,所以使用sparse_softmax_cross_entropy_with_logits

loss = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=labels))

accuracy = tf.reduce_mean(tf.cast(tf.equal(tf.argmax(logits, 1), labels), tf.float32))

update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)

if update_ops:

updates = tf.group(*update_ops)

loss = control_flow_ops.with_dependencies([updates], loss)

global_step = tf.get_variable("step", [], initializer=tf.constant_initializer(0.0), trainable=False)

optimizer = tf.train.AdamOptimizer(learning_rate=0.1)

train_op = slim.learning.create_train_op(loss, optimizer, global_step=global_step)

probabilities = tf.nn.softmax(logits)

2.1.2 模型訓練

訓練之前需先設計好數(shù)據(jù),為高效地進行網(wǎng)絡訓練作好鋪墊。主要步驟如下:

(1)創(chuàng)建數(shù)據(jù)流圖。該圖由一些流水線階段組成,階段間用隊列連接在一起。第一階段將生成并讀取文件名,并將其排到文件名隊列中;第二階段從文件中讀取數(shù)據(jù)(使用Reader),產(chǎn)生樣本且把樣本放在一個樣本隊列中。

根據(jù)不同的設置,或者拷貝第二階段的樣本,使其相互獨立,因此可以從多個文件中并行讀取。在第二階段排隊操作,即入隊到隊列中去,在下一階段出隊。因為將開始運行這些入隊操作的線程,所以訓練循環(huán)會使樣本隊列中的樣本不斷出隊,如圖4所示。

圖4 樣本隊列數(shù)據(jù)讀入流程

樣本隊列的入隊操作在主線程中進行,Session中可以多個線程一起運行。在數(shù)據(jù)輸入的應用場景中,入隊操作從硬盤中讀取輸入進行,再放到內(nèi)存中,速度較慢。使用QueueRunner可以創(chuàng)建一系列新的線程進行入隊操作,讓主線程繼續(xù)使用數(shù)據(jù)。如果在訓練神經(jīng)網(wǎng)絡的場景中,則訓練網(wǎng)絡和讀取數(shù)據(jù)異步,主線程在訓練網(wǎng)絡時,另一個線程再將數(shù)據(jù)從硬盤讀入內(nèi)存。

訓練時數(shù)據(jù)讀取模式如上所述,則訓練代碼設計為:

with tf.Session(config=tf.ConfigProto(gpu_options=gpu_options, allow_soft_placement=True)) as sess:

# batch data 獲取

train_images, train_labels = train_feeder.input_pipeline(batch_size=FLAGS.batch_size, aug=True)

test_images, test_labels = test_feeder.input_pipeline(batch_size=FLAGS.batch_size)

graph = build_graph(top_k=1)? # 訓練時top k = 1

saver = tf.train.Saver()

sess.run(tf.global_variables_initializer())

# 設置多線程協(xié)調(diào)器

coord = tf.train.Coordinator()

threads = tf.train.start_queue_runners(sess=sess, coord=coord)

train_writer = tf.summary.FileWriter(FLAGS.log_dir + '/train', sess.graph)

test_writer = tf.summary.FileWriter(FLAGS.log_dir + '/val')

start_step = 0

(2)指令執(zhí)行。設置最大迭代步數(shù)為16 002,每100步進行一次驗證,每500步存儲一次模型。

訓練過程的損失函數(shù)loss和精度函數(shù)accuracy變換曲線如圖5、圖6所示。

損失(loss)和精度(accuracy)是用于衡量模型預測偏離其訓練對象期望值的衡量指標,從圖5、圖6可以看出loss和accuracy最大值分別穩(wěn)定在0.05、0.9左右,說明模型訓練順利完成,已具備替代訓練對象進行文字識別工作的能力。

(3)模型性能評估。在對模型進行訓練調(diào)試之后,再對模型性能進行評估,計算模型top 1(識別結(jié)果的第一個是正確的概率)和top 5(識別結(jié)果的前5個中有正確結(jié)果的概率)的準確率,使模型應用效果達到最佳。計算模型top 1和top 5準確率的代碼為:

i = 0

acc_top_1, acc_top_k = 0.0, 0.0

while not coord.should_stop():

i += 1

start_time = time.time()

test_images_batch, test_labels_batch = sess.run([test_images, test_labels])

feed_dict = {graph[‘images]: test_images_batch,

graph[‘labels]: test_labels_batch,

graph[‘keep_prob]: 1.0,

graph[‘is_training]: False}

batch_labels, probs, indices, acc_1, acc_k = sess.run([graph[‘labels],

graph[‘predicted_val_top_k],

graph[‘predicted_index_top_k],

graph[‘a(chǎn)ccuracy],

graph[‘a(chǎn)ccuracy_top_k]],

feed_dict=feed_dict)

final_predict_val += probs.tolist()

final_predict_index += indices.tolist()

groundtruth += batch_labels.tolist()

acc_top_1 += acc_1

acc_top_k += acc_k

end_time = time.time()

logger.info(“the batch {0} takes {1} seconds, accuracy = {2}(top_1) {3}(top_k)”

.format(i, end_time - start_time, acc_1, acc_k))

預測的top 1和top 5準確率如圖7所示。

從圖中可以看出,識別模型top 1和top 5分別達到了99.8%、99.9%,識別準確率很高。

2.2 實驗結(jié)果

從某文檔中截取出一段文字以圖片格式保存,再使用文字切割算法把文字段落切割為單字,如圖8、圖9所示。

對文字段落進行識別,由于使用的是GPU,識別速度非常快,除去系統(tǒng)初始化時間,全部圖像識別時耗不超過1s。其中輸出的信息分別是:當前識別的圖片路徑、模型預測出的top 3漢字(置信度由高到低排列)、對應的漢字ID、對應概率。在識別完成之后,將所有識別文字按順序組合成原始段落排列,如圖10、圖11所示。

從圖中可以看出單字的識別非常準確,在最后顯示的文字段落識別結(jié)果中可以看到僅個別文字識別出現(xiàn)偏差,整體識別效果佳,說明該模型的識別能力可滿足一般實際場景印刷體文字識別要求。

3 結(jié)語

經(jīng)過測試,基于深度學習的圖像文字識別模型在模型評估上top 1的正確率達到了99.8%。與傳統(tǒng)OCR相比,基于深度學習的OCR技術(shù)在識別準確率方面有大幅上升。在一些比較理想的環(huán)境下,文字識別效果較好,但是處理復雜場景或一些干擾比較大的文字圖像時,識別效果有待提高,后續(xù)將對模型作進一步優(yōu)化。

隨著OCR技術(shù)的迅猛發(fā)展,文本檢測和識別技術(shù)將拓展更多語言支持。從圖像中提取文字對于圖像高層次語義理解、索引和檢索意義重大。結(jié)合深度學習的神經(jīng)網(wǎng)絡和NPL語義分析提升OCR識別糾錯能力,幫助個體提升效率、創(chuàng)造價值,是未來重要發(fā)展趨勢。

參考文獻:

[1] 王文華. 淺談OCR技術(shù)的發(fā)展和應用[J]. 福建電腦,2012,28(6):56,92.

[2] 李俊. 印刷體文字識別系統(tǒng)的研究與實現(xiàn)[D]. 成都:電子科技大學,2011.

[3] 鄭澤鴻,黃成泉,梁毅,等. 基于AP聚類的中文字符分割[J]. 智能計算機與應用,2018,8(1):65-67,71.

[4] 田潔,王偉強,孫翼. 一種免除二值化的視頻疊加中文字符識別方法[J]. 中國科學院大學學報,2018,35(3):402-408.

[5] 張桂剛,李超,邢春曉. 大數(shù)據(jù)背后的核心技術(shù)[M]. 北京:電子工業(yè)出版社,2017.

[6] 李月潔. 自然場景中特定文字圖像優(yōu)化識別研究與仿真[J]. 計算機仿真,2016, 33(11):357-360.

[7] 王若辰. 基于深度學習的目標檢測與分割算法研究[D]. 北京:北京工業(yè)大學,2016.

[8] 葉韻. 深度學習與計算機視覺[M]. 北京:機械工業(yè)出版社,2017.

[9] 張三友,姜代紅. 基于OPENCV的智能車牌識別系統(tǒng)[J]. 軟件導刊, 2016,15(5):87-89.

[10] 黃攀. 基于深度學習的自然場景文字識別[D]. 杭州:浙江大學, 2016.

[11] 喻儼,莫瑜. 深度學習原理與TensorFlow實踐[M]. 北京:電子工業(yè)出版社, 2017.

[12] 丁明宇,牛玉磊,盧志武,等.? 基于深度學習的圖片中商品參數(shù)識別方法[J]. 軟件學報, 2018,29(4):1039-1048.

[13] 何樹有. 自然場景中文字識別關(guān)鍵技術(shù)研究[D]. 大連:大連理工大學, 2017.

[14] 舒躍育,劉紅梅.? 深度學習推進人工智能變革[N]. 中國社會科學報,2018-02-06(005).

[15] 姚東林. 基于安卓的文字識別系統(tǒng)的設計與實現(xiàn)[D]. 西安:西安電子科技大學,2014.

[16] 張紀緒. 面向移動平臺的離線手寫文檔識別系統(tǒng)[D]. 哈爾濱:哈爾濱工業(yè)大學,2017.

[17] MADCOLA. CNN網(wǎng)絡架構(gòu)演進:從LeNet到DenseNet[EB/OL]. https://www.cnblogs.com/skyfsm/p/8451834.html.

[18] BARAT C,DUCOTTET C. String representations and distances in deep convolutional neural networks for image classification[J]. Pattern Recognition,2016(54):104-115.

[19] HLáDEK D,STA? J,ONDá? S, et al. Learning string distance with smoothing for OCR spelling correction[J]. Multimedia Tools and Applications,2017(76):24549-24567.

[20] BALOOCHIAN H,GHAFFARY H R,BALOCHIAN S. Enhancing fingerprint image recognition algorithm using fractional derivative filters[J]. Open Computer Science,2017(2):9-16.

[21] RYAN M,HANAFIAH N. An examination of character recognition on ID card using template matching approach[J]. Procedia Computer Science,2015(59):520-529.

(責任編輯:江 艷)

猜你喜歡
深度模型
一半模型
深度理解一元一次方程
重要模型『一線三等角』
重尾非線性自回歸模型自加權(quán)M-估計的漸近分布
深度觀察
深度觀察
深度觀察
深度觀察
3D打印中的模型分割與打包
FLUKA幾何模型到CAD幾何模型轉(zhuǎn)換方法初步研究
主站蜘蛛池模板: 国产黄网站在线观看| 国产99视频在线| 五月婷婷精品| 国产精品亚洲αv天堂无码| 亚洲国产欧美目韩成人综合| 狠狠色狠狠色综合久久第一次| 婷婷色婷婷| 色哟哟国产精品一区二区| 免费毛片a| 日韩第九页| 在线日本国产成人免费的| 久久一色本道亚洲| 爆操波多野结衣| 国产一区二区丝袜高跟鞋| 极品国产一区二区三区| 91精品视频在线播放| 色综合热无码热国产| 综合社区亚洲熟妇p| 亚洲精选无码久久久| 欧美第一页在线| av午夜福利一片免费看| 亚洲欧洲自拍拍偷午夜色无码| 亚洲精品色AV无码看| 日本高清免费不卡视频| 视频一本大道香蕉久在线播放 | 国产在线视频二区| 四虎成人在线视频| 精品午夜国产福利观看| 亚洲成人高清无码| jizz在线观看| 亚洲人妖在线| 国产精品免费电影| 亚洲精品国产成人7777| 国产第一色| 国产一区二区精品福利 | 欧美伦理一区| 免费99精品国产自在现线| 97超爽成人免费视频在线播放| 美女国内精品自产拍在线播放| 日韩第一页在线| 久久永久视频| 无码专区在线观看| 国产喷水视频| 日本亚洲国产一区二区三区| 国产在线第二页| 欧美成人日韩| 日本AⅤ精品一区二区三区日| 人人爽人人爽人人片| 国产精品久久自在自线观看| 尤物亚洲最大AV无码网站| 国产理论最新国产精品视频| 欧美成a人片在线观看| 亚洲精品无码在线播放网站| 国产精品亚洲一区二区三区z| 国产在线欧美| 特级精品毛片免费观看| 久久6免费视频| 国产高清在线精品一区二区三区| 尤物视频一区| 中文字幕亚洲精品2页| 六月婷婷精品视频在线观看| 91九色最新地址| 日日碰狠狠添天天爽| 国产新AV天堂| 亚洲欧洲AV一区二区三区| 黑人巨大精品欧美一区二区区| 再看日本中文字幕在线观看| 亚洲无码精彩视频在线观看| 特级毛片免费视频| 国产亚洲男人的天堂在线观看| 日韩无码黄色| 99re热精品视频国产免费| 欧美人与牲动交a欧美精品 | 成人毛片免费在线观看| 国产精品无码制服丝袜| 亚洲欧美人成人让影院| 亚洲国产欧美目韩成人综合| 久久精品无码国产一区二区三区| 99国产精品一区二区| 麻豆国产精品视频| 国产不卡在线看| 亚洲成人精品|