劉 成,李正輝,高基豪
(鄭州鐵路職業技術學院,河南鄭州450000)
人類對外界信息的認識及感知,最基本來自于視覺,因此對視覺信息的搜集與處理,一直是人類認識世界、認識規律的重要手段[1]。人工智能技術,通過對視覺信息的采集,對圖形圖像信息做科學的篩選、比對并分析,然后經過算法(深度學習)、理解和思考之后,將真實的現實內容呈現在計算機中[2]。
隨著人工智能、深度學習技術的發展,人工智能技術在視覺領域方面的應用日益突出,得到了廣泛的關注和研究[3]。尤其是隨著電子商務的興起,手機支付已成為主要的支付方式之一,在移動終端上快速準確地識別出銀行卡號,完成銀行卡與移動支付方式的綁定也成為了研究的熱點。本文將使用基于深度學習的視覺識別技術,拓展現有的光學識別(OCR)銀行卡號系統,解決目前卡號識別速度慢、效率低等問題,實現卡號的快速和準確識別[4-5]。
一般而言,對于常用的光學識別需要對圖片進行預處理,包括灰度化、二值化、邊緣檢測、輪廓提取、歸一化的處理,得到圖片進行識別[6]。而基于深度學習的銀行卡識別是在原來光學識別預處理的基礎上,對處理過后的圖片制作數據集。
原始數據集只有1084 張圖片,為了提高模型準確性,使用數據增強技術。由于對圖片的過度旋轉以及對稱處理會改變圖片本質,這里采用的數據增強方式主要是對圖片數據的亮度、飽和度、對比度進行隨機變化,以及對圖片加模糊和加噪聲,共生成了8萬張圖片,用以輔助訓練,同時對照片進行了小角度的隨機翻轉。
對于復雜場景的文字識別,首先要定位文字的位置,即文字檢測,深度學習框架CTPN 網絡應運而生,CTPN 算法結合了CNN 與LSTM深度網絡,能有效地檢測出復雜場景下橫向分布的不定長文字[7],如圖1所示,是測試集中隨機選取的銀行卡定位效果。從圖中可以看出,利用CTPN 算法可以將銀行卡中的文字圈出,不超過兩行。

圖1 建設銀行文本檢測結果圖
由于CTPN 網絡是基于Faster R- CNN 改進而來,其基本結構和Faster R- CNN 結構類似,Faster R- CNN網絡在2016 年被提出,經過R- CNN 和Fast RCNN的積淀,Ross B.Girshick 提出了新的Faster RCNN,在結構上,Faster R- CNN 已經將特征抽取(Feature,Extraction)、Proposa 提 取、Bounding box Regression(Rect,Refine)、Classification 都整 合 在 了 一個 網 絡中,使得綜合性能有較大提高,在檢測速度方面尤為明顯[8]。Faster R- CNN 網絡結構如圖2 所示。Faster R- CNN 網絡主要有四個方面的內容:

圖2 Faster R- CNN 網絡結構圖
1)Conv Layers:作為一種CNN 網絡目標檢測方法,Faster R- CNN 首先使用一組基礎的Conv + Relu+ Pooling 層提取Image 的Feature Maps。該Feature Maps 被共享用于后續RPN 層和全連接層。
2)Region Proposal Networks:RPN 網絡用于生成Region Proposals。該層通過Softmax 判斷Anchors 屬于Foreground 或者Background,再利用Bounding Box Regression 修正Anchors 獲得精確的Proposals[9]。
3)RoI Pooling:該層收集輸入的Feature Maps 和Proposals, 綜合這些信息后提取Proposal Feature Maps,送入后續全連接層判定目標類別[10]。
4)Classification:利用Proposal Feature maps 計算Proposal 的類別,同時再次Bounding Box Regression獲得檢測框最終的精確位置。
通過上述步驟,獲得目標的檢測位置和所屬類別,銀行卡號識別屬于文本檢測,有別于普通的目標檢測,文本檢測可以看成是特殊的目標檢測,在通用目標檢測中,每個目標都有定義好的邊界框,檢測出的Box 與當前目標的Groundtruth 重疊率大于0.5 就表示該檢測結果正確。文本檢測中正確檢出需要覆蓋整個文本長度,且評判的標準不同于通用目標檢測,文字檢測主要是Wolf 標準,而物體檢測對邊界的要求不高,一般IOU 大于0.7 即可,場景文字檢測有明顯的序列特征,而物體檢測沒有這些特征,和物體檢測相比,場景文字檢測含有更多的小尺寸的物體。
針對以上特點,CTPN 相較于Faster R- CNN 做了許多優化:在CTPN 中使用更符合場景文字檢測特點的錨點;針對錨點的特征使用新的損失函數;改進了RPN,Anchor 產生的Window 的寬度固定為3;RPN 后面不是直接接全連接+ 分類/ 回歸,而是通過一個LSTM 再接全連接層,RNN(雙向LSTM)的引入用于處理場景文字檢測中存在的序列特征,如在銀行卡定位中,由于不同的銀行卡卡號位數不同導致出現不定長字符,然而RNN 具有處理字符序列問題,在傳統CNN 提取圖像特征后,送入RNN 網絡處理;Side-Refinement 的引入進一步優化文字區域。
假設圖片大小為C×H×W,輸入為N 張:
1)利用VGG16 網絡作為特征提取層,得到Conv5_3 的特征作為Feature Map,大小是W×H×C。
2)在Feature Map 上做滑窗,窗口大小是3×3,也就是每個窗口都能得到一個長度為3×3×C 的特征向量,這個特征向量將用來預測和10 個Anchor 之間的偏移距離,每一個窗口中心都會預測出10 個Text Propsoal。
3)將上一步得到的特征輸入到一個雙向的LSTM中,得到長度為W×256 的輸出,然后接一個512 的全連接層,準備輸出。
4)經過“FC”卷積層,變為的特征。
卷積神經網絡在計算機視覺物體識別上優勢顯著,典型的模型有:LeNet5,VGG,Highway Network,Residual Network。一般卷積深度越深則效果越好,但隨著卷積深度的增加也會面臨梯度彌散的問題,即經過卷積層數越多,前面的信息就會漸漸減弱和消散。雖然目前已有很多措施去解決以上困境,如Highway Network、Residual Network 通過前后兩層的殘差鏈接使信息盡量不丟失。但這些措施都有一個共性:都是在前一層和后一層中建立一個短連接,無法很好地使信息在整個網絡保持。DenseNet 網絡相較于其他網絡而言,是一種全新的網絡結構,其網絡中的每層都與該層之前的所有層相連,即每層的輸入是前面所有層的輸出的合并。這樣的結構將需要更少的參數,減少中間變量,也增強了前向或后向計算時信息的完整性,進而達到更好的識別效果。圖3 是DnseNet 結構圖。因此,可利用DenseNet 網絡實現銀行卡號的識別。由于每個銀行卡樣式不一,卡號的整體長度也不一致,為處理不定長的字符,使用了CTC 損失函數。

圖3 Densenet 網絡結構圖
整個模型訓練是在Linux 環境下進行,使用Python 3 語言與Keras 框架實現,并利用GPU 加速模型訓練過程。在沒有使用數據增強技術時,訓練原始數據集100 個Epoch 后,得到如圖4、圖5 所示曲線。

圖4 訓練集的正確率曲線圖(橫坐標為樣本數,縱坐標為訓練集正確率)

圖5 驗證集的正確率曲線圖(橫坐標為樣本數,縱坐標為驗證集正確率)
通過上圖,可得原始數據訓練集的正確率在90%左右,驗證集的準確率在80%左右,很明顯這是遠遠不能滿足實際的工業化部署要求。因此,通過數據增強之后得到訓練集約8 萬張,按照二八原則,80%為訓練集,20%為測試集,訓練100 個Epoch 后,得到如圖6、圖7 所示曲線。

圖6 數據增強- 訓練集Acc 曲線圖(橫坐標為樣本數,縱坐標為數據增強訓練集正確率)

圖7 數據增強- 驗證集Loss 曲線圖(橫坐標為樣本數,縱坐標為數據增強驗證集損失值)
通過曲線圖可以很清楚地看出,在使用數據增強技術之后,訓練集的準確率達到了99%左右,驗證集也達到了99%左右,模型的訓練效果較好,在測試集中,模型準確率達到100%,因此可認為模型具有較強的泛化能力,能夠快速準確地識別銀行卡卡號。
在模型都訓練結束之后,對其識別結果進行了可視化展示,選擇識別字體概率最大的框進行輸出,也就是卡號,具有良好的用戶交互式界面,方便用戶操作。效果如圖8 所示。

圖8 銀行卡號識別結果圖
本文主要介紹了基于深度學習的銀行卡卡號識別,包括了數據集的制作、卡號文本的定位及模型訓練與驗證,并著重介紹了CTPN 網絡算法,為銀行卡卡號文本檢測提供了一種有效方法,通過深度學習網絡DenseNet 進行模型訓練使其達到了應用級別,極大地提高識別的效率和正確率。