亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2020-05-25 02:30:57夏昌新莫浩泓王成鑫王瑤閆仕宇
        軟件導刊 2020年2期
        關鍵詞:準確率文字深度

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

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

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

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

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

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

        1 基本原理

        1.1 OCR文字識別技術

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

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

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

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

        1.2 基于深度學習的LeNet-5網絡

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

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

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

        2.1 方法步驟

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

        2.1.1 網絡搭建

        深度學習訓練的第一步是搭建網絡和計算圖。文字識別實質上是一個多分類任務,識別1 000個不同的文字,相當于1 000個類別的分類任務。在搭建的網絡中加入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ù)據,為高效地進行網絡訓練作好鋪墊。主要步驟如下:

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

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

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

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

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

        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é)調器

        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)模型性能評估。在對模型進行訓練調試之后,再對模型性能進行評估,計算模型top 1(識別結果的第一個是正確的概率)和top 5(識別結果的前5個中有正確結果的概率)的準確率,使模型應用效果達到最佳。計算模型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[‘accuracy],

        graph[‘accuracy_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 實驗結果

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

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

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

        3 結語

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

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

        參考文獻:

        [1] 王文華. 淺談OCR技術的發(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ù)據背后的核心技術[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] 何樹有. 自然場景中文字識別關鍵技術研究[D]. 大連:大連理工大學, 2017.

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

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

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

        [17] MADCOLA. CNN網絡架構演進:從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.

        (責任編輯:江 艷)

        猜你喜歡
        準確率文字深度
        文字的前世今生
        乳腺超聲檢查診斷乳腺腫瘤的特異度及準確率分析
        健康之家(2021年19期)2021-05-23 11:17:39
        不同序列磁共振成像診斷脊柱損傷的臨床準確率比較探討
        2015—2017 年寧夏各天氣預報參考產品質量檢驗分析
        深度理解一元一次方程
        熱愛與堅持
        當我在文字中投宿
        文苑(2020年12期)2020-04-13 00:55:10
        深度觀察
        深度觀察
        深度觀察
        亚洲av日韩专区在线观看| 3d动漫精品啪啪一区二区下载| 一二三四在线视频社区3| 国产真实伦视频在线视频| 大岛优香中文av在线字幕| 一区二区三区日韩精品视频| 2018天天躁夜夜躁狠狠躁| 2021国产精品国产精华| 亚洲av无码专区亚洲av| 久久婷婷国产综合精品| 最好的99精品色视频大全在线 | 一本色道久久88—综合亚洲精品| 亚洲性久久久影院| 亚洲一区二区三区成人网站| 日韩一二三四精品免费| 久久精品一区二区三区夜夜| 国产精品国产av一区二区三区| 国产精品无码久久综合| 精品国产一区二区三区av 性色| 精品人妻丰满久久久a| 最新亚洲视频一区二区| 丝袜美腿国产一区精品| 777国产偷窥盗摄精品品在线| 人妻精品无码一区二区三区 | 久久久久女人精品毛片| AV教师一区高清| 亚洲一本之道高清在线观看| 日本超级老熟女影音播放| 狼狼综合久久久久综合网| 国产亚洲av综合人人澡精品| 丰满少妇人妻无码| 四虎影视4hu4虎成人| 久久男人av资源网站无码| 日韩精品久久伊人中文字幕| 人妻少妇中文字幕在线观看| 国产精品网站在线观看免费传媒 | 日韩av在线不卡一二三区| 亚洲女同恋av中文一区二区| 色先锋av影音先锋在线| 亚洲a∨无码一区二区| 日本一区二区视频免费观看|