邸亮,涂俊翔,禹杰
(福州大學(xué) a.機(jī)械工程及自動(dòng)化學(xué)院; b.機(jī)電工程實(shí)踐中心, 福建 福州 350108)
字符識(shí)別是自動(dòng)抄表系統(tǒng)的核心技術(shù)之一。近年來(lái),隨著深度學(xué)習(xí)的發(fā)展,研究人員已經(jīng)提出了多種基于卷積神經(jīng)網(wǎng)絡(luò)的字符識(shí)別算法,識(shí)別性能得到不斷改善。卷積神經(jīng)網(wǎng)絡(luò)的優(yōu)勢(shì)在于卷積層具有良好的自學(xué)習(xí)能力,并且識(shí)別的泛化能力優(yōu)于傳統(tǒng)方法。
Lenet-5是由LECUN Y[1]提出的一個(gè)解決手寫(xiě)體數(shù)字識(shí)別問(wèn)題的卷積神經(jīng)網(wǎng)絡(luò),結(jié)構(gòu)簡(jiǎn)單且識(shí)別性能良好。此后研究人員對(duì)原網(wǎng)絡(luò)進(jìn)行不斷地改進(jìn),提高識(shí)別的準(zhǔn)確率和速度,并且還將改進(jìn)的Lenet-5網(wǎng)絡(luò)應(yīng)用于印刷體數(shù)字[2-3]、漢字[4]、單詞[5]以及植物[6]等識(shí)別問(wèn)題中。
水表數(shù)字的識(shí)別屬于印刷體數(shù)字識(shí)別的一種,其特點(diǎn)是隨著字輪的轉(zhuǎn)動(dòng)會(huì)在表盤(pán)數(shù)字區(qū)域出現(xiàn)半字符,而不完整數(shù)字的存在增加了識(shí)別的難度。目前,已有研究人員提出基于Lenet-5網(wǎng)絡(luò)的印刷體數(shù)字識(shí)別算法,例如街景門(mén)牌號(hào)[2]、車(chē)牌號(hào)碼[3]的識(shí)別,但未在水表數(shù)字識(shí)別中獲得有效的應(yīng)用。相關(guān)學(xué)者對(duì)水表數(shù)字識(shí)別的研究主要是采用模板匹配[7]、特征匹配[8]以及神經(jīng)網(wǎng)絡(luò)[9-10]等方法。高菊等[7]提出基于模板匹配與特征匹配相結(jié)合的水表數(shù)字識(shí)別算法,有效提高了識(shí)別精度,并且通過(guò)上下半字連續(xù)的待識(shí)別圖像與變字長(zhǎng)模板進(jìn)行匹配,實(shí)現(xiàn)半字符數(shù)字的識(shí)別。但文中算法過(guò)于繁瑣,降低了識(shí)別效率。尹遠(yuǎn)等[8]利用方向梯度直方圖(histogram of oriented gradient,HOG)提取數(shù)字的特征信息,再用訓(xùn)練好的支持向量機(jī)(support vector machine,SVM)進(jìn)行分類(lèi)識(shí)別。但文中未對(duì)表盤(pán)出現(xiàn)的半字符數(shù)字進(jìn)行識(shí)別研究,難以獲得有效的應(yīng)用。王長(zhǎng)旭等[10]提出基于神經(jīng)網(wǎng)絡(luò)的水表數(shù)字識(shí)別方法。通過(guò)兩個(gè)卷積神經(jīng)網(wǎng)絡(luò)分別實(shí)現(xiàn)對(duì)數(shù)字完整字符和半字符的識(shí)別,識(shí)別準(zhǔn)確率達(dá)到98%。但是對(duì)數(shù)字完整字符和半字符的識(shí)別需要用不同的神經(jīng)網(wǎng)絡(luò),過(guò)程較為冗雜。
本文在現(xiàn)有研究基礎(chǔ)上,為進(jìn)一步改善水表半字符數(shù)字的識(shí)別問(wèn)題,提高水表數(shù)字的識(shí)別精度,設(shè)計(jì)一種基于Lenet-5網(wǎng)絡(luò)組合特征融合的水表數(shù)字識(shí)別算法。
卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)是具有一定深度的前饋神經(jīng)網(wǎng)絡(luò),在訓(xùn)練過(guò)程中通過(guò)監(jiān)督學(xué)習(xí)調(diào)整網(wǎng)絡(luò)參數(shù),實(shí)現(xiàn)對(duì)圖像分類(lèi)或圖中目標(biāo)的檢測(cè)。CNN的特點(diǎn)是通過(guò)卷積獲取圖像的局部特征,并在同一特征圖內(nèi)共享卷積參數(shù),因此可以有效地減少網(wǎng)絡(luò)參數(shù),加速網(wǎng)絡(luò)的學(xué)習(xí)。CNN的基本結(jié)構(gòu)主要包括輸入層、卷積層、池化層、全連接層及輸出層。
CNN的輸入通常為待識(shí)別的圖像,尺寸為h×w×d,其中h為圖像高度,w為圖像寬度,d為圖像的通道數(shù),灰度圖像d為1,彩色圖像d為3。
卷積層由多個(gè)卷積核組成,通過(guò)卷積核在輸入圖像上的滑動(dòng),提取圖中的不同特征。其中卷積核的尺寸決定了輸出特征圖中每個(gè)像素點(diǎn)對(duì)應(yīng)輸入圖像上映射區(qū)域的大小,該映射區(qū)域稱(chēng)為感受野。卷積計(jì)算公式為
xij=f(Wij?xi-1+bij)
(1)
其中:xi-1表示上層特征圖;xij表示卷積核j對(duì)應(yīng)的輸出特征圖;Wij表示第j個(gè)卷積核的權(quán)重參數(shù);bij表示偏置值;?表示卷積運(yùn)算;f表示激活函數(shù)。
池化層對(duì)特征圖進(jìn)行信息過(guò)濾,實(shí)現(xiàn)縮減特征圖的尺寸[11],提高運(yùn)算效率,增強(qiáng)特征的魯棒性。極大池化是常用的池化方法,以局部接受域內(nèi)像素的最大值表示該區(qū)域。池化計(jì)算公式如下:
xi=Pooling(xi-1)
(2)
其中Pooling表示池化函數(shù)。
全連接層對(duì)提取到的特征進(jìn)行非線性組合,整合所有的局部特征信息。對(duì)于圖像分類(lèi)問(wèn)題,通過(guò)歸一化指數(shù)函數(shù)進(jìn)行分類(lèi),由輸出層輸出不同類(lèi)別的概率值,概率值最大的即為圖像的分類(lèi)標(biāo)簽。
本文提出的基于Lenet-5網(wǎng)絡(luò)組合特征融合的水表數(shù)字識(shí)別算法主要包括原始圖像預(yù)處理、神經(jīng)網(wǎng)絡(luò)的訓(xùn)練和測(cè)試,算法流程如圖1所示。
圖1 算法流程圖
本文以水表機(jī)芯代替水表,便于獲取表中不同數(shù)字的圖像,機(jī)芯表盤(pán)如圖2所示。原始表盤(pán)圖像可能存在噪聲、污損等現(xiàn)象,而且數(shù)字區(qū)域周?chē)年幱耙约皵?shù)字間高低位置的不同,造成數(shù)字分割和二值化過(guò)程較為復(fù)雜,處理不當(dāng)會(huì)在圖中產(chǎn)生難以去除的噪聲或數(shù)字結(jié)構(gòu)的缺失,影響后續(xù)識(shí)別的準(zhǔn)確性。因此本文為了簡(jiǎn)化表盤(pán)圖像預(yù)處理,采用原始彩色圖像作為數(shù)據(jù)集對(duì)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練和測(cè)試。
圖2 表盤(pán)圖像
首先采用Hough圓檢測(cè)提取原始圖像中的表盤(pán)圓,將表盤(pán)與背景分割,然后通過(guò)Hough直線檢測(cè)提取數(shù)字區(qū)域邊框,根據(jù)邊框頂點(diǎn)的坐標(biāo)從表盤(pán)圓分割出數(shù)字區(qū)域。由于數(shù)字滾輪寬度一致,采用等分策略分離數(shù)字,并對(duì)字符圖像進(jìn)行仿射變換實(shí)現(xiàn)數(shù)據(jù)擴(kuò)充,增加數(shù)據(jù)集的多樣性,提高網(wǎng)絡(luò)的魯棒性和泛化能力。半字符圖像表示流量示數(shù)介于二者之間,故以圖中較小數(shù)字命名圖像(9、0以9進(jìn)行命名)。最后將字符圖像的尺寸統(tǒng)一調(diào)整為32×28,部分彩色字符圖像數(shù)據(jù)集如圖3所示。
圖3 彩色圖像集
改進(jìn)的網(wǎng)絡(luò)模型如圖4所示。輸入層為字符圖像,圖像維度為32×28×3;卷積層有5個(gè),分別采用尺寸為3×3、1×3、3×1的卷積核進(jìn)行特征提??;池化層采用尺寸為2×2的窗口進(jìn)行特征降維;全連接層輸入節(jié)點(diǎn)個(gè)數(shù)為660,輸出節(jié)點(diǎn)個(gè)數(shù)為10,分別對(duì)應(yīng)數(shù)字0~9。池化層輸出經(jīng)過(guò)線性整流激活函數(shù)(rectified linear unit,ReLU)去線性。
圖4 改進(jìn)的網(wǎng)絡(luò)模型
根據(jù)文獻(xiàn)[12-13]所述,采用小尺寸的卷積核可以有效減少訓(xùn)練參數(shù),提高計(jì)算效率,因此本文以?xún)蓚€(gè)卷積核為3×3的卷積層替換原網(wǎng)絡(luò)的第一卷積層。如圖5所示,替換后,特征圖中各點(diǎn)對(duì)應(yīng)的感受野大小不變,而且前兩層卷積核均為6個(gè),卷積1_2層的卷積核深度為6,獲取的特征圖中的組合特征信息更加豐富。
圖5 3×3卷積替換5×5卷積
此外,文獻(xiàn)[13]還指出當(dāng)特征圖的尺寸在12~20之間時(shí),用非對(duì)稱(chēng)卷積核代替n×n的卷積核可以進(jìn)一步減少訓(xùn)練參數(shù),同時(shí)保證網(wǎng)絡(luò)的識(shí)別性能。本文在第一次池化后采用1×3和3×1的卷積層替換原網(wǎng)絡(luò)第二卷積層,每層卷積核為16個(gè)。如圖6所示,替換后卷積生成的特征圖中每個(gè)像素點(diǎn)對(duì)應(yīng)的感受野減小至3×3,像素點(diǎn)包含的全局信息減少而局部細(xì)節(jié)增多,有利于獲取更多的數(shù)字形狀特征,保證網(wǎng)絡(luò)準(zhǔn)確地識(shí)別半字符數(shù)字。
圖6 非對(duì)稱(chēng)卷積替換3×3卷積
本文在網(wǎng)絡(luò)結(jié)構(gòu)的調(diào)整中發(fā)現(xiàn),錯(cuò)誤識(shí)別的圖像多數(shù)為半字符圖像,主要由于數(shù)字半字符的尺寸較小以及數(shù)字間部分結(jié)構(gòu)的相似性所引起。在目標(biāo)檢測(cè)網(wǎng)絡(luò)中常采用多尺度的特征圖融合方法提高對(duì)小目標(biāo)檢測(cè)的準(zhǔn)確性,本文對(duì)非對(duì)稱(chēng)卷積前后的組合特征進(jìn)行串接融合,并將融合特征圖再次通過(guò)3×3的卷積層提取特征,提升網(wǎng)絡(luò)對(duì)半字符的識(shí)別能力。
本文算法實(shí)驗(yàn)環(huán)境為:Ubuntu操作系統(tǒng)、Python語(yǔ)言、Opencv等科學(xué)計(jì)算包,在TensorFlow深度學(xué)習(xí)框架下搭建神經(jīng)網(wǎng)絡(luò)。通過(guò)預(yù)處理得到24 000張彩色字符圖像,其中完整字符和半字符圖像各12 000張,每個(gè)數(shù)字約2 400張圖像,并且按照5∶1的比例分成訓(xùn)練集和測(cè)試集。訓(xùn)練過(guò)程中,學(xué)習(xí)率為0.001 5,采用Adam算法優(yōu)化訓(xùn)練參數(shù),迭代次數(shù)為10 000。
本文通過(guò)訓(xùn)練過(guò)程交叉熵?fù)p失函數(shù)的收斂性和測(cè)試階段識(shí)別的準(zhǔn)確性評(píng)估網(wǎng)絡(luò)的性能。在對(duì)原網(wǎng)絡(luò)的特征提取層進(jìn)行優(yōu)化后,訓(xùn)練參數(shù)大大減少。從圖7中可以看出,改進(jìn)網(wǎng)絡(luò)的損失函數(shù)收斂更快,迭代2 000次左右即可收斂至0值附近,并且隨著迭代次數(shù)的增加,損失函數(shù)穩(wěn)定趨于0值。
圖7 損失函數(shù)
表1為原網(wǎng)絡(luò)與改進(jìn)網(wǎng)絡(luò)的測(cè)試結(jié)果。原網(wǎng)絡(luò)對(duì)完整數(shù)字和半字符數(shù)字均產(chǎn)生錯(cuò)誤識(shí)別,而改進(jìn)后的網(wǎng)絡(luò)錯(cuò)誤識(shí)別均為半字符圖像。圖8為改進(jìn)網(wǎng)絡(luò)兩種典型的錯(cuò)誤識(shí)別圖像,圖8(a)是將示數(shù)為9的圖像識(shí)別為3,此類(lèi)錯(cuò)讀產(chǎn)生的原因可能是網(wǎng)絡(luò)的迭代次數(shù)不足,本文將該類(lèi)錯(cuò)讀圖像用迭代次數(shù)為11 000的網(wǎng)絡(luò)重新進(jìn)行識(shí)別,識(shí)別結(jié)果全部正確;圖8(b)是將示數(shù)為3的圖像識(shí)別為4,其中數(shù)字4處于圖像中間偏下位置,表明當(dāng)前示數(shù)介于3~4之間,但圖中上半字符結(jié)構(gòu)較小,難以區(qū)分,從而引起錯(cuò)讀。
表1 Lenet-5與改進(jìn)網(wǎng)絡(luò)的測(cè)試結(jié)果
圖8 錯(cuò)誤識(shí)別的圖像
表2為本文算法與一些典型水表數(shù)字識(shí)別算法[7-9]在識(shí)別性能上的比較。改進(jìn)網(wǎng)絡(luò)與原網(wǎng)絡(luò)對(duì)水表數(shù)字的識(shí)別時(shí)間基本相同,但網(wǎng)絡(luò)改進(jìn)后識(shí)別準(zhǔn)確率獲得明顯提高;模板匹配和特征匹配所設(shè)置的模板和特征個(gè)數(shù)少于CNN模型從數(shù)據(jù)集中提取的特征數(shù)目,BP神經(jīng)網(wǎng)絡(luò)由于節(jié)點(diǎn)數(shù)和層數(shù)較少,無(wú)法獲取圖中較深層的特征,故識(shí)別準(zhǔn)確率均低于本文算法。
表2 不同識(shí)別方法的準(zhǔn)確率和識(shí)別時(shí)間
本文設(shè)計(jì)的基于Lenet-5網(wǎng)絡(luò)組合特征融合的水表數(shù)字識(shí)別算法,采用字符原圖進(jìn)行訓(xùn)練,對(duì)原網(wǎng)絡(luò)的卷積層進(jìn)行優(yōu)化,并且通過(guò)卷積特征圖的融合提高識(shí)別精度,保證有效地識(shí)別半字符。實(shí)驗(yàn)表明,改進(jìn)網(wǎng)絡(luò)的檢測(cè)效率高,迭代次數(shù)為10 000、學(xué)習(xí)率為0.001 5的改進(jìn)網(wǎng)絡(luò)模型識(shí)別準(zhǔn)確率達(dá)到99.025%,識(shí)別精度明顯高于其他水表數(shù)字識(shí)別算法,有效提高了自動(dòng)抄表技術(shù)的可靠性。