蔡媛,胡年一,孫勇強,呂學偉
(淮陰師范學院,江蘇 淮安 223001)
傳統的公交支付方式主要投幣、刷卡、手機支付等,這些支付方式在支付過程有很大缺陷。例如投幣要求乘客事先準備好零錢,而且在高峰期存在司機不能完全顧及乘客是否全部投幣成功,刷卡支付和手機支付存在著忘記帶卡、手機欠費、手機沒電等問題。而且不管是現金、公交卡、手機,尋找這些實物可能會花費較多的時間,從而影響支付速度,在上下班的高峰期這個問題變得尤為突出。這些都會給出行帶來不便,甚至造成無法乘車的尷尬局面。因此如何設計一個高效、方便的公交支付系統成為目前迫切需要解決的問題。人臉識別技術是目前流行的一種技術,目前被主要用于身份識別,其優點是通過人臉信息就可以確定身份,將其應用公交支付領域就可以擺脫需要借助實物來完成支付的問題,并可以提高支付速度,解決傳統支付方式中存在的問題。
近年來,卷積神經網絡是一種流行的人工智能技術,其主要與卷積層和池化層相關聯,人工神經元可以響應周圍的單元,從而可以從事大規模的圖像處理工作。卷積神經網絡有3個級別,包括卷積一維神經網絡、二維卷積神經網絡和三維卷積神經網絡。每個級別負責各種工作主題,包括一維數據處理。對于二維,其主要功能是識別圖像文本。最后,從三維角度來看,其主要功能是醫學、視頻數據識別、自然語言處理等領域[1-2]。
利用卷積神經網絡的人臉識別技術,結合當前流行的Python 語言和penev、Keras 來開發人臉識別系統,將讓人臉識別更智能,并且基于卷積神經網絡還可以對人臉識別數據進行專業化的人臉識別AI 系統訓練,提高人臉識別效果和準確性[3-4]。
VGG16是一個深度卷積神經網絡架構,由多個卷積層和池化層交替堆疊而成,最后使用全連接層進行分類。因其網絡結構的簡單性和易實現性被廣泛應用于圖像分類的視覺任務中。VGG16 神經網絡基本結構如圖1所示。

圖1 VGG16神經網絡基本結構

圖2 計算余弦相似性公式
圖1中,224×224×3的彩色圖表示3通道的長和寬都為224的圖像數據,也是網絡的輸入層(彩色圖像有RGB 三個顏色通道,分別是紅、綠、藍三個通道,這三個通道的像素可以用二維數組來表示,其中像素值由0到255的數字來表示。)
1.1.1 卷積計算
1)輸入圖像尺寸為224×224×3,經64 個通道為3的3×3 的卷積核,步長為1,padding=same 填充,卷積兩次,再經ReLU 激活,輸出的尺寸大小為224×224×64。
2)經max pooling(最大化池化),濾波器為2×2,步長為2,圖像尺寸減半,池化后的尺寸變為112×112×64。
3)經128 個3×3 的卷積核,兩次卷積,ReLU 激活,尺寸變為112×112×128。
4)max pooling池化,尺寸變為56×56×128。
5)經256 個3×3 的卷積核,三次卷積,ReLU 激活,尺寸變為56×56×256。
6)max pooling池化,尺寸變為28×28×256。
7)經512 個3×3 的卷積核,三次卷積,ReLU 激活,尺寸變為28×28×512。
8)max pooling池化,尺寸變為14×14×512。
9)經512 個3×3 的卷積核,三次卷積,ReLU,尺寸變為14×14×512。
10)max pooling池化,尺寸變為7×7×512。
11)然后Flatten(),將數據拉平成向量,變成一維51 277=25 088。
12)再經過一層7×7×4096,一層1×1×4096,一層1×1×2622的全連接層(共三層),經ReLU激活。
13)最后通過softmax輸出2622個預測結果。
1.1.2 權重參數
盡管VGG16的結構簡單,但是所包含的權重數目卻很大,達到了驚人的139、357、544 個參數。這些參數包括卷積核權重和全連接層權重。
本訓練模型計算全連接層的權重參數數目的方法為:前一層節點數×本層的節點數。因此,本系統訓練模型全連接層的參數分別為:
7×7×512×4 096=102 760 448
4 096×4 096=166 777 216
4 096×2 622=10 739 712
在圖像分類中應用余弦相似度算法的關鍵在于:把圖像看作向量,計算這些代表每個圖像特征的向量的內積空間的夾角余弦值,從而度量圖像之間的相似性[5]。
以二維空間為例,兩個向量,a和b,我們需要計算它們的角度θ。假設向量[x1,y1]和向量是b[x2,y2],數學家已經證明這種余弦計算方法也適用于三維向量[5]。假設A和B是三維向量,A[A1,A2,...,An]和B[B1,B2,...,Bn],則A和B之間的余弦角θ 為:
把圖像看作向量,通過余弦公式計算圖像向量余弦值,從而確定圖像的相似程度,進而判斷圖像是否為同一幅圖像。
人臉識別公交支付系統是利用基于卷積神經網絡的人臉識別技術來獲取人臉信息作為乘客的身份標識,以此標識為依據來完成費用支付,為了達到這個目的,系統的功能模塊有:人臉識別模塊、個人信息管理模塊、費用信息管理模塊、統計分析模塊等。
1)人臉識別模塊主要用于實現人臉識別,提取人臉的數字化信息,并將其存入數據庫。
2)個人信息管理模塊主要是對個人信息進行增、刪、改、查操作,如人臉信息、身份信息等。
3)費用管理模塊主要完成對用戶和公司費用的管理,如用戶費用余額、用戶費用的明細等。
系統的功能模塊圖如圖3所示。

圖3 功能設計圖
1)拍攝面部圖像:當乘客接近公交車前門并將頭對準面部設備的前部時,攝像頭會自動拍攝面部圖像。
2)獲取圖像信息:乘客確認上傳后,系統進行處理,并傳輸圖像進行相似度的比較。
3)后臺扣款操作:傳輸人臉信息數據到后臺,需要判斷信息中的年齡,如果年齡大于等于60歲,則無須扣款。如果年齡小于60歲,則進行扣款操作。
4)確認付款信息:后臺將相關結果傳輸到前端設備,前端設備接收信息并將信息顯示到客戶端,并且提醒支付成功。
流程圖如圖4所示:

圖4 系統流程圖
1)更新數據庫人臉信息
利用SQL查詢語句,把數據庫表中所有數據循環讀取出來,放入input_table獲得行和列信息,圖像保存在本地的數據庫路徑中,接著深度學習的特征讀取器找出照片的特征向量。通過ID 判斷人臉信息是否存在,不存在就需要將圖像錄進去。接著,判斷圖像的狀態,如果為真,把拍攝的圖像給保存下來,并將它的數據流數據保存在數據庫中,并且更新數據庫。
2)提取人臉特征向量
讀取數據庫中的數據(已有的相關數據),接著把QT 界面中的數據刷新,然后調用VGG16 人臉識別模型提取模型,接著把已有的數據庫的圖像特征生成底庫。通過定義面部正面探測器,設置模型輸入的大小,同時打開攝像頭獲取圖像時,本系統設置10幀判斷一次,隔10幀后將圖像拿出來,然后對當前幀做一個人臉檢測,接著將人臉檢測的結果摳出來,去獲取人臉臉部信息的大致數據。對人臉數據做一個預處理,然后預處理完之后,根據訓練好的模型去做人臉信息特征提取。比較人臉特征有沒有和數據庫中圖像的特征向量相似或不像,如果相似度大于0.5的話,則證明識別的人臉和底庫中的人臉為同一個人。所以調用face.py中計算余弦相似度的函數,運算兩個特征向量之間的距離即可。如果識別成功,人員相關信息就展示出來。
3)讀取乘客身份信息
此時數據字典鍵值對發揮用處,人臉圖像數據對應一行相應的個人信息,查詢數據并進行數據更新后,支付成功后音樂響起,提示扣款成功,表示支付完成。
系統的數據交互圖如圖5所示。

圖5 數據交互圖
1)系統感應到人,自動打開主界面,功能界面如圖6所示:

圖6 主界面
2)人臉信息錄入功能包括用戶姓名、余額、年齡、身份證輸入,打開攝像頭人臉進行圖片獲取,最后所有信息輸入完成后點擊上傳按鈕,同時并行操作的是所有管理人臉數據導入數據庫底庫。功能界面如圖7所示:

圖7 人臉信息錄入界面
3)個人信息管理功能主要提供個人信息數據和人臉信息的修改。功能界面如圖8所示:

圖8 人臉信息管理界面
4)人臉識別支付功能的目的是攝像頭識別人臉信息后,對該信息進行處理,然后以此為依據查詢數據庫,完成支付功能,并顯示相關信息。功能界面如圖9所示。

圖9 人臉識別支付界面
本系統致力于將人臉識別技術應用于公交支付領域,利用卷積神經網絡來實現人臉快速識別,開發基于人臉識別的公交支付系統。該系統以車載圖像采集設備獲取人臉圖像信息,對該信息加密后通過移動網絡傳輸給后臺服務器,然后利用卷積神經網絡16層圖像識別模型對人臉圖像信息進行準確、快速地識別,從而完成身份確認和賬戶扣款。公交人臉識別支付系統豐富了公交支付手段,提高了支付效率。