段中興,李偉哲,張亞俐,周 孟,丁青輝
(西安建筑科技大學(xué) 信息與控制工程學(xué)院,西安 710055)
網(wǎng)絡(luò)技術(shù)和電子商務(wù)的快速發(fā)展,提高了線上購(gòu)物的便捷性。由于在線上選購(gòu)商品到實(shí)際收到商品所用時(shí)間較長(zhǎng),而蔬果類商品的保質(zhì)期較短,因此消費(fèi)者多選擇在線下商店選購(gòu)此類商品。而目前線下商店售賣(mài)果蔬類商品大多需員工稱重后張貼條形碼[1-2],然后由消費(fèi)者前往收銀臺(tái)或自助結(jié)算終端掃描條形碼完成支付,無(wú)形中增加了商家的人力資源投入和消費(fèi)者的購(gòu)物流程,人流量較多時(shí)果蔬稱重區(qū)也會(huì)出現(xiàn)較嚴(yán)重的排隊(duì)問(wèn)題。因此如何實(shí)現(xiàn)果蔬自動(dòng)識(shí)別是當(dāng)前超市自助結(jié)賬系統(tǒng)面臨的一個(gè)亟待解決的問(wèn)題。
圖像識(shí)別技術(shù)的發(fā)展為果蔬自助結(jié)算提供了新的解決方案。羅承成等[3]通過(guò)改進(jìn)單色塊及其領(lǐng)域算法提出了一種超市農(nóng)產(chǎn)品圖像識(shí)別方法,能夠識(shí)別不同光照背景下的果蔬圖像;S.Arivazhagan等[4]通過(guò)提取水果的顏色和紋理特征提出了一種水果圖像識(shí)別方法,平均識(shí)別準(zhǔn)確率達(dá)到了86%;S.R.Dubey等[5]提出一種基于圖像灰度值的紋理特征分類方法,實(shí)驗(yàn)結(jié)果表明,圖像灰度值的紋理特征分類效果更好。但上述方法均需要人工設(shè)計(jì)圖像特征,其識(shí)別分類的效果往往依賴于算法工程師的領(lǐng)域知識(shí)和設(shè)計(jì)經(jīng)驗(yàn)。
自Alex Net[6]取得Imagenet競(jìng)賽冠軍以來(lái),卷積神經(jīng)網(wǎng)絡(luò)[7]以無(wú)需人工設(shè)計(jì)特征的特點(diǎn)而得到海內(nèi)外學(xué)者的廣泛關(guān)注并迅速發(fā)展,在人臉識(shí)別[8-9]、農(nóng)作物識(shí)別[10]、交通標(biāo)志識(shí)別[11-12]等領(lǐng)域得到了廣泛研究。在果蔬圖像識(shí)別領(lǐng)域,巨志勇等[13]利用柔性注意力算法改進(jìn)Inception V3建立了果蔬識(shí)別模型,樊帥昌等[14]采用遷移學(xué)習(xí)方法訓(xùn)練了一種基于Res Net的蘑菇識(shí)別模型,均得到了較高的識(shí)別精度,但深層卷積神經(jīng)網(wǎng)絡(luò)的計(jì)算量較大,模型的響應(yīng)時(shí)間也較長(zhǎng)。
綜上所述,本文提出了一種基于改進(jìn)Alex Net的超市果蔬識(shí)別方法,并結(jié)合硬件設(shè)計(jì)實(shí)現(xiàn)了果蔬自助結(jié)算系統(tǒng)。與Alex Net相比,該方法能夠提取不同尺度下的果蔬圖像特征,不同尺度的特征融合后表征能力更強(qiáng);與Inception V3[15-16]、Res Net[17]等網(wǎng)絡(luò)相比,改進(jìn)Alex Net的參數(shù)量和計(jì)算量較小,對(duì)硬件設(shè)備的處理器性能等要求較低,識(shí)別速率更快,更適合應(yīng)用于果蔬自助結(jié)算系統(tǒng)。與現(xiàn)有自助結(jié)算設(shè)備相比,基于圖像的自助結(jié)算系統(tǒng)能夠在較短時(shí)間內(nèi)完成果蔬的識(shí)別、稱重和計(jì)價(jià),大大減少了果蔬類商品稱重標(biāo)記的時(shí)間以及資源投入。
果蔬自助結(jié)算系統(tǒng)無(wú)需人工操作即可識(shí)別出待檢測(cè)商品的類別及單價(jià),并通過(guò)壓力傳感器等硬件采集商品重量信息,然后基于商品的類別、單價(jià)以及重量等信息通過(guò)硬件內(nèi)置算法計(jì)算得出結(jié)算信息并在顯示器上顯示,最后消費(fèi)者出示付款碼由掃描槍掃描完成支付,信息有誤時(shí)可通知管理人員修改錯(cuò)誤信息,系統(tǒng)的整體方案見(jiàn)圖1。
圖1 系統(tǒng)方案示意圖
系統(tǒng)由重量采集、圖像采集、中央控制器和人機(jī)交互共4部分組成,其中中央控制器搭載有改進(jìn)的果蔬識(shí)別方法。結(jié)算時(shí)系統(tǒng)的處理器首先檢測(cè)到重量采集部分接口的電平變化,之后啟動(dòng)程序準(zhǔn)備接收重量信號(hào)。檢測(cè)到重量采集部分接口電平變化的同時(shí),系統(tǒng)啟動(dòng)圖像采集部分,獲取待結(jié)算商品的圖像。之后中央控制器運(yùn)行改進(jìn)的果蔬識(shí)別方法判斷果蔬類別,將類別與重量信息融合得到商品總價(jià)并通過(guò)信息展示部分向消費(fèi)者展示。若信息無(wú)誤則消費(fèi)者可使用支付設(shè)備掃描付款碼完成支付;若商品信息有誤,可通知管理人員,由管理人員使用相應(yīng)設(shè)備修正。
現(xiàn)有自助結(jié)算設(shè)備通過(guò)掃描條形碼讀取商品信息,這一過(guò)程只需要處理少量數(shù)據(jù)即可實(shí)現(xiàn)商品信息的準(zhǔn)確獲取及結(jié)算,因此現(xiàn)有自助結(jié)算設(shè)備的處理器性能往往比較低,而基于圖像識(shí)別果蔬類別需要經(jīng)過(guò)大量計(jì)算,因此難以直接將果蔬識(shí)別方法部署于現(xiàn)有的自助結(jié)算設(shè)備。
而關(guān)于圖像識(shí)別的研究大多在實(shí)驗(yàn)室等環(huán)境完成,該環(huán)境可以為識(shí)別模型的訓(xùn)練與運(yùn)行提供性能優(yōu)越的處理器,大幅減少了模型訓(xùn)練與運(yùn)行的時(shí)長(zhǎng)。但高性能處理器往往價(jià)格昂貴,用于自助結(jié)算系統(tǒng)具有極低的性價(jià)比,導(dǎo)致系統(tǒng)的應(yīng)用價(jià)值降低。因此該研究一方面通過(guò)優(yōu)化識(shí)別模型的網(wǎng)絡(luò)結(jié)構(gòu)以降低對(duì)處理器性能的要求;另一方面綜合考慮處理器性能、性價(jià)比等因素對(duì)系統(tǒng)的硬件進(jìn)行篩選。
考慮到實(shí)際應(yīng)用時(shí)自助結(jié)算系統(tǒng)除了識(shí)別果蔬類別之外還需要補(bǔ)充多種商品識(shí)別方式和支付途徑,因此中央控制器需預(yù)留一定量的拓展空間;而圖像識(shí)別過(guò)程會(huì)涉及大量計(jì)算過(guò)程,因此中央控制器的處理器(CPU)要具有較高的性能。樹(shù)莓派4B集成了4核處理器Arm Cortex-A72,提供有Micro-HDMI、USB、CSI、GPIO等多種拓展接口[18],具有無(wú)線/有線網(wǎng)絡(luò)和藍(lán)牙等連接方式,作為自助結(jié)算系統(tǒng)的中央控制器可以同時(shí)滿足拓展性和計(jì)算資源的需求,樹(shù)莓派4B擴(kuò)展配件接口(GPIO)的具體分配方式見(jiàn)表1。
表1 GPIO接口分配方式
攝像頭是系統(tǒng)圖像采集部分最重要的硬件組成,其采集的圖像質(zhì)量與識(shí)別的精度息息相關(guān)。系統(tǒng)使用的RaspiCam攝像頭通過(guò)CSI接口與樹(shù)莓派連接,啟用攝像頭的支持后可直接通過(guò)命令行驅(qū)動(dòng),相應(yīng)更快且工作穩(wěn)定性好,資源消耗低,圖像質(zhì)量好,非常適用于圖像識(shí)別系統(tǒng)。
系統(tǒng)重量采集部分的輸出信號(hào)是啟動(dòng)結(jié)算程序和計(jì)算商品總價(jià)的重要信息。重量信息的獲取首先由壓力傳感器將壓力值轉(zhuǎn)換為電量信號(hào),之后再通過(guò)數(shù)模轉(zhuǎn)換芯片將之轉(zhuǎn)換成易處理的數(shù)字信號(hào)。應(yīng)變式壓力傳感器由受壓時(shí)電阻值會(huì)改變的材料和電阻值固定的材料組成圖2所示的惠斯登橋,惠斯登橋的輸入為穩(wěn)定的電壓源UIN,無(wú)外界壓力時(shí)惠斯登橋處于平衡狀態(tài);受到壓力時(shí),R1和R2的電阻值發(fā)生改變,惠斯登橋退出平衡狀態(tài),輸出電壓值UOUT發(fā)生改變,經(jīng)放大器、補(bǔ)償電路后產(chǎn)生與壓力值成線性對(duì)應(yīng)關(guān)系的標(biāo)準(zhǔn)輸出信號(hào)。
圖2 惠斯登橋
考慮到人們?cè)诔袃?nèi)消費(fèi)時(shí)普遍不會(huì)一次性購(gòu)入大量果蔬,因此該研究選用的應(yīng)變式壓力傳感器的量程為5 kg,不受壓條件下惠斯登橋電阻材料的阻值為1 kΩ,電源輸入通過(guò)HX711數(shù)模轉(zhuǎn)換芯片與樹(shù)莓派的3.3 V接口連接,即UIN=3.3 V。
HX711數(shù)模轉(zhuǎn)換芯片[19]可以將傳感器輸出的模擬信號(hào)轉(zhuǎn)變?yōu)閿?shù)字信號(hào),應(yīng)用于自助結(jié)算系統(tǒng)的重量測(cè)采集模塊可以很大程度上降低成本,提高系統(tǒng)性能和可靠性。芯片共有4個(gè)輸入輸出引腳,分別為VCC、GND、SCK、DT,其中信號(hào)傳輸主要通過(guò)SCK和DT引腳實(shí)現(xiàn)。將傳感器的模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)后,DT引腳將從高電平降至低電平,表明芯片已準(zhǔn)備輸出重量的數(shù)字信息,之后SCK引腳輸出一串包含重量信息的時(shí)鐘信號(hào)。系統(tǒng)根據(jù)DT引腳電平的變化情況確定系統(tǒng)的工作狀態(tài),使用SCK引腳的輸出信號(hào)計(jì)算商品總價(jià),芯片與樹(shù)莓派的引腳連接方式見(jiàn)表2。
表2 HX711與樹(shù)莓派連接方式
系統(tǒng)人機(jī)交互部分包括用于展示商品信息的顯示器、用于支付的掃描槍和用于修正信息的鍵盤(pán)鼠標(biāo)等硬件設(shè)備。系統(tǒng)硬件連接的原理如圖3所示,圖中隱去了硬件設(shè)備的內(nèi)部電路。
圖3 硬件結(jié)構(gòu)原理圖
系統(tǒng)軟件部分由果蔬識(shí)別算法和主程序組成,果蔬識(shí)別算法包括算法模型和模型參數(shù)兩部分,算法模型在Alex Net的基礎(chǔ)上進(jìn)行改進(jìn),使用不同尺寸的卷積核增加特征的豐富度,使用“捷徑”連接方式增加特征的完整性,改進(jìn)后模型能夠在性能相對(duì)較低的樹(shù)莓派等微型主機(jī)上運(yùn)行并在較短時(shí)間內(nèi)得到精準(zhǔn)的識(shí)別結(jié)果;模型參數(shù)的訓(xùn)練使用自建數(shù)據(jù)集以交叉熵值最小化原則訓(xùn)練得到,訓(xùn)練過(guò)程中根據(jù)交叉熵值的變化情況動(dòng)態(tài)調(diào)整學(xué)習(xí)率。主程序按一定的時(shí)序?qū)⑾到y(tǒng)的外圍硬件和內(nèi)部計(jì)算算法串聯(lián)起來(lái),充分利用結(jié)算過(guò)程產(chǎn)生的不同信號(hào),檢測(cè)托盤(pán)上是否存在待結(jié)算商品,并自行完成識(shí)別計(jì)價(jià)過(guò)程,無(wú)需人工參與。消費(fèi)者完成支付后主程序可自行返回待機(jī)狀態(tài),監(jiān)測(cè)托盤(pán)上是否存在待結(jié)算商品;若商品信息或總價(jià)有誤,可通過(guò)管理人員修正支付信息,消費(fèi)者支付成功后主程序重新進(jìn)入待機(jī)狀態(tài),系統(tǒng)軟件部分的設(shè)計(jì)思路見(jiàn)圖4。
超市果蔬種類繁多,顏色紋理輪廓等特征多種多樣且部分品種間存在大量相似特征,因此識(shí)別網(wǎng)絡(luò)需具備足夠的復(fù)雜度以確保所提取的特征具備足夠的表征能力。同時(shí)由于自助結(jié)算系統(tǒng)的中央控制器的計(jì)算資源并不豐富,因此網(wǎng)絡(luò)模型的計(jì)算量和參數(shù)量應(yīng)當(dāng)盡可能小。對(duì)比Alex Net、Inception V3、Res Net等經(jīng)典網(wǎng)絡(luò)模型發(fā)現(xiàn),Alex Net的網(wǎng)絡(luò)結(jié)構(gòu)簡(jiǎn)單,特征的完整性與多樣性相對(duì)不足,但多數(shù)研究表明該網(wǎng)絡(luò)在圖像識(shí)別領(lǐng)域具有一定的應(yīng)用潛力;而Inception V3、Res Net等網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜,特征表征能力更強(qiáng),但參數(shù)量和計(jì)算量巨大,對(duì)硬件設(shè)備的性能要求較高且網(wǎng)絡(luò)進(jìn)一步優(yōu)化改進(jìn)的空間較小。因此選擇在Alex Net的基礎(chǔ)上進(jìn)行改進(jìn),使網(wǎng)絡(luò)模型能夠以較小的計(jì)算資源需求完成對(duì)常見(jiàn)果蔬的準(zhǔn)確識(shí)別。
圖4軟件流程圖
2.1.1 并行卷積通道
卷積神經(jīng)網(wǎng)絡(luò)通過(guò)卷積計(jì)算提取圖像特征,得到輸入圖像的特征圖,特征圖尺寸與輸入尺寸之間的關(guān)系見(jiàn)式(1):
(1)
其中:Sin為輸入圖像的尺寸,Sout是輸出的尺寸,P是圖像填充的尺寸,k為卷積核尺寸,s為卷積的步長(zhǎng)。
假設(shè)輸入圖像的尺寸為5×5,卷積步長(zhǎng)設(shè)置為1,圖像填充方式為無(wú)填充,使用3×3大小的卷積核提取圖像特征時(shí),輸出尺寸Sout=3,如圖5(a)所示。輸出特征圖中數(shù)值與輸入圖像的固定像素值區(qū)域一一對(duì)應(yīng),如圖5(a)輸入圖像深色框線標(biāo)注的3×3像素值區(qū)域與輸出特征圖的深色區(qū)域,特征圖數(shù)值對(duì)應(yīng)的像素值區(qū)域即為卷積核的感受野,可見(jiàn)3×3卷積核的感受野大小為3×3;同理,使用5×5大小的卷積核時(shí)輸出的特征圖尺寸為1×1,該數(shù)值與全部的5×5像素值區(qū)域相關(guān),即感受野大小為5×5,如圖5(b)所示。
圖5 感受野與卷積核對(duì)應(yīng)關(guān)系
果蔬識(shí)別過(guò)程中,感受野的大小直接影響特征圖對(duì)不同尺度特征信息的表達(dá)。感受野較大時(shí),特征圖數(shù)值對(duì)應(yīng)較大的圖像區(qū)域,在這一區(qū)域,背景圖像與前景圖像的像素值差距遠(yuǎn)大于前景圖像中紋理與葉片之間的像素值差距,因此更為細(xì)節(jié)的紋理等信息對(duì)特征圖輸出值的影響很小,甚至可以忽略不計(jì),導(dǎo)致大感受野下圖像特征圖更多用來(lái)表達(dá)輪廓等較為明顯的特征而忽視細(xì)節(jié)紋理特征;感受野較小時(shí),特征圖數(shù)值對(duì)應(yīng)的圖像區(qū)域較小,多數(shù)區(qū)域不會(huì)同時(shí)包含前景、背景等內(nèi)容,因此圖像輪廓等信息難以在小感受野內(nèi)充分體現(xiàn),而紋理等細(xì)節(jié)信息將對(duì)特征值產(chǎn)生較大影響,如圖6所示。
圖6 卷積核尺寸對(duì)提取特征的影響
將卷積神經(jīng)網(wǎng)絡(luò)第l層卷積的輸出定義為xl,則改進(jìn)前網(wǎng)絡(luò)各卷積層的輸入輸出關(guān)系見(jiàn)式(2),改進(jìn)后的輸入輸出關(guān)系見(jiàn)式(3)。
xl=f(w,h,xl-1)
(2)
xl=g(f(w1,h1,xl-1),f(w2,h2,xl-1),…)
(3)
其中:f代表卷積操作,w、h分別為卷積核的寬度和高度。g代表特征圖疊加操作,即將不同卷積通道的輸出在特征圖厚度(即特征圖的通道)上進(jìn)行堆疊。
鑒于輸入圖像的尺寸相對(duì)較大,若網(wǎng)絡(luò)首層使用的卷積核尺寸過(guò)小,則易導(dǎo)致細(xì)節(jié)信息不能完整表達(dá),使提取的特征帶有大量無(wú)效信息,網(wǎng)絡(luò)首層的改進(jìn)為在原網(wǎng)絡(luò)結(jié)構(gòu)的基礎(chǔ)上增加一條卷積核尺寸為7×7的卷積通道,改進(jìn)前首層卷積的輸入輸出見(jiàn)式(4),改進(jìn)后的輸入輸出關(guān)系式見(jiàn)式(5):
x1=f(11,11,x0)
(4)
x1=g(f(11,11,x0),f(7,7,x0))
(5)
其中:x0為網(wǎng)絡(luò)輸入圖像,尺寸為224×224×3。
之后使用池化卷積降低輸出特征圖的尺寸,公式見(jiàn)式(6):
xp1=pool(x1,3,3,2,valid)
(6)
其中:xp1為池化后第一層卷積的輸出特征,pool代表池化運(yùn)算,包括最大池化和平均池化兩種,分別取池化范圍內(nèi)的最大值或平均值作為輸出特征。pool的輸入為第一層卷積的輸出x1,之后兩個(gè)參數(shù)為池化卷積核尺寸的寬度和高度,第4個(gè)參數(shù)為卷積步長(zhǎng),本次池化的像素值區(qū)域與下次池化區(qū)域之間間隔的特征圖行列數(shù),最后一個(gè)參數(shù)為圖像填充方式,包括same padding和valid padding兩種,same padding也叫0填充,即在圖像邊緣填充0像素,可以保持輸入與輸出維度相同;valid padding即不填充,輸出尺寸小于輸入尺寸。
經(jīng)過(guò)一次池化后,特征圖尺寸已經(jīng)相對(duì)較小,因此第二個(gè)卷積層取消了7×7等相對(duì)較大的卷積核,在原網(wǎng)絡(luò)5×5卷積的基礎(chǔ)上增加了更小的3×3、1×1兩種小卷積核,用于提取不同感受野的特征信息,疊加后使用池化層再次降低輸出特征圖的尺寸。改進(jìn)網(wǎng)絡(luò)第二層卷積的計(jì)算公式見(jiàn)式(7)、(8):
x2=g(f(5,5,xp1),f(3,3,xp1),f(1,1,xp1))
(7)
xp2=pool(x2,3,3,2,valid)
(8)
此時(shí)網(wǎng)絡(luò)輸出的尺寸已經(jīng)較小,因此后三層卷積在3×3卷積的基礎(chǔ)上補(bǔ)充了1×1卷積,以滿足特征圖豐富度的要求。最后三層卷積的運(yùn)算公式見(jiàn)式(9):
xl=g(f(3,3,xl-1),f(1,1,xl-1))
(9)
其中:l=(3,4,5),l=3時(shí)卷積層的輸入為xp2。
并行卷積通道的存在使網(wǎng)絡(luò)使用了更多的卷積核,導(dǎo)致網(wǎng)絡(luò)參數(shù)量增加,不利于網(wǎng)絡(luò)在資源有限的終端設(shè)備上進(jìn)行部署,為在保證感受野豐富度的條件下降低網(wǎng)絡(luò)的參數(shù)量,該研究使用多個(gè)連續(xù)的3×3卷積核替代較大卷積核。例如在圖5中,若再次使用3×3的卷積核對(duì)圖5(a)輸出的特征圖進(jìn)行卷積計(jì)算,其輸出維度將降低至1×1,與圖5(b)的輸出特征圖維度相同,且最終輸出值與輸入圖像的5×5維數(shù)據(jù)相關(guān),因此連續(xù)兩個(gè)3×3卷積核疊加后感受野與5×5卷積核的感受野大小相同。而兩個(gè)3×3卷積核的參數(shù)量為3×3×2=18,一個(gè)5×5卷積核的參數(shù)量為5×5×1=25,替換后參數(shù)量可降低28%,表明使用多個(gè)小卷積核替代大卷積核能夠?qū)崿F(xiàn)在保持卷積感受野不變的前提下降低網(wǎng)絡(luò)參數(shù)量的目標(biāo)。
2.1.2 “捷徑”連接
傳統(tǒng)Alex Net的卷積層僅與上下層連接,逐層的卷積操作將淺層卷積所提取的邊緣紋理等低層次特征逐漸映射為抽象的高層次特征,最后使用這些高層次特征進(jìn)行分類。這種分類方法沒(méi)有考慮到低層次特征對(duì)分類結(jié)果的影響,用于分類的特征信息缺乏完整性;同時(shí),網(wǎng)絡(luò)深度的增加也使網(wǎng)絡(luò)在訓(xùn)練過(guò)程中易出現(xiàn)梯度消失或梯度爆炸問(wèn)題,導(dǎo)致網(wǎng)絡(luò)的訓(xùn)練難度增大。
K.M.He等[17]在網(wǎng)絡(luò)中引入了“捷徑”連接方式,即將本層網(wǎng)絡(luò)的輸出通過(guò)恒等映射等方式與更深層網(wǎng)絡(luò)的輸出相融合,使深層網(wǎng)絡(luò)的輸出特征中存在淺層特征的映射。前向傳播時(shí),這種連接方式能夠直接將低層次特征映射到深層網(wǎng)絡(luò)所提取的高層次特征中,提高了特征信息的完整性;反向傳播時(shí),深層網(wǎng)絡(luò)的梯度也可以通過(guò)“捷徑”連接直接傳遞到淺層,可以有效避免梯度消失和梯度爆炸等問(wèn)題。與傳統(tǒng)網(wǎng)絡(luò)相比,這種連接方式有效利用了對(duì)邊緣紋理等信息保存較好的低層次特征,使得網(wǎng)絡(luò)輸出的高層次特征中的邊緣和細(xì)節(jié)信息得到一定程度的增強(qiáng),網(wǎng)絡(luò)的輸出特征也更加完整。
增加“捷徑”連接后卷積層的輸入輸出關(guān)系見(jiàn)式(10):
xl=f(w,h,xl-1)+xl-1
(10)
與式(2)相比,式(10)增加了上一層輸出的恒等映射,在該層的輸出中可以在一定程度上保留上層信息。
改進(jìn)后的Alex Net網(wǎng)絡(luò)雖然增加了并行卷積通道,但依舊僅包含5個(gè)卷積層,網(wǎng)絡(luò)層數(shù)較淺,特征圖前向傳播和誤差反向傳遞過(guò)程較為簡(jiǎn)單,因此在改進(jìn)網(wǎng)絡(luò)中設(shè)置“捷徑”連接時(shí)主要考慮了前向傳播過(guò)程中低層次特征向深層網(wǎng)絡(luò)的映射問(wèn)題。改進(jìn)后的Alex Net前2層卷積感受野尺寸較為豐富,所提取特征包含不同尺度下的邊緣、紋理等低層次特征;后面3層卷積結(jié)構(gòu)較為單一,功能上主要負(fù)責(zé)將上層輸出映射為更高層次的特征。因此改進(jìn)網(wǎng)絡(luò)中通過(guò)“捷徑”連接方式和“與”操作將改進(jìn)Alex Net的第一層、第二層網(wǎng)絡(luò)的輸出映射至第五層網(wǎng)絡(luò)的輸出,實(shí)現(xiàn)特征在不同尺度上的融合,增加特征信息的完整性。補(bǔ)充恒等映射后的網(wǎng)絡(luò)輸出xRes5與第五層卷積的輸出特征圖x5之間的關(guān)系式見(jiàn)式(11):
xRes5=Add(xp1,xp2,x5)
(11)
其中:Add表示“與”操作,實(shí)現(xiàn)低層次特征與高層次特征在相同維度內(nèi)的融合。
改進(jìn)Alex Net的網(wǎng)絡(luò)結(jié)構(gòu)見(jiàn)圖7,參數(shù)設(shè)置見(jiàn)表3。
表3 改進(jìn)Alex Net參數(shù)設(shè)置
圖7 改進(jìn)Alex Net網(wǎng)絡(luò)結(jié)構(gòu)
時(shí)序主程序負(fù)責(zé)將系統(tǒng)的各組成部分按一定順序串聯(lián),其設(shè)計(jì)合理與否直接決定系統(tǒng)是否能夠有效利用結(jié)算過(guò)程中產(chǎn)生的各種信息自動(dòng)運(yùn)行,并盡可能減少冗余信息,同時(shí)避免組成部分間的時(shí)序沖突,是系統(tǒng)能否穩(wěn)定有效運(yùn)行的基礎(chǔ)。功能上主要包括監(jiān)測(cè)重量信號(hào)、獲取商品圖像、識(shí)別商品類別、確認(rèn)結(jié)算完成等部分,軟件的具體實(shí)現(xiàn)流程見(jiàn)圖8。
圖8 主程序流程圖
使用該系統(tǒng)結(jié)算時(shí),首先需要商家在消費(fèi)者結(jié)算前啟動(dòng)主程序,預(yù)加載識(shí)別算法模型及參數(shù),之后主程序進(jìn)入待機(jī)狀態(tài),時(shí)刻監(jiān)測(cè)GPIO.3接口電平信號(hào)的變化情況。
消費(fèi)者結(jié)算時(shí),將商品放置于稱重托盤(pán),托盤(pán)下方的壓力傳感器受壓后輸出模擬電量信號(hào),經(jīng)HX711數(shù)模轉(zhuǎn)換芯片轉(zhuǎn)換為數(shù)字信號(hào),通過(guò)GPIO.2、GPIO.3接口輸出,輸出時(shí)GPIO.3接口首先由高電平狀態(tài)降低至低電平,主機(jī)確認(rèn)接收之后HX711芯片的SCK接口發(fā)送存儲(chǔ)重量信息的數(shù)字時(shí)鐘信號(hào)至樹(shù)莓派。
樹(shù)莓派主機(jī)檢測(cè)到GPIO.3接口的電平變化后,首先開(kāi)始接收GPIO.2接口的重量信息,之后打開(kāi)攝像頭,采集待結(jié)算商品的圖像,并使用Image函數(shù)庫(kù)將圖像尺寸調(diào)整為224×224×3。之后將圖像輸入到果蔬識(shí)別算法,經(jīng)處理器運(yùn)算得到商品最大概率的所屬類別,融合商品重量和類別信息計(jì)算出商品總價(jià)并在顯示器上展示相關(guān)信息。
若商品類別及單價(jià)信息無(wú)誤,消費(fèi)者結(jié)算后主程序返回待機(jī)狀態(tài),等待下次結(jié)算;若商品信息有誤,可通過(guò)管理人員修改商品信息并結(jié)算,之后程序待機(jī),等待下次結(jié)算。
使用該主程序完成果蔬自助結(jié)算系統(tǒng)設(shè)計(jì),系統(tǒng)運(yùn)行時(shí)僅最初啟動(dòng)時(shí)加載一次識(shí)別算法的模型和參數(shù),后續(xù)結(jié)算時(shí)可直接調(diào)用識(shí)別,大大減少了識(shí)別過(guò)程的時(shí)長(zhǎng);消費(fèi)者結(jié)算時(shí)僅需將果蔬等商品放置于稱重托盤(pán),之后等待系統(tǒng)出示結(jié)算信息,極大程度上簡(jiǎn)化了消費(fèi)者的結(jié)算流程,與當(dāng)前超市普遍使用的結(jié)算方式相比更加方便快捷。
搭建果蔬自助結(jié)算系統(tǒng),除了要設(shè)計(jì)基于圖像的果蔬識(shí)別方法之外,還需要有相應(yīng)的圖像數(shù)據(jù)集訓(xùn)練識(shí)別算法。訓(xùn)練集數(shù)據(jù)與實(shí)際情況的相符程度對(duì)識(shí)別方法的精度等有著重要影響,但目前關(guān)于果蔬識(shí)別的研究較少,國(guó)內(nèi)外相應(yīng)的數(shù)據(jù)庫(kù)還未建成,因此研究過(guò)程中需設(shè)計(jì)圖像采集方案建立相應(yīng)超市果蔬數(shù)據(jù)集。對(duì)超市常見(jiàn)果蔬種類進(jìn)行調(diào)研,篩選出24類常見(jiàn)果蔬(包括特征相似的國(guó)產(chǎn)香蕉、進(jìn)口香蕉等類別)作為采集目標(biāo),使用模擬實(shí)際場(chǎng)景搭建的硬件設(shè)備采集果蔬圖像以增強(qiáng)數(shù)據(jù)集圖像與實(shí)際應(yīng)用場(chǎng)景的相符程度。
實(shí)際應(yīng)用過(guò)程中結(jié)算環(huán)境的光照等外部條件的變化以及結(jié)算時(shí)果蔬在托盤(pán)上擺放方式的不同等可能會(huì)影響果蔬識(shí)別的準(zhǔn)確率,因此在采集果蔬圖像時(shí)設(shè)置了正常光照、強(qiáng)光照、弱光照3種光照條件,分別在3種條件下采集果蔬不同擺放角度的圖像,預(yù)訓(xùn)練后建立數(shù)據(jù)集。
采集時(shí)使用額外光源、遮光窗簾等設(shè)備調(diào)節(jié)現(xiàn)場(chǎng)的光照強(qiáng)度,使用曲別針等制作簡(jiǎn)易小型支架,使果蔬可以處于特定傾斜角度。采集時(shí)將果蔬放置于托盤(pán)固定位置,每旋轉(zhuǎn)一定角度采集一次圖像,之后使用支架使果蔬處于一定傾斜角度,再次旋轉(zhuǎn)采集圖像,直至充分采集果蔬任意角度下的圖像。最終采集到圖像共43 989張,各光照條件下的圖像數(shù)量在14 000張以上,相同光照條件下各類果蔬的圖像均在500張以上。
拍攝的原始圖像尺寸較大,存在較多無(wú)關(guān)信息,會(huì)影響網(wǎng)絡(luò)的特征提取效果,需要通過(guò)圖像預(yù)處理方法將目標(biāo)圖像與無(wú)關(guān)信息分割開(kāi),即實(shí)現(xiàn)圖像前景區(qū)域和背景部分的分割。其分割過(guò)程如圖所示。首先將原始圖像轉(zhuǎn)換為灰度圖像,使用自適應(yīng)閾值分割法[20]將圖像的前景與背景分割開(kāi),之后使用填充處理操作得到前景圖像,見(jiàn)圖9(a)、圖9(b)和圖9(c)。發(fā)現(xiàn)由于光照等條件的影響,圖像的部分前景區(qū)域呈現(xiàn)出與背景區(qū)域相近的灰度,導(dǎo)致分割后的前景圖像不完整,因此需要使用形態(tài)學(xué)膨脹處理方法進(jìn)一步處理,之后再使用填充處理操作得到完整的前景圖像,見(jiàn)圖9(d)和圖9(e)。
圖9 數(shù)據(jù)預(yù)處理過(guò)程圖解
為測(cè)試改進(jìn)Alex Net的效果,設(shè)計(jì)了模型訓(xùn)練和測(cè)試方法,使用超市果蔬數(shù)據(jù)集分別訓(xùn)練改進(jìn)Alex Net、Inception V3和Res Net,并記錄訓(xùn)練和測(cè)試過(guò)程的指標(biāo)參數(shù)。實(shí)驗(yàn)平臺(tái)使用Windows10家庭中文版操作系統(tǒng),中央處理器為Intel Core i5-8300H。
首先將數(shù)據(jù)集按照7∶2∶1的比例劃分為訓(xùn)練集、驗(yàn)證集和測(cè)試集;設(shè)置初始學(xué)習(xí)率、最大迭代次數(shù)等超參數(shù),使用訓(xùn)練集數(shù)據(jù)訓(xùn)練模型參數(shù)。
之后依照交叉熵值最小化原則調(diào)節(jié)模型參數(shù)。模型參數(shù)保存條件為保留最近一次交叉熵值降低時(shí)的模型參數(shù)。訓(xùn)練過(guò)程超參數(shù)的調(diào)節(jié)依據(jù)為交叉熵值連續(xù)未降低的迭代次數(shù),若少于3次則保持超參數(shù)不變,直接開(kāi)始下次迭代;大于或等于3次且小于7次則將學(xué)習(xí)率調(diào)整至當(dāng)前學(xué)習(xí)率的0.5倍;連續(xù)7次未降低時(shí)提前結(jié)束訓(xùn)練過(guò)程,保存最后一次交叉熵值降低時(shí)的模型參數(shù)。3種網(wǎng)絡(luò)的訓(xùn)練過(guò)程如圖10所示。
圖10 網(wǎng)絡(luò)訓(xùn)練過(guò)程
最后重新載入模型,測(cè)試參數(shù)加載時(shí)間,輸入測(cè)試集圖像測(cè)試模型的總體平均識(shí)別準(zhǔn)確率和單張圖片識(shí)別用時(shí)。測(cè)試結(jié)果見(jiàn)表4。
表4 模型對(duì)比實(shí)驗(yàn)結(jié)果
對(duì)比圖10準(zhǔn)確率和交叉熵值的變化過(guò)程發(fā)現(xiàn),雖然三種網(wǎng)絡(luò)最終的識(shí)別準(zhǔn)確率接近,交叉熵值也很低,但I(xiàn)nception V3和Res Net訓(xùn)練過(guò)程中存在訓(xùn)練集準(zhǔn)確率和交叉熵值平滑過(guò)渡但驗(yàn)證集準(zhǔn)確率和交叉熵值大幅變化的情況,認(rèn)為在訓(xùn)練Inception V3和Res Net時(shí)網(wǎng)絡(luò)模型出現(xiàn)了過(guò)擬合現(xiàn)象,表明在當(dāng)前應(yīng)用情形下模型復(fù)雜度高于實(shí)際所需,模型計(jì)算過(guò)程存在冗余的計(jì)算空間而部署果蔬識(shí)別方法的終端設(shè)備的處理器性能低于訓(xùn)練平臺(tái),運(yùn)行深層網(wǎng)絡(luò)存在一定難度,因此訓(xùn)練過(guò)程較為平滑的改進(jìn)Alex Net更為適合果蔬自助結(jié)算系統(tǒng)。結(jié)合表4測(cè)試結(jié)果發(fā)現(xiàn)改進(jìn)Alex Net的平均識(shí)別精度與Inception V3和Res Net接近,但參數(shù)量規(guī)模更小,模型加載和識(shí)別也更為快速。因此,基于改進(jìn)Alex Net的果蔬識(shí)別方法更適合用于解決超市自助結(jié)賬系統(tǒng)面臨的果蔬識(shí)別問(wèn)題。
經(jīng)測(cè)試認(rèn)為改進(jìn)的果蔬識(shí)別方法能夠在資源需求更小的前提下保持相對(duì)較高的識(shí)別精度,符合果蔬自助結(jié)算系統(tǒng)的使用條件,因此將該方法部署到果蔬自助結(jié)算系統(tǒng)的樹(shù)莓派中,運(yùn)行主程序測(cè)試系統(tǒng)單次的結(jié)算時(shí)長(zhǎng)以及對(duì)各類果蔬的識(shí)別準(zhǔn)確率。系統(tǒng)的運(yùn)行環(huán)境如圖11所示。
圖11 系統(tǒng)運(yùn)行環(huán)境
系統(tǒng)測(cè)試步驟如下:
1)配置程序運(yùn)行環(huán)境,程序進(jìn)入待機(jī)狀態(tài)。接通電源,打開(kāi)樹(shù)莓派,啟動(dòng)自助結(jié)算主程序。程序初次啟動(dòng)時(shí)需要加載TensorFlow深度學(xué)習(xí)框架、改進(jìn)果蔬識(shí)別方法的模型參數(shù)、OpenCV函數(shù)庫(kù)和WiringPi軟件包,作用分別是構(gòu)建識(shí)別模型、加載模型參數(shù)、攝像頭調(diào)用和圖片處理、GPIO接口功能配置與實(shí)現(xiàn)。運(yùn)行環(huán)境配置完成后程序進(jìn)入循環(huán)部分,即待機(jī)狀態(tài),此時(shí)程序通過(guò)監(jiān)測(cè)GPIO.3接口的電平狀態(tài)判斷程序是否進(jìn)入識(shí)別結(jié)算流程。
2)讀取商品重量信息。消費(fèi)者將待結(jié)算商品放置到稱重托盤(pán),壓力傳感器受壓后輸出商品重量信息,此時(shí)GPIO.3接口由高電平變?yōu)榈碗娖?,程序進(jìn)入循環(huán)的識(shí)別結(jié)算部分。之后讀取GPIO.2接口的數(shù)字時(shí)鐘信號(hào),換算后得到商品的重量值,單位為g,精度可達(dá)0.000 1,考慮到實(shí)際應(yīng)用場(chǎng)景,計(jì)算后的重量數(shù)據(jù)僅保留到克。
3)采集待結(jié)算商品的圖像。GPIO.2接口的數(shù)字時(shí)鐘信號(hào)接收完成后,使用預(yù)配置的OpenCV函數(shù)庫(kù)調(diào)用攝像頭模塊,保存當(dāng)前圖像并將圖像尺寸處理為識(shí)別方法所需尺寸維度。
4)識(shí)別商品類別。將采集圖像輸入果蔬識(shí)別算法模型,經(jīng)特征提取與計(jì)算后得到待結(jié)算商品的類別。
5)計(jì)算商品總價(jià),展示結(jié)算信息。根據(jù)識(shí)別結(jié)果讀取該類商品的單價(jià)等信息,與商品重量相乘得到商品總價(jià),通過(guò)Image函數(shù)庫(kù)的相關(guān)函數(shù)將所采集的商品圖像、識(shí)別結(jié)果、商品編號(hào)及單價(jià)總價(jià)等信息在顯示器上顯示,見(jiàn)圖12。
圖12 單次運(yùn)行結(jié)果
最后一步為信息確認(rèn)與結(jié)算。這一階段程序讀取掃描槍和鍵盤(pán)鼠標(biāo)的信息。若商品信息無(wú)誤,消費(fèi)者出示付款碼,掃描槍掃描后將結(jié)果返回樹(shù)莓派,程序返回循環(huán)頂端,即重新進(jìn)入待機(jī)狀態(tài);若信息有誤可使用鍵盤(pán)鼠標(biāo)等交互硬件選擇取消或聯(lián)系管理員修改商品信息,修改信息前需輸入正確的管理員信息,修改完成后消費(fèi)者可通過(guò)掃描槍完成支付。
測(cè)試過(guò)程中系統(tǒng)啟動(dòng)后可自動(dòng)運(yùn)行,需要人工操作的部分僅有放置待結(jié)算商品和出示付款碼兩部分,與現(xiàn)有自助結(jié)算設(shè)備相比結(jié)算流程更簡(jiǎn)單;在實(shí)際應(yīng)用過(guò)程中,系統(tǒng)完成結(jié)算的總用時(shí)約7.48秒,僅為人工結(jié)算所需時(shí)長(zhǎng)的1/4[21]。
調(diào)整環(huán)境光照條件和果蔬擺放角度,重復(fù)上述實(shí)驗(yàn),測(cè)得系統(tǒng)在實(shí)際應(yīng)用過(guò)程中對(duì)各類果蔬的識(shí)別率及全部類別的平均識(shí)別率,如表5所示。
表5 各類果蔬的識(shí)別率及數(shù)據(jù)集平均識(shí)別率
從表5中可以發(fā)現(xiàn),網(wǎng)絡(luò)模型對(duì)國(guó)產(chǎn)香蕉、進(jìn)口香蕉等特征相似度較高的果蔬均取得了較高的識(shí)別準(zhǔn)確率,證明網(wǎng)絡(luò)能夠精確區(qū)分類間差異較小的果蔬品種;網(wǎng)絡(luò)的平均識(shí)別精度可以達(dá)到98.25%,表明網(wǎng)絡(luò)模型能在實(shí)際應(yīng)用中取得較好結(jié)果。
本文提出了一種基于改進(jìn)Alex Net的果蔬自動(dòng)識(shí)別方法并設(shè)計(jì)了果蔬自助結(jié)算系統(tǒng)。通過(guò)增加卷積核尺寸不同的卷積通道和使用“捷徑”連接兩種方式改進(jìn)網(wǎng)絡(luò)結(jié)構(gòu),增加了網(wǎng)絡(luò)提取特征的豐富性和完整性,優(yōu)化了特征的表征能力;使用3×3卷積核替代較大的卷積核,進(jìn)一步降低模型的參數(shù)量,使模型在資源有限的終端應(yīng)用時(shí)加載、響應(yīng)時(shí)間更短。搭建硬件平臺(tái)對(duì)果蔬自助結(jié)算系統(tǒng)進(jìn)行實(shí)現(xiàn),在實(shí)際運(yùn)行環(huán)境下測(cè)試了系統(tǒng)性能,測(cè)得系統(tǒng)的整體識(shí)別率高于95%,除需要加載識(shí)別模型及參數(shù)的啟動(dòng)時(shí)間之外系統(tǒng)響應(yīng)時(shí)間不超過(guò)8 s。表明該方法及系統(tǒng)與人工結(jié)算相比更加方便快捷,與使用條形碼的自助結(jié)算設(shè)備相比具有更加廣闊的應(yīng)用空間以及發(fā)展前景。