• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Keras框架的身份證號碼識別算法

    2020-07-10 00:58:10成利敏甄景濤段曉霞
    關(guān)鍵詞:池化字符身份證

    成利敏,王 寧,甄景濤,段曉霞

    (廊坊師范學(xué)院,河北 廊坊065000)

    0 引言

    二代身份證作為證明我國公民身份的證件,身份證號碼包括持證者的出生年月、出生地等信息,是獨一無二的[1]。隨著大面積推廣使用實名制,很多行業(yè)都需要身份信息的驗證,錄入身份證號碼。傳統(tǒng)的通過身份證閱讀器比對或手工標(biāo)記訓(xùn)練人臉分類器的方式不能滿足更高的要求。

    近年來,神經(jīng)網(wǎng)絡(luò)技術(shù)發(fā)展迅速,在圖像識別方面取得不錯的成績,尤其深度學(xué)習(xí)受到了研究者們的青睞,深度學(xué)習(xí)具有快速、準(zhǔn)確率高等優(yōu)勢。卷 積 神 經(jīng) 網(wǎng) 絡(luò)[2](Convolutional Neural Networks,CNN)是深度學(xué)習(xí)的重要算法,CNN 通過卷積來模擬特征區(qū)分,并且通過卷積的權(quán)值共享及池化,來降低網(wǎng)絡(luò)參數(shù)的數(shù)量級,最后通過傳統(tǒng)神經(jīng)網(wǎng)絡(luò)完成分類等任務(wù)[3]。

    本文利用CNN中的Keras框架來實現(xiàn)身份證號碼識別。

    1 卷積神經(jīng)網(wǎng)絡(luò)及Keras框架介紹

    1.1 卷積神經(jīng)網(wǎng)絡(luò)

    卷積神經(jīng)網(wǎng)絡(luò)是應(yīng)用較為廣泛的一種神經(jīng)網(wǎng)絡(luò),在圖像識別方面取得了令人滿意的效果。CNN是一個真正成功地采用多層次結(jié)構(gòu)網(wǎng)絡(luò)的深度學(xué)習(xí)方法,除了輸入輸出層外、一般還包括卷積層、激活函數(shù)、池化層、全連接層[2,4,5]。

    (1)卷積層

    卷積層是指卷積核與圖像做卷積操作,即卷積核滑動到圖像上所有位置,在每個位置上與圖像做模板卷積運算。每層卷積層可生成一組特征圖,其中第一層卷積層可能只能提取一些邊緣、線條等低階特征,而之后各卷積的網(wǎng)絡(luò)提取特征能力明顯高于第一層網(wǎng)絡(luò),能夠提取第一層所不能提取的更復(fù)雜高階的特征[6]。

    卷積層的計算式為:

    式中為卷積核,表示卷積后第j個特征圖,blj為偏置參數(shù),Mj表示選擇輸入圖像的特征圖集合。

    卷積核進(jìn)行卷積計算[7]過程示例如圖1 所示。圖中Input Volume 是一個三維矩陣,采用兩個卷積核Filter W0 和Filter W1(每個卷積核都是3*3*3 的模板),卷積核與Input Volume矩陣分別進(jìn)行模板卷積,偏置參數(shù)Bias b0=1 和Bias b1=0,得到輸出特征圖Output Volume(特征圖個數(shù)與卷積核個數(shù)對應(yīng))。Output Volume 中畫方框的-3 計算過程為(1-1-2+1)+(-2-2-2)+(2+1)+1=-3。

    圖1 卷積核進(jìn)行卷積計算過程示例

    (2)激勵函數(shù)

    由于樣本不一定是線性可分的,因此用激活函數(shù)來加入非線性因素,以克服線性模型的不足。在通常情況下,使用非線性卷積函數(shù)作為激活函數(shù),不同的非線性函數(shù)對網(wǎng)絡(luò)的參數(shù)有不同的影響[8]。在卷積神經(jīng)網(wǎng)絡(luò)中,常使用的激活函數(shù)有Sigmoid函數(shù)、ReLU函數(shù)、Tanh函數(shù)等。本文選擇了廣泛使用的ReLU 函數(shù)[9,10]。ReLU 函數(shù)是分段線性函數(shù),它的非線性很弱而且形式很簡單,且收斂速度遠(yuǎn)快于Sigmoid,函數(shù)曲線如圖2所示。

    圖2 ReLU函數(shù)

    (3)池化層

    池化層對提取到的特征進(jìn)行采樣,使特征圖變小,降低網(wǎng)絡(luò)復(fù)雜度。池化層的運算一般有最大值池化、高斯池化、均值池化和可訓(xùn)練池化。本文選擇最大值池化[10],如圖3 所示,采用一個2*2 的filter,stride=2,對4*4的原特征圖提取每個2*2區(qū)域中最大值作為主要特征,得到一個2*2的結(jié)果圖。

    圖3 最大值池化

    (4)全連接層

    全連接層是經(jīng)過多個卷積、池化層后的一層。全連接層能夠?qū)η懊鎺讓拥臄?shù)據(jù)進(jìn)行整合,用適合的函數(shù)提升自身性能。前一層的所有激活數(shù)據(jù)都是全連接層的輸入,全連接對輸入加權(quán)求和并通過激活函數(shù)得到相應(yīng)輸出。

    (5)輸出層

    對所得信息用諸如邏輯回歸(soft max regression)的方法進(jìn)行分類,需要注意選擇恰當(dāng)?shù)膿p失函數(shù)。

    1.2 Keras框架介紹

    Keras 是一個開放源碼的高級深度學(xué)習(xí)程序庫,它的設(shè)計參考了Torch,用Python 語言編寫,支持GPU 和CPU,是一個高度模塊化的神經(jīng)網(wǎng)絡(luò)庫。目前Keras 提供了Theano 與Tensor Flow 兩種后端引擎。

    Keras 框架是用Python 語言編寫的高度模塊化的神經(jīng)網(wǎng)絡(luò)庫,支持GPU 和CPU。Keras 框架與Tensorflow 比較,Keras 提供了可以讓用戶更專注于模型設(shè)計并更快進(jìn)行模型實驗的API,代碼易讀,搭建新的網(wǎng)絡(luò)結(jié)構(gòu)時能夠節(jié)約更多的時間[11]。

    本文基于Keras 框架,以Tensor Flow 為后端,采用Python3.6進(jìn)行程序設(shè)計,實現(xiàn)身份證號碼的識別與讀取。

    2 預(yù)處理及身份證號碼區(qū)域分割

    為了更好地把身份證號碼區(qū)域分割出來,對待檢測身份證圖像進(jìn)行了預(yù)處理[12]。調(diào)用CV2 模塊中cvtColor()、threshold()和dilate()函數(shù)實現(xiàn)灰度化、二值化、形態(tài)學(xué)處理。二值化處理中采用最大類間方差法(OSTU法)選擇最佳閾值。預(yù)處理效果如圖4 所示。根據(jù)形態(tài)學(xué)處理結(jié)果,找到身份證號碼所在區(qū)域,用矩形框標(biāo)出,如圖5所示。

    圖4 圖像預(yù)處理

    圖5 標(biāo)出身份證號碼區(qū)域

    根據(jù)標(biāo)出的矩形框,從二值化圖像中分割出身份證號碼區(qū)域,如圖6 所示。接著對身份證號碼區(qū)域圖像反轉(zhuǎn)、分割[12],得到單個的數(shù)字和字符,保存到文件夾num中,如圖7所示。字符分割過程中,首先調(diào)用findContours()查找輪廓,返回檢測出的每一個輪廓,循環(huán)取出每個輪廓;再調(diào)用contourArea()計算面積,篩選掉面積小于300 的輪廓;然后最小矩形四個點的坐標(biāo),并計算寬度和高度,最后去掉當(dāng)前循環(huán)中篩選出的輪廓中較細(xì)和較扁的輪廓,選出合適的矩陣,進(jìn)行字符分割。

    圖6 身份證號碼區(qū)域分割

    圖7 分割出的數(shù)字和字符

    3 基于Keras框架的身份證號碼識別

    3.1 基于Keras的卷積神經(jīng)網(wǎng)絡(luò)搭建及數(shù)據(jù)處理

    本文采用Keras 框架的Sequential 順序模型搭建17 層卷積神經(jīng)網(wǎng)絡(luò)[11],網(wǎng)絡(luò)結(jié)構(gòu)模型如圖8 所示。其中第1 和第2 個卷積層的卷積核個數(shù)都是64,第3和第4個卷積層的卷積核個數(shù)都是32,這四個卷積模板大小都是3*3;激勵層選擇ReLU 函數(shù);池化層選擇2*2 的最大池化方法;結(jié)構(gòu)中使用兩次Dropout 層,防止過擬合;最后進(jìn)入11 分類的Softmax Classifier。

    圖8 搭建的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)模型

    訓(xùn)練前,對數(shù)據(jù)集進(jìn)行處理,數(shù)據(jù)集的標(biāo)簽以數(shù)字0-10 命名,其中10 代表字符X。先加載數(shù)據(jù)集,調(diào)用train_test_split()函數(shù)按照交叉驗證的原則劃分?jǐn)?shù)據(jù)集,其中驗證集和測試集比例分別為0.3和0.5,再對類別標(biāo)簽進(jìn)行one-hot編碼,對圖像的像素值進(jìn)行歸一化處理。

    3.2 訓(xùn)練

    完成CNN網(wǎng)絡(luò)搭建后,進(jìn)行樣本訓(xùn)練。本文采用SGD+momentum 的優(yōu)化器進(jìn)行訓(xùn)練,設(shè)置batch_size=32,nb_epoch = 13,訓(xùn)練中選用categorical_crossentropy 作為損失函數(shù)。對訓(xùn)練集中的140個樣本訓(xùn)練13次,訓(xùn)練過程中準(zhǔn)確度和損失函數(shù)的數(shù)據(jù)如表1 所示。隨著訓(xùn)練次數(shù)的增加,損失函數(shù)由2.3747降到0.1247,訓(xùn)練準(zhǔn)確率由18.33%升高到98.33%,整體來看訓(xùn)練準(zhǔn)確率為99%。經(jīng)多次驗證,訓(xùn)練準(zhǔn)確率均在90%以上,所需時間短,訓(xùn)練效果較好。

    表1 訓(xùn)練過程中準(zhǔn)確度和損失函數(shù)

    3.3 識別

    運行識別程序,先讀取保存在文件夾num 中分割好的字符;再調(diào)用訓(xùn)練學(xué)習(xí)好的神經(jīng)網(wǎng)絡(luò),對分割好的字符依次識別,識別過程中與數(shù)據(jù)庫中11類標(biāo)簽的字符進(jìn)行比對,返回結(jié)果result 是待識別字符屬于每個標(biāo)簽的概率,選概率大的標(biāo)簽作為字符識別值;最終顯示識別出的身份證號碼。

    返回結(jié)果result 值及識別出的身份證號碼如圖9 所示。經(jīng)比較,與待檢測身份證原圖像中的身份證號碼一致,識別準(zhǔn)確率較高。

    圖9 部分result值及識別出的身份證號碼

    4 結(jié)語

    本文在Keras框架上搭建了17層的卷積神經(jīng)網(wǎng)絡(luò),利用該網(wǎng)絡(luò)對身份證圖像進(jìn)行身份證號碼識別,操作簡單直觀,訓(xùn)練和識別速度較快。對現(xiàn)有的120 張身份證圖像進(jìn)行訓(xùn)練識別,識別準(zhǔn)確率為95.8%,錯誤識別的主要是數(shù)字4和8。為了進(jìn)一步提高識別準(zhǔn)確率,需要繼續(xù)改進(jìn)網(wǎng)絡(luò)結(jié)構(gòu)和參數(shù),調(diào)整數(shù)據(jù)庫??傮w來說,基于Keras 框架的身份證號碼識別算法具有一定的應(yīng)用價值。

    猜你喜歡
    池化字符身份證
    基于緊湊型雙線性網(wǎng)絡(luò)的野生茵識別方法研究
    無線電工程(2024年8期)2024-09-16 00:00:00
    基于Sobel算子的池化算法設(shè)計
    都有身份證
    尋找更強的字符映射管理器
    卷積神經(jīng)網(wǎng)絡(luò)中的自適應(yīng)加權(quán)池化
    辣椒也有身份證
    字符代表幾
    一種USB接口字符液晶控制器設(shè)計
    電子制作(2019年19期)2019-11-23 08:41:50
    基于卷積神經(jīng)網(wǎng)絡(luò)和池化算法的表情識別研究
    消失的殖民村莊和神秘字符
    漾濞| 微山县| 昌图县| 海安县| 涞水县| 满洲里市| 溧阳市| 即墨市| 济源市| 康保县| 本溪市| 尖扎县| 孟津县| 西宁市| 多伦县| 铁岭市| 普洱| 房产| 吴旗县| 泸水县| 赞皇县| 内丘县| 介休市| 东乡族自治县| 射洪县| 溆浦县| 宁陵县| 土默特右旗| 黄冈市| 木兰县| 同心县| 浦东新区| 宕昌县| 龙口市| 上犹县| 仁化县| 乃东县| 全椒县| 天长市| 承德县| 龙口市|