雷 飛,孫 康,王雪麗
(北京工業(yè)大學 信息學部,北京 100124)
牛奶作為營養(yǎng)價值很高的飲品,已經成為了人們生活中不可或缺的一部分。隨著人們健康意識的提升,人們對牛奶的安全性也有了更高的要求。顯而易見,牛奶包裝上的生產日期和保質期是直接關系牛奶是否安全的重要標準之一[1]。
生產日期指產品在工業(yè)流水線上完成全部工序后,經過檢查并包裝成為可上市售賣的成品時的日期。當前牛奶廠家主要通過噴碼機來實現(xiàn)牛奶生產日期的噴印,噴印過程快速,且成本低廉。但在噴印過程中,難免會發(fā)生生產日期缺印、錯印等現(xiàn)象。針對此類現(xiàn)象,傳統(tǒng)人工檢測生產日期的方式,不僅檢測效率低下,還會增加生產成本[2]。因此對牛奶生產日期識別的研究具有重要的現(xiàn)實意義和廣闊的應用前景。
字符識別傳統(tǒng)算法如最近鄰算法[3]、模板匹配[4]、支持向量機[5]等,對復雜分類問題的數(shù)學表示能力有限,存在識別率低、處理速度慢等問題,不能滿足現(xiàn)實生產過程中牛奶生產日期識別的需求,因此急需一種新的方法來解決上述問題。
卷積神經網絡(convolutional neural networks,CNN)正是一種滿足牛奶生產日期識別需求的新方法,它是一種層與層之間局部連接的深度神經網絡。作為深度學習熱門的研究方向之一,卷積神經網絡已經被成功應用于車牌識別[6]、貨車列車車號識別[7]、行人檢測[8]等多個領域中。文中首先闡述了卷積神經網絡和LeNet-5[9]的結構,之后對LeNet-5模型的改進進行了詳細說明,使其能夠很好地應用于牛奶生產日期識別中。并設計了實驗方案,對比了改進后的LeNet-5模型與傳統(tǒng)BP神經網絡識別算法的性能,得到了改進后的LeNet-5在識別率上更優(yōu)的結論,并對進一步的研究工作進行了展望。
卷積神經網絡是人工神經網絡的一種,是引起人們廣泛重視的一種高效識別方法[10-14]。卷積神經網絡能夠將圖像直接作為網絡輸入,避免了前期圖像處理工作,是一種端到端的學習網絡模型,通過常用的梯度下降算法來訓練參數(shù),訓練好的卷積神經網絡能夠從圖像中學習到某些特征,并且能夠將圖像的特征進行提取和分類。
卷積神經網絡是一個多層的神經網絡,其基本結構包含輸入層、卷積層、池化層、全連接層及輸出層。
卷積神經網絡的輸入層能夠直接接收二維圖像,并且能夠主動提取輸入圖像的數(shù)據(jù)特征、學習分類器,無需人為參與,大大減少了人工預處理過程,有助于學習與當前分類任務最為有效的視覺特征。
卷積層是卷積神經網絡的基礎核心,主要用作圖像的特征提取。通過一個可學習的卷積核對上一層的特征圖進行卷積,再經過激活函數(shù),就能夠獲得新的特征圖。之后繼續(xù)對特征圖進行卷積,特征之間繼續(xù)組合卷積多個特征圖的值[15]:
(1)
卷積層之后緊跟著的是池化層。池化層通過減少網絡參數(shù)的方式來加快計算速度,并且也有一定防止過擬合的作用。一般地,池化層的形式如下式所示[15]:
(2)
卷積神經網絡的全連接層連接在多個卷積層和池化層之后。全連接層能夠重組卷積層或池化層中具有類別區(qū)分性的部分信息。一般地,全連接層的形式如下式所示[15]:
(3)
其中,xl代表全連接層l的輸出,wl代表全連接網絡的權重系數(shù),bl代表全連接層l的偏置項。
卷積神經網絡的輸出層,以全連接方式進行傳遞。最后一層隱含層可以是卷積層或池化層,所得到的多個二維數(shù)據(jù)矩陣被重新組合成一維向量,與輸出層以全連接的方式進行相連。該結構能夠發(fā)掘最后提取的特征與分類結果之間的映射關系,在復雜的運用中,輸出層可設為多層全連接。
LeNet-5模型是由Yan Lecun等人于20世紀90年代提出的一種卷積神經網絡模型,最初設計用于手寫數(shù)字的識別,是卷積神經網絡前期發(fā)展中最有代表性的實驗系統(tǒng)之一。LeNet-5模型共有7層(不包括輸入層),其中第1、3和5層是卷積層,第2和4層是池化層,第6層是全連接層,第7層是輸出層。其具體結構如圖1所示。
圖1 LeNet-5模型結構
因為LeNet-5模型是針對手寫數(shù)字識別設計的網絡,且考慮到網絡結構的復雜性不僅對模型訓練和識別時間有影響,而且對硬件設備要求極高,很大程度上影響到了識別系統(tǒng)的通用性和實用性。因此,文中對LeNet-5進行了改進,刪除了其C5層,將池化層S4直接與全連接層相連。改進后的LeNet-5結構如圖2所示。
圖2 改進后的LeNet-5結構
如圖2所示,改進后的LeNet-5輸入層輸入的是28×20像素大小的牛奶生產日期數(shù)字圖片。之后為第一個卷積層C1,它包含6個24×16大小的特征圖,其中特征圖是由一個5×5的卷積核與輸入圖像卷積之后,通過激活函數(shù)輸出得到的。在牛奶圖像卷積過程中,由于同一特征映圖上的神經元權值相同,因而網絡可以并行的學習,卷積層的結果將作為池化層S2的輸入,S2層的特征圖中的每個神經元以一個2×2大小的區(qū)域同C1層的特征圖相連,通過池化層后的特征圖個數(shù)不發(fā)生改變,大小縮小為原先的一半。
C3是第二個卷積層,S4則是第二個池化層,它們與C1、S2基本對應一致。FC包含256個神經元,與S4層進行全連接,并得到輸出的輸出層。輸出層包含10個神經元,分別對應數(shù)字0至9,并采用Softmax函數(shù)進行多分類,其具體公式如下所示:
(4)
其中,x表示全連接層的輸出。在激活函數(shù)方面,最初的LeNet-5模型采用的是Sigmoid函數(shù):
(5)
Sigmoid函數(shù)也被稱為Logistic函數(shù),它被用于隱含層神經元的輸出,其取值范圍為(0,1)。
Sigmoid函數(shù)在特征相差比較復雜或是相差不是特別大時效果比較好,但易發(fā)生梯度消失的情況,從而導致無法完成深層網絡的訓練。所以文中采用ReLU函數(shù)代替Sigmoid函數(shù)作為激活函數(shù),其中ReLU函數(shù)為:
R(x)=max(0,x)
(6)
相比Sigmoid函數(shù),ReLU函數(shù)只需要一個閾值就能得到激活值,計算復雜度低,并且能夠加快隨機梯度下降算法的收斂速度。
文中提出的基于改進LeNet-5的牛奶生產日期識別方法主要包括兩部分:網絡訓練和識別測試。其中,網絡訓練主要是對圖像數(shù)據(jù)集訓練實現(xiàn)CNN分類模型;識別測試主要是對待識別的牛奶生產日期圖像輸入訓練完成的模型進行識別,具體流程如圖3所示。
圖3 改進LeNet-5的識別流程
編程采用Python3.6結合TensorFlow框架對改進后的卷積神經網絡LeNet-5模型進行了仿真實驗,同時為了驗證改進LeNet-5的性能,收集到了實際來自不同品牌牛奶的生產日期圖像數(shù)據(jù)共200個,利用生產日期分割后的單個數(shù)字分別建立了1 000個訓練樣本集和200個測試樣本集。部分牛奶生產日期圖像如圖4所示。
圖4 部分牛奶生產日期數(shù)據(jù)
分割后的牛奶生產日期是不同數(shù)字的單字符圖像,文中利用邊框擴充背景像素的方式,使其滿足模型輸入層要求。同時牛奶生產日期多為點陣字符,圖像經過二值化處理后,日期各個點是分離的,不利于識別。為此針對點陣字符的特點,采用數(shù)學形態(tài)學中膨脹和細化的方式,使得點陣字符近似連接,便于圖像的訓練及識別。如圖5所示,左側為牛奶生產日期點陣字符,右側為該字符連接后圖像。
圖5 牛奶生產日期點陣字符連接圖
訓練學習首先要設置訓練參數(shù),其中學習率alpha和迭代次數(shù)epochs很大程度上決定了卷積神經網絡的整個訓練效果。學習率alpha是使用隨機梯度下降算法時梯度前面的系數(shù),該參數(shù)不能置得太大或太小,參數(shù)設置過大,易導致算法無法優(yōu)化;參數(shù)設置過小,則會發(fā)生優(yōu)化過慢及掉入局部最優(yōu)的現(xiàn)象。
迭代次數(shù)epochs表示的是系數(shù)更新之前遍歷訓練樣本集的次數(shù),同樣該參數(shù)不能置得太大或太小,參數(shù)設置過大,易導致訓練時間過長且效果并無顯著提升;參數(shù)設置過小,則訓練深度不夠。文中在實驗中將alpha設置為0.01,epochs設為32,每次訓練樣本batch為32張,每個epoch需要訓練100次,總迭代訓練3 200次。圖6為參數(shù)設置完成后,改進LeNet-5網絡訓練集的損失函數(shù)曲線。從圖中可以看出,迭代次數(shù)與損失函數(shù)值之間成反比,即迭代次數(shù)越大,損失函數(shù)值越小。并且在迭代250次上下時,訓練模型能夠得到較小的損失函數(shù)值,代表訓練已經有了充分收斂。
圖6 損失函數(shù)變化曲線
為了驗證改進LeNet-5模型的識別性能,與傳統(tǒng)的BP神經網絡識別算法進行了牛奶生產日期識別的正確率和識別耗時的比較。其中BP神經網絡隱含層取450個節(jié)點,學習率采用0.01,對比結果如表1所示。
表1 改進LeNet-5與BP算法識別性能比較
從表1可以看出,相較于BP神經網絡,改進LeNet-5網絡模型的識別率有著明顯的提升,但在運算速度上差異還是較為顯著的,但是基本能夠滿足實際應用情況。
提出一個用于牛奶生產日期識別的改進卷積神經網絡LeNet-5模型,主要是針對牛奶生產日期字符特點,對LeNet-5模型結構、激活函數(shù)以及網絡中各層特征圖的大小和數(shù)量進行了改進,在保證識別正確率的同時,加快了訓練和識別時間。與傳統(tǒng)BP神經網絡識別算法相比,改進后的LeNet-5模型識別方法擁有更高的準確率,并且識別速度能夠滿足實際應用需求。在下一步的工作中,將繼續(xù)對識別模型進行改進,并增大訓練集圖像樣本,以進一步提高識別率,并嘗試將其應用于其他食品生產日期的識別中。