胡 鋇,趙江銘,張小琛,高建設(shè)
(鄭州大學(xué)機(jī)械工程學(xué)院,河南 鄭州 450001)
目前,使用DM二維碼來進(jìn)行無人駕駛小車(AGV)的導(dǎo)航定位技術(shù)已經(jīng)被人們所應(yīng)用[1],但局限于目前已有的二維碼定位方法精度較低,二維碼內(nèi)部信息資源浪費(fèi)等問題,無法達(dá)到實(shí)際應(yīng)用要求,因此導(dǎo)航方式多采用激光、超聲波、雷達(dá)等多種方式的混合導(dǎo)航[2]。其中,二維碼導(dǎo)航多處于從屬地位。因此,在導(dǎo)航識(shí)別中采用一種自主研發(fā)的新編碼規(guī)則生成的非標(biāo)準(zhǔn)DM碼,解決了有效利用DM 碼內(nèi)部信息內(nèi)容、減少冗余信息、高效利用條碼內(nèi)部位置資源的問題。相對(duì)于其他類型的二維碼來說,非標(biāo)準(zhǔn)DM碼具有成本低廉,使用方便,且可與內(nèi)容信息相融合的特性,如能提高識(shí)別精度,必然可以大大減少導(dǎo)航系統(tǒng)的成本。非標(biāo)二維碼雖然有上述優(yōu)點(diǎn),但相較于QR碼定位較為困難。針對(duì)這種情況,2012年,文獻(xiàn)[3]提出了一種基于Gabor濾波和BP神經(jīng)網(wǎng)絡(luò)的DM碼區(qū)域提取方法。雖然該方法大大提高了準(zhǔn)確率,但實(shí)現(xiàn)過程過于繁瑣。首先需要用不同尺度不同方向的Gabor濾波器對(duì)圖像進(jìn)行機(jī)械能濾波提取其紋理特征,其次需要進(jìn)行特征變換,使所得特征具有尺度和旋轉(zhuǎn)不變性;然后利用BP神經(jīng)網(wǎng)絡(luò)按照簽署特征對(duì)像素進(jìn)行分類,經(jīng)過形態(tài)學(xué)后,才能對(duì)條碼區(qū)域進(jìn)行處理。2016年,浙江大學(xué)提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)的二維碼定位算法[4]。該方法首先將一個(gè)完整的含有二維碼的圖片分塊成若干個(gè)區(qū)域,然后分別對(duì)其進(jìn)行訓(xùn)練識(shí)別;利用卷積神經(jīng)網(wǎng)絡(luò)作為一個(gè)二分類器,對(duì)可能為二維碼的區(qū)域輸出為正類,對(duì)非二維碼的背景區(qū)域輸出為負(fù)類;最后再對(duì)二維碼區(qū)域的圖片進(jìn)行整合,以將其還原成一個(gè)完整的二維碼圖片。該方法過程繁瑣,需要時(shí)間冗長(zhǎng),且易產(chǎn)生誤差。
為解決上述問題,提出了利用SegNet網(wǎng)絡(luò)對(duì)二維碼區(qū)域進(jìn)行提取的方法,完成了含有目標(biāo)對(duì)象的圖片的語(yǔ)義分割。所謂語(yǔ)義分割,就是指機(jī)器自動(dòng)從圖像中分割出對(duì)象區(qū)域,并實(shí)現(xiàn)其內(nèi)容識(shí)別[5]。相較于以往所提區(qū)域提取方法,該法更為簡(jiǎn)潔。首先不需對(duì)圖片進(jìn)行紋理分析或者特征變換,可直接實(shí)現(xiàn)定位;其次該法不需經(jīng)歷將完整的含有二維碼的圖片先拆分再進(jìn)行合成的繁雜冗長(zhǎng)過程,降低了合成過程中的誤差,大大提高了識(shí)別效率、識(shí)別準(zhǔn)確性及魯棒性。
SegNet 網(wǎng)絡(luò)可以避免計(jì)算卷積以及重復(fù)存儲(chǔ)像素塊等問題,相比于傳統(tǒng)的用作圖像分割的CNN卷積神經(jīng)網(wǎng)絡(luò),SegNet更具效率。
早在2016 年,SegNet 網(wǎng)絡(luò)被Badrinarayanan 首次作為一種新型的深度卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)所提出,該網(wǎng)絡(luò)與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)有一定的相似性,其訓(xùn)練方式都是通過端到端來對(duì)像素集進(jìn)行分類;其不同的部分在于SegNet網(wǎng)絡(luò)是由編碼層和解碼層共同組成。其中,編碼層的功能主要是用來提取圖像特征,利用池化操作使得圖像尺寸持續(xù)縮小,在池化操作時(shí),編碼器也會(huì)存儲(chǔ)池化操作后的位置信息,并對(duì)所有進(jìn)行卷積操作后的輸出數(shù)據(jù)進(jìn)行歸一操作,最后使用激活函數(shù)來進(jìn)行激活操作。解碼層即是利用上采樣將編碼層縮小后的圖片還原成原圖片大小的一個(gè)步驟。在解碼的過程中,不斷的從編碼器中釋放出所存儲(chǔ)的位置信息,通過編碼器所存儲(chǔ)的最大池指數(shù)來對(duì)圖像進(jìn)行不斷的補(bǔ)全,從而完成上采樣操作。因?yàn)镾egNet網(wǎng)絡(luò)具有較多的層數(shù),所以它能夠更為準(zhǔn)確的對(duì)圖像進(jìn)行特征提取。SegNet網(wǎng)絡(luò)通過加入編碼層和在解碼層中釋放出利用已經(jīng)存儲(chǔ)過的最大池指數(shù)的方法存儲(chǔ)的特征信息,與此同時(shí),SegNet網(wǎng)絡(luò)也大大提高了訓(xùn)練的準(zhǔn)確率通過減少訓(xùn)練每層卷積層的規(guī)范化和激活操作的時(shí)間。
SegNet網(wǎng)絡(luò)結(jié)構(gòu),如圖1所示。其中,Input表示的是輸入圖片,Output表示的是輸出圖像,其中每個(gè)顏色代表不一樣的分類類別。語(yǔ)義分割的主要意義就在于不僅表現(xiàn)出圖片中的物體是什么,還告知人們這個(gè)物體處于圖片中哪個(gè)位置。由圖1 可知SegNet網(wǎng)絡(luò)結(jié)構(gòu)是一個(gè)對(duì)稱的網(wǎng)絡(luò),由中間的池化層與上采樣層作為分割線,左半部分是通過卷積來提取圖片信息的高維特征,并通過池化使其變小,這個(gè)過程在SegNet訓(xùn)練中被稱為Encoder(編碼層)。右半部分是反卷積與上采樣,反卷積的作用是使圖像分類后特征能夠得到復(fù)原,上采樣的作用則是使圖像變大,這個(gè)過程在SegNet中被叫作Decoder(解碼層)。最后再通過Softmax函數(shù),輸出不同分類的最大值。
圖1 SegNet網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.1 SegNet Network Structure Diagram
為驗(yàn)證新型的DM碼定位算法的有效性,實(shí)現(xiàn)不同環(huán)境中的DM碼準(zhǔn)確定位,展開了二維碼識(shí)別實(shí)驗(yàn),實(shí)驗(yàn)的具體流程,如圖2所示。
圖2 實(shí)驗(yàn)流程圖Fig.2 Flow Chart of Experiment
為準(zhǔn)確體現(xiàn)出這里的算法對(duì)不同環(huán)境的適應(yīng)性,建立了一個(gè)相對(duì)健壯的DM碼的圖片數(shù)據(jù)集。
數(shù)據(jù)集基本涵蓋以下幾種情況的DM碼:
(1)存在純DM碼的圖片;
(2)存在DM碼分布位置不同,大小各異的圖片;
(3)存在分辨率大小不盡相同的圖片;
(4)存在DM碼的有較為復(fù)雜背景干擾的圖片;
(5)存在亮度不均衡或者模糊的圖片;
(6)存在同時(shí)包含二維碼與一維碼共存的圖片。
圖片數(shù)據(jù)集是通過分辨率為(1280×1024)、型號(hào)為acA1200-60gc的basler工業(yè)相機(jī)進(jìn)行人工拍攝完成。一共收集了5000張圖片,其中4000 張圖片作為訓(xùn)練樣本,1000 張圖片作為測(cè)試樣本。通過盡可能的保證DM碼所處圖片環(huán)境的復(fù)雜性和DM碼本身的多樣性,確保了本次數(shù)據(jù)集的健壯性。自建數(shù)據(jù)集部分?jǐn)?shù)據(jù),如圖3所示。
圖3 部分圖片數(shù)據(jù)集Fig.3 Partial Picture Data Set
這里所用基于導(dǎo)航用非標(biāo)準(zhǔn)二維碼的圖像處理主要是為了過濾掉不必要的干擾信息,得到工業(yè)應(yīng)用所需要的二維碼所在位置的區(qū)域塊。工業(yè)相機(jī)會(huì)因二維碼本身是由黑白塊組成以及拍攝過程中的光照不均、對(duì)比度不高、有較大的噪聲等原因而形成偏差,特別是在工業(yè)應(yīng)用中,這種情況非常頻繁,且易導(dǎo)致嚴(yán)重后果。因此,在實(shí)際應(yīng)用中多采用預(yù)處理的方法來降低以上因素對(duì)圖像識(shí)別的干擾。
在處理圖像信息過程中,采用了數(shù)據(jù)化方法,即先將數(shù)據(jù)集中的圖片尺寸統(tǒng)一為(400×400),再進(jìn)行特征標(biāo)準(zhǔn)化?;静襟E為:(1)計(jì)算圖像均值;(2)計(jì)算標(biāo)準(zhǔn)差;(3)對(duì)輸出的圖像數(shù)據(jù)進(jìn)行歸一化操作,以將圖片數(shù)據(jù)轉(zhuǎn)換成均值為0,方差為1的新圖像數(shù)據(jù)。
采用該法既可以對(duì)輸入數(shù)據(jù)起到規(guī)范作用,又可有效提高網(wǎng)絡(luò)的訓(xùn)練效率以及準(zhǔn)確率。
SegNet網(wǎng)絡(luò)訓(xùn)練標(biāo)簽,如圖4所示。本次訓(xùn)練中采用Adam作為優(yōu)化參數(shù),以及高斯分布的方式設(shè)置神經(jīng)網(wǎng)絡(luò)的初始權(quán)重。
圖4 Segnet網(wǎng)絡(luò)訓(xùn)練標(biāo)簽Fig.4 Segnet Network Label Map
訓(xùn)練中使用的損失函數(shù)為L(zhǎng)(X,Y),如式(1)所示。
式中:X—預(yù)測(cè)值;Y—參考值;S(X,Y)—兩個(gè)模型之間的相似程度;S(X,Y)—如式(2)所示。
式中:k—平滑值。
因?yàn)橛幸恍﹫D片里未包含神經(jīng)區(qū)域,因此可能會(huì)有空?qǐng)D的現(xiàn)象,需要對(duì)函數(shù)加入平滑值k來進(jìn)行修正。
神經(jīng)網(wǎng)絡(luò)的構(gòu)建是神經(jīng)網(wǎng)絡(luò)訓(xùn)練中最重要的一步。一個(gè)好的神經(jīng)網(wǎng)絡(luò)的構(gòu)建可以提取含有更多語(yǔ)意信息的圖像特征,對(duì)于最終的預(yù)測(cè)有著重要的意義。SegNet網(wǎng)絡(luò)搭建,如圖5所示。
SegNet神經(jīng)網(wǎng)絡(luò)主要是作為一個(gè)二分類器。在不考慮輸入層和輸出層的情況下,所涉神經(jīng)網(wǎng)絡(luò)具有八層結(jié)構(gòu),上面4層為編碼層,用于SegNet的編碼過程中,用same卷積來提取特征;下面4層表示解碼層,在解碼過程中,卷積仍采用的是same卷積,但與一般解碼過程不同的是,這里的same卷積是為了使上采樣變大的圖像信息更為豐富,從而可以通過機(jī)器學(xué)習(xí),在解碼過程中獲取在池化過程中丟失的信息,這個(gè)卷積也被稱為反卷積。該法可有效實(shí)現(xiàn)缺失的內(nèi)容的填充,與一般卷積和CNN中的卷積的基本作用都相同。
觀察圖5網(wǎng)絡(luò)架構(gòu)圖可知,每個(gè)卷積層后都會(huì)加上一個(gè)bn層,bn層后面是ReLU激活層。ReLU是由傳統(tǒng)激活函數(shù)sigmoid改進(jìn)得來,能很好地解決梯度消失的問題。在以往的實(shí)驗(yàn)研究中發(fā)現(xiàn),網(wǎng)絡(luò)的激活層越多其圖像語(yǔ)義分割的效果越好。
圖5 網(wǎng)絡(luò)架構(gòu)圖Fig.5 Network Architecture Diagram
整個(gè)算法都是基于MATLAB2018a版本開發(fā),所有實(shí)驗(yàn)的開發(fā)和測(cè)試環(huán)境均為64位下操作系統(tǒng),基于x64的處理器,Intel(R)Core(TM)i5-7500 CPU@3.40GHz,8G內(nèi)存。在本次試驗(yàn)的訓(xùn)練中,樣本圖片為4000張,測(cè)試圖片為1000張,采用隨機(jī)梯度下降法(SGDM),訓(xùn)練100回合,初始學(xué)習(xí)率為0.001,動(dòng)量采用0.9,L2正則系數(shù)為0.0005。訓(xùn)練過程,如圖6所示。
圖6 SegNet網(wǎng)絡(luò)訓(xùn)練過程圖Fig.6 Segnet Network Training Process Diagram
基于SegNet 神經(jīng)網(wǎng)絡(luò)識(shí)別結(jié)果的DM 碼的預(yù)定位過程和SegNet神經(jīng)網(wǎng)絡(luò)對(duì)整張圖片的識(shí)別結(jié)果,如圖7、圖8所示。從分類結(jié)果可以看出,該法已取得了很好的分類效果。
圖7 實(shí)驗(yàn)效果圖Fig.7 Experiment
圖8 實(shí)驗(yàn)效果圖Fig.8 Experiment
本次測(cè)試了1000張圖片,其中,僅有5張圖片由于光照以及角度等問題導(dǎo)致提取信息不準(zhǔn)確,其余圖片提取信息均準(zhǔn)確無誤。詳細(xì)信息提取過程,如圖9所示。對(duì)得到的包含二維碼的區(qū)域進(jìn)行形態(tài)學(xué)開閉運(yùn)算等一系列處理,可以很準(zhǔn)確的提取二維碼所包含的信息。訓(xùn)練好的SegNet神經(jīng)網(wǎng)絡(luò)對(duì)于整個(gè)測(cè)試集的二維碼區(qū)域提取準(zhǔn)確率達(dá)到98%,二維碼識(shí)別率達(dá)到99.5%,可以用成功滿足工業(yè)應(yīng)用需求。
圖9 二維碼信息提取過程圖Fig.9 Result Analysis Process Chart
提出了一種基于SegNet神經(jīng)網(wǎng)絡(luò)的DM碼定位算法,其優(yōu)點(diǎn)有:(1)定位算法的適應(yīng)性和魯棒性強(qiáng);(2)能夠精確穩(wěn)定的定位出DM碼區(qū)域;(3)能夠識(shí)別的DM碼范圍廣,且方法簡(jiǎn)單易實(shí)現(xiàn)。該算法的核心是通過SegNet神經(jīng)網(wǎng)絡(luò)來區(qū)分DM碼區(qū)域和非DM碼區(qū)域。針對(duì)該SegNet神經(jīng)網(wǎng)絡(luò)建立了一個(gè)包含4000張訓(xùn)練圖和1000張測(cè)試圖的數(shù)據(jù)集,然后對(duì)其進(jìn)行算法訓(xùn)練實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明,對(duì)二維碼的識(shí)別精度高達(dá)95.5%,能夠有效的降低工業(yè)導(dǎo)航中識(shí)別的成本。