張玉紅,白韌祥,孟凡軍,王思斯,吳 彪
(1.吉林建筑大學 電氣與計算機學院,吉林 長春 130118;2.長春設備工藝研究所,吉林 長春 130012;3.吉林省喬富建設股份有限公司,吉林 長春 130000)
當今社會的計算機技術不斷發(fā)展,圖像識別技術在許多領域中得到了應用。1950年,手寫的字體可以通過圖像識別技術進行識別。1965年,人們開始著手數字化圖像領域的識別研究。數字化圖像有下述幾種優(yōu)勢:便于縮減存儲空間,不易失真,圖片處理起來比較容易等。這些優(yōu)點促進了該領域的發(fā)展。目前對圖像識別的方法有統計模式識別、結構模式識別、模糊模式識別和深度學習[1]。
深度學習是人工智能中十分重要的部分,且最早在圖像處理中得以成功應用。在1989年加拿大教授 Yann Le Cun與其小組成員提出卷積神經網絡并得以應用。卷積神經網絡是帶有卷積結構的多層網絡,它解決了深層的神經網絡占用內存和內部參數多的問題,同時也緩解了模型在訓練時出現的圖像過擬合現象。剛一問世,卷積神經網絡就在小規(guī)模圖片集上獲得了當時世界上最好的成績,但受限于當時的理論及技術水平,在隨后相當長一段時間內,卷積神經網絡領域沒有得到太多的進展。2012年10月,加拿大教授Hinton與自己的小組成員在Image Net競賽中應用了卷積神經網絡技術,這使他們獲得了競賽的最好成績。通過這次競賽他們使神經網絡在圖像識別領域有了實質性的突破,這次之后,卷積神經網絡模型能夠識別和理解一般的自然圖片的內容[2]。
針對圖像識別,傳統的識別方法包括統計模式識別、結構模式識別和模糊模式識別。這些傳統的識別方法有自適應性能差的缺點,如果待識別的圖像存在比較大的殘缺或者有比較強的噪聲干擾,則傳統的識別方法就無法得到預期的結果。而深度學習則剛好彌補了傳統識別方法的這些劣勢,它大大提高了圖像識別準確率和模型在線運算速率,并且降低了提取待識別圖像特征的工作[3]。通過綜合考慮,本文在圖像識別中加入了卷積神經網絡技術。
卷積神經網絡的結構是根據大腦神經元而設計,其本質就是將一個個簡單的神經元連起來,利用每個底層的神經元提取圖像的信息,然后將許多這樣的神經元結合起來提取一個十分復雜的圖像信息,最終獲得圖像的高級語義特征[4]。圖片中提取的高級語義特征種類越多,則越可以體現圖片的主要內容,同時反映出對圖片的識別和理解能力也越強。
卷積神經網絡結構主要包括卷積層、池化層和全連接層。
1)卷積層。卷積層的運算是卷積神經網絡的重要組成部分,其主要作用是圖像特征的提取和抽象。而卷積層的核心則是卷積運算,卷積運算時,圖像應該先轉換成數值矩陣,然后再進行運算。假定有一個尺寸為6×6的圖像,每一個像素點里都存儲著圖像的信息。定義一個卷積核(相當于權重),用來從圖像中提取一定的特征(見圖1)。卷積核與數字矩陣對應位相乘再相加,得到卷積層輸出結果(見式1)。
圖1 特征值的卷積運算18×1+54×0+51×1+55×0+221×1+75×0+35×1+24×0+204×1=429
(1)
卷積核的取值在沒有以往學習的經驗下,可由函數隨機生成,再逐步訓練調整。當所有的像素點都至少被覆蓋一次后,就可以產生一個卷積層的輸出(卷積步長為1)(見圖2)。
圖2 卷積層的輸出
卷積層輸出值越高,就說明匹配程度越高,越能表現該圖片的特征。
2)池化層。池化層的作用主要是減少參數的數量,提高計算速度,并增強所提取特征的魯棒性,同時防止過擬合現象的發(fā)生,池化層一般放于卷積層之后,縮減模型的大小,降低特征維度。
最常見的2種池化層的形式:最大池化和均值池化。
以最大池化為例,池化層輸入的4×4矩陣,選用的池化層尺寸大小為2×2,池化步長為2,則最后可以得到2×2的池化輸出(見圖3),圖中粗線方框代表一次最大池化運算。
圖3 池化層的輸出
3)全連接層。卷積層和池化層的工作就是提取特征,并減少原始圖像帶來的參數。然而,為了生成最終的輸出,需要應用全連接層來生成一個等于所需要的類的數量的分類器。
全連接層的工作原理和之前的神經網絡學習很類似,需要把池化層輸出的張量重新切割成一些向量,乘上權重矩陣,加上偏置值,然后對其使用ReLU激活函數,用梯度下降法優(yōu)化參數即可。
本文設計的神經網絡結構包括5個卷積層、3個池化層和3個全連接層[5-6]。待識別圖片可以通過卷積層和池化層來提取圖片中的特征,而全連接層是把二維的特征圖變?yōu)橐痪S的特征向量。卷積神經網絡模型在預訓練時存在2個過程,即前向傳播與反向傳播。
1)前向傳播。每一層輸出的特征如下:
(2)
2)反向傳播。通過前向傳播對樣本的預測與網絡期望值的輸出來確定模型內部的參數。定義網絡的目標函數:
(3)
本文基于開源框架TensorFlow和Keras進行試驗研究。試驗配置:i5-4200U CPU和AMD Radeon HD 8600M series顯卡[7]。
數據集共分為3類,包括60張訓練模型優(yōu)化模型參數的訓練集、10張檢測訓練模型每次訓練結束后訓練效果的驗證集和10張測試圖樣識別模型的測試集。選擇2張圖樣,其中用紅綠藍三色圖作為正確的圖樣(見圖4);用非紅綠藍三色圖作為錯誤的圖樣(見圖5)。分別在不同角度拍攝40張照片,每張圖樣取30張拍攝的照片作為訓練網絡參數的訓練集,再各取5張照片作為檢測訓練模型訓練結果的驗證集,則每張圖樣剩余的5張照片作為測試集。
圖4 用作正確的圖樣
圖5 用作錯誤的圖樣
本次訓練中通過40個epoch來更新學習率,在訓練開始時設一個較大的學習率,隨著學習過程中系統總誤差的減小,學習率也逐漸減小,每當完成一次epoch訓練,將最佳權重保存至特定的文件,以便后期神經網絡模型的部署,訓練過程中使用隨機梯度下降法對訓練系統進行優(yōu)化,同時使用minibatch訓練加快模型收斂。訓練模型流程圖[8-12]如圖6所示。在完成40個epoch訓練后,保存了訓練中的最佳權重,在模型預測中則直接調用已保存的最佳權重進行模型預測參數初始化,開始對圖片進行預測。待測圖片識別流程圖如圖7所示。
圖6 訓練模型流程圖
圖7 圖片識別流程圖
在訓練開始之前,先加載需要訓練的圖片,對訓練集進行預處理,包括圖片歸一化、圖片通道統一等,然后進行模型的搭建并進行訓練,即開始前向傳播和反向傳播,反向傳播采用隨機梯度下降法進行優(yōu)化,每完成一次優(yōu)化則進行一次判斷是否結果更優(yōu),如果更優(yōu),則更新相關的權重,否則判斷是否完成所有epoch訓練,如果未完成則返回訓練模型繼續(xù)訓練,否則整個模型訓練完成。
在神經網絡模型預測中,先加載已經訓練完成的模型參數,加載圖片分類的標簽值,以便模型后續(xù)預測結果輸出,然后在用戶端傳入需要分類的圖片,系統得到待識別的圖片后,顯示進行圖片的預處理,將相關的參數進行統一化,使用已經加載的神經網絡進行預測,最后輸出當前圖片的識別結果,完成整個圖像識別的流程。
本次設計的訓練模型在訓練過程中模型訓練的迭代次數最大為40,選用的塊大小為128,通過采用GPU模式來加速神經網絡的訓練,在訓練模型中加入了Dropout正則化[13]對系統進行優(yōu)化處理來防止訓練過程中發(fā)生過擬合現象,同時對數據集照片進行圖集擴充,如:旋轉、縮放、翻轉等,模型對擴充以后的數據集在訓練過程中也無發(fā)生過擬合現象。由損失函數曲線圖(見圖8)可知,訓練模型訓練到后期時,隨著模型學習率逐漸降低,損失函數也保持穩(wěn)定下降,當卷積神經網絡的訓練模型在迭代次數達到25次時,損失函數的曲線就開始逐漸趨向于穩(wěn)定。而根據模型訓練的準確率曲線圖(見圖9)可知,在剛開始幾次中,訓練模型的準確率偏低,這是由于模型訓練迭代次數較少而導致的模型參數沒有得到最優(yōu)化,不過在模型訓練迭代次數逐漸增加的過程中,同時模型數據集的識別率也逐漸提高,當卷積神經網絡訓練模型在更迭次數達到25次時,模型的準確率曲線圖也逐步趨于穩(wěn)定。綜合2張曲線圖可知,該模型迭代25次時達到模型的最佳迭代次數。通過采用一種基于卷積神經網絡而設計的訓練模型,其準確率可達到96%。
圖8 損失函數下降曲線
圖9 訓練模型識別準確率曲線
本文基于卷積神經網絡AlexNet設計的圖像識別模型,對于小規(guī)模的圖像分類,即使對數據加入旋轉、縮放、翻轉,預測時仍然保持穩(wěn)定的精確度。但是面向大規(guī)模圖像分類還有待提高,未來的工作將進一步調整網絡框架、網絡內部優(yōu)化學習更精確的特征表達,使得該訓練模型具有更好的應用前景。隨著這一領域理論的不斷深入研究,圖像識別和理解中的卷積神經網絡應用將會有更好的發(fā)展。