楊博文 阮潔 李紀豪 陳志江
中國民航大學 天津 300300
商品的生產(chǎn)日期與商品的其他信息一樣,對于商品質(zhì)量的監(jiān)管具有重要的作用[1]。然而,目前對于商品生產(chǎn)日期的自動化識別和管理技術的發(fā)展相較其他產(chǎn)品信息識別技術卻大大落后。例如,通常超市等零售終端使用的掃碼槍等僅能識別一維碼或二維碼所攜帶的品名、商品編號、售價等信息。而生產(chǎn)日期信息卻需要超市工作人員肉眼識別錄入或由消費者在購買商品時自行識別,常有產(chǎn)品過期仍在銷售的情況出現(xiàn)。對于商家的信譽和消費者的權益都產(chǎn)生不良影響[2]。所以針對商品日期識別技術展開科學研究,具有一定應用價值及現(xiàn)實意義。
商品生產(chǎn)日期的識別問題本質(zhì)上是字符識別的問題。傳統(tǒng)的字符識別算法如最近鄰(KNN)算法、模板匹配、支持向量機(SVM)等,對漢字、字母與數(shù)字混合復雜字符串的分類問題有識別能力差、處理速度慢等問題,雖然卷積神經(jīng)網(wǎng)絡對相同字符集的識別速度高于以上所提算法,但卻存在著由于網(wǎng)絡層次太多、網(wǎng)絡訓練參數(shù)太多而引起的識別準確度下降,即網(wǎng)絡模型退化問題[3]。殘差神經(jīng)網(wǎng)絡既可以使識別需求得到有效滿足,還可以使網(wǎng)絡模型退化問題得到有效解決,使自身具備許多優(yōu)良特點,因而被廣泛應用在人臉識別、目標檢測、行人檢測、語義分割、自然語言處理等[4]多個領域。
因此,本文提出了一種基于殘差神經(jīng)網(wǎng)絡進行商品生產(chǎn)日期自動識別的方法。對字符集的確認、圖像預處理、殘差神經(jīng)網(wǎng)絡的設計和字符語義分析等內(nèi)容進行了研究。并給出了實驗結果。
根據(jù)國家相關標準要求和生活經(jīng)驗,國內(nèi)商品的生產(chǎn)日期大多由數(shù)字、年月日等漢字、個別英文字母和少數(shù)特殊符號等組成,只是不同生產(chǎn)廠家或不同商品的生產(chǎn)日期中,這些符號的組合格式有所區(qū)別。在進行生產(chǎn)日期的殘差神經(jīng)網(wǎng)絡算法設計之前,首先要確定生產(chǎn)日期基本字符的集合。這一集合應包含所有可能在生產(chǎn)日期信息中出現(xiàn)的漢字、字符、數(shù)字和特殊符號等。并且盡可能縮小字符集的大小。如果字符集無法包含所有可能字符,會降低生產(chǎn)日期的可識別率,如果字符集過大,則會增加神經(jīng)網(wǎng)絡識別算法的負擔和復雜度。經(jīng)過查閱國家標準并對采集的500份生產(chǎn)日期圖片進行分析,如圖1展示的采樣圖像所示,最終確定待識別的生產(chǎn)日期基本字符集共包含48個元素,確定其集合并分為4個大類:0~9的10個阿拉伯數(shù)字、{年、月、日、保、質(zhì)、期、至、之、前、最、佳}這11個漢字、{“:”“/”“.”}三個特征字符、除O和I兩個容易與0和1混淆的字母以外24個英文字母。
圖1 部分采樣出生日期圖像數(shù)據(jù)
字符識別系統(tǒng)一般包括圖像采集、字符識別算法處理以及數(shù)據(jù)后續(xù)處理三大模塊。如圖2所示,系統(tǒng)首先通過工業(yè)相機對含有目標字符集的商品外包裝圖像進行采集,后對圖像進行字符識別算法處理,即對所采集圖像進行必要的圖像預處理操作、從復雜的圖像中提取目標區(qū)域的字符定位操作、將目標區(qū)域分割成多個單一字符以便制成目標字符集的字符分割操作以及字符識別操作,最后對系統(tǒng)給出的字符信息進行語義分析從而輸出所需的商品生產(chǎn)日期和有效期限。
圖2 字符識別系統(tǒng)結構圖
圖像預處理。進行圖像預處理的核心目的就是去除大部分圖像干擾,從而提取出最有效的真實信息,實現(xiàn)對數(shù)據(jù)的有效簡化以及對信息可檢測性的有效加強。這一方式可以使識別與匹配、圖像分割和特征提取等后續(xù)各個環(huán)節(jié)的可靠性得到進一步的加強[5]。對采集的生產(chǎn)日期圖像數(shù)據(jù),通過灰度化將彩色圖像轉(zhuǎn)化為矩陣數(shù)據(jù),借助高斯濾波去除雜波,再經(jīng)過閾值分割將灰度圖像轉(zhuǎn)化為二值圖像,達到分離字符和背景區(qū)域的目的。
字符定位?;趯嶋H情景中干擾因素多、時長以及原始數(shù)據(jù)集的匱乏等原因,選用基于數(shù)學形態(tài)學與連通域的字符定位方法定位目標區(qū)域。首要步驟是開運算處理已經(jīng)被預處理過的圖像,即先腐蝕圖像后讓其膨脹,從而實現(xiàn)對噪聲的有效去除。再利用canny邊檢測器找到圖像輪廓,如何進行形態(tài)學處理,即依次進行閉運算,兩次開運算,得到主要的連通域,最后按照主要連通域的輪廓提取,從而定位生產(chǎn)日期區(qū)域。
字符分割。通過對垂直投影法的使用,分別在垂直及水平方向針對預處理圖像當中包含的某類像素展開統(tǒng)計,如果面對的是二值圖像,則針對其中的白點或者黑點展開統(tǒng)計,就能夠按照統(tǒng)計結果得出每一列和每一行分別對應的左右邊界和上下邊界,從而有效分割字符。如圖3所示為一張生產(chǎn)日期采樣圖像的預處理、字符定位、字符分割三大操作的效果圖。
(a)采樣圖像 (c)圖像輪廓 (e)定位結果
殘差神經(jīng)網(wǎng)絡與普通神經(jīng)網(wǎng)絡最大的區(qū)別是殘差網(wǎng)絡。而殘差網(wǎng)絡主要使用兩種模塊,分別是恒等模塊和卷積模塊,而使用哪種模塊取決于輸入輸出的維數(shù)是否一致[6]。恒等模塊建立了連接輸入端與輸出端處的非線性激活函數(shù)層的恒等映射,這使模塊的輸入與輸出可以先相合,再激活,從而使殘差單元以跨層連接的形式實現(xiàn)。對于輸入輸出維數(shù)不同的情況,殘差單元采用卷積模塊,卷積模塊將恒等模塊中的跨層連接映射改為卷積層和批歸一化層,使在結尾部分中輸入的維數(shù)與該殘差單元的輸出維數(shù)相匹配。
本文使用卷積模塊和恒等模塊來建立殘差神經(jīng)網(wǎng)絡,同時為了延緩因樣本較少而導致的過擬合問題,殘差神經(jīng)網(wǎng)絡的層數(shù)應盡量簡化,如圖4所示描述了改進的神經(jīng)網(wǎng)絡的結構細節(jié)。其中,輸入端用3×3的值為0的模板將輸入補齊到相應維數(shù)。從第一部分到第四部分,卷積層均是采用64個尺寸為7×7的卷積核,最大池化層:3×3規(guī)格的池化核,池化核、卷積核步長均為2。而各部分的主路徑則為3×3尺寸且步長為1的卷積核,其中捷徑部分二維卷積具有步長為1且1×1尺寸的卷積核。全局平均池化將池化窗口形狀設置成輸入的高和寬而全連接層則將維數(shù)減少到softmax分類函數(shù)的維數(shù)。
圖4 殘差神經(jīng)網(wǎng)絡結構示意圖
語義研究是在對字符和數(shù)字進行分類識別的基礎上,確定某一字符的具體含義。殘差神經(jīng)網(wǎng)絡能夠識別和區(qū)分基本字符集中的每一個字符,但并不能給出每個字符的語義內(nèi)容。例如,殘差神經(jīng)網(wǎng)絡能夠識別生產(chǎn)日期中的一個字符是“2”,但并不能判斷這個“2”是代表的月份信息還是年份信息。語義分析就是要解決這一問題。本文則利用目標字符集的各個單一字符位置和字符信息進而轉(zhuǎn)換為目標字符串,分析商品生產(chǎn)日期格式可知,利用“年”“月”“日”“生產(chǎn)日期”“保質(zhì)期至”“之前最佳”以及“:”“/”“.”等關鍵字符設定特定的正則表達式,從而從字符串中提取日期信息,并統(tǒng)一格式輸出日期信息,并利用日期信息的大小得出生產(chǎn)日期和有效截止日期。
為了對比改進的殘差神經(jīng)網(wǎng)絡與卷積神經(jīng)網(wǎng)絡對生產(chǎn)日期圖像的識別效果,對兩種神經(jīng)網(wǎng)絡結構訓練時采用相同的參數(shù)設置,給定相同的數(shù)據(jù)集,觀測改進的殘差神經(jīng)網(wǎng)絡的識別準確率和識別速度,能否達到實際使用情景的要求。
編程使用Python3.8結合OpenCV框架分別對殘差神經(jīng)網(wǎng)絡和卷積神經(jīng)網(wǎng)絡LeNet-5模型進行了仿真實驗,同時收集了實際生活情景中常見的商品生產(chǎn)日期圖像數(shù)據(jù)共500個,用于訓練、驗證對比兩種神經(jīng)網(wǎng)絡的性能。利用生產(chǎn)日期圖像分割得到的字母、漢字、符號、數(shù)字4種字符集,共計48個字符類別分別建立了250個訓練樣本集和50個測試樣本集。圖5為商品生產(chǎn)日期部分圖像數(shù)據(jù)。
圖5 部分商品生產(chǎn)日期圖像
訓練學習的首要任務就是對訓練參數(shù)進行設置,而對神經(jīng)網(wǎng)絡訓練效果造成決定性影響的往往是迭代次數(shù)epochs及學習率Ir。學習率Ir是使用梯度下降算法中梯度前面的系數(shù),該參數(shù)需要適當取值,若取值過大,無法實現(xiàn)網(wǎng)格參數(shù)的優(yōu)化;假設取值太小,則有可能因為優(yōu)化速度過慢而導致局部最優(yōu)難以脫離。除此之外,ReLU函數(shù)大多數(shù)輸出值非正值時,輸入值會在激活后歸零,從而導致神經(jīng)元“死亡”,對學習率的調(diào)節(jié)可使該問題得到有效緩解。作為用來表示神經(jīng)網(wǎng)絡遍歷樣本集的具體次數(shù),迭代次數(shù)epochs的取值也必須適當,過大取值會使訓練時間太長且難以得到明顯改善,過小取值會導致識別精度受到不良影響。在實驗中將Ir取為0.001,epochs取為100。
為實現(xiàn)對殘差神經(jīng)網(wǎng)絡識別性能的有效驗證,特別選用卷積神經(jīng)網(wǎng)絡對應的LeNet-5模型展開對比實驗。將學習率和迭代次數(shù)分別設為0.001和100,可以得出如下表所示的對比結果。
兩種神經(jīng)網(wǎng)絡結構的識別性能對比表
從上表可知,相較于卷積神經(jīng)網(wǎng)絡,殘差神經(jīng)網(wǎng)絡的識別準確率并無大幅提升,但是在運算速度上有著明顯提升,基本滿足實際應用情況。
本文描述了商品生產(chǎn)日期識別算法的主要流程,同時基于殘差神經(jīng)網(wǎng)絡的網(wǎng)絡原理,主要為了降低對樣本量的要求,對殘差神經(jīng)網(wǎng)絡結構、網(wǎng)絡殘差塊中卷積模塊、恒等模塊的卷積核以及各層維數(shù)進行了改進,在保證識別準確率的情況下,簡化網(wǎng)絡結構。對比卷積神經(jīng)網(wǎng)絡而言,殘差神經(jīng)網(wǎng)絡識別速度更快,識別精度更高。