梅啟成,呂文閣
(廣東工業(yè)大學(xué)機(jī)電工程學(xué)院,廣東廣州 510006)
目前,商品識(shí)別技術(shù)里非常成熟的是條碼識(shí)別技術(shù),商品信息通過編碼器儲(chǔ)存在條碼上,并被解碼器識(shí)別,但是條碼本身會(huì)存在局限性,如信息容量有限、條碼印刷質(zhì)量和商品運(yùn)輸過程的損壞。于是人們引入了無線射頻識(shí)別技術(shù)(RFID),RFID是通過無線電信號(hào)識(shí)別特定目標(biāo)并讀寫相關(guān)數(shù)據(jù),而無需機(jī)械或者光學(xué)接觸。RFID電子標(biāo)簽上會(huì)儲(chǔ)存唯一的ID碼,并提供詳細(xì)的商品信息,電子標(biāo)簽附著在商品上,將儲(chǔ)存的數(shù)據(jù)通過無線電信號(hào)調(diào)成的電磁場(chǎng)傳送出去,數(shù)米之內(nèi)都可以識(shí)別。具有數(shù)據(jù)讀寫方便、穿透性、記憶容量大等優(yōu)點(diǎn)[1]。計(jì)算機(jī)視覺技術(shù)應(yīng)用到商品識(shí)別也得到了很好的發(fā)展,主要是通過提取商品包裝圖像上獨(dú)特的特征來識(shí)別?;谔卣鞯膱D像匹配技術(shù)以SIFT/SURF特征點(diǎn)為典型代表,通過提取待檢圖像和模板圖像上的特征點(diǎn),并經(jīng)過一系列誤匹配點(diǎn)剔除操作,達(dá)到兩幅圖像精確匹配,實(shí)現(xiàn)圖像識(shí)別。完成超市貨架商品智能化管理[2-3]。人工智能和深度學(xué)習(xí)在各個(gè)方面都得到井噴式發(fā)展,曾志[4]提出一種基于圖像內(nèi)容的多特征融合的深度學(xué)習(xí)分類算法,實(shí)現(xiàn)大型網(wǎng)絡(luò)購物網(wǎng)站的商品圖像的分類。
隨著消費(fèi)升級(jí)趨勢(shì)的到來,社會(huì)人口結(jié)構(gòu)的變化,近幾年便利店的銷售額增速喜人,而商超的銷售額增速明顯放緩。同時(shí)便利店的用人和房租成本都在上升,利潤被壓榨,傳統(tǒng)的便利店缺乏對(duì)數(shù)據(jù)的收集和有效分析。于是將商品識(shí)別技術(shù)應(yīng)用至無人零售領(lǐng)域(如小型便利店)有很大的發(fā)展空間。經(jīng)過一定階段調(diào)研,發(fā)現(xiàn)小型便利店的商品種類不多、體積不大、單店總商品數(shù)不多,滿足顧客日常零食飲水等基本需求即可。采用成熟的條碼技術(shù)非常省成本,顧客調(diào)整商品條碼和掃碼器位置,完成掃碼結(jié)算工作,但是顧客不熟悉使用掃碼器和商品包裝變形導(dǎo)致條碼難識(shí)別等問題,會(huì)影響支付時(shí)間和購物體驗(yàn)。目前使用基于RFID技術(shù)的無人便利店方案也很多,每個(gè)商品上均人工需要貼上RFID標(biāo)簽,標(biāo)簽成本、貼標(biāo)時(shí)間成本和人力成本相對(duì)于小型便利店來說很高了。當(dāng)然還是有采用計(jì)算機(jī)視覺和深度學(xué)習(xí)技術(shù)相結(jié)合的技術(shù)方案,比如亞馬遜的無人便利店項(xiàng)目,不過是針對(duì)大型商超,技術(shù)要求高,運(yùn)營成本高,明顯不合算。所以本文作者在無人零售領(lǐng)域的小型無人便利店場(chǎng)景下,應(yīng)用計(jì)算機(jī)視覺和深度學(xué)習(xí)技術(shù)的研究,消費(fèi)者挑選商品后放置在結(jié)算臺(tái)處,結(jié)算臺(tái)正上方部署攝像頭獲取商品圖像,上傳至云端或者本地服務(wù)器,通過已訓(xùn)練好的模型來商品識(shí)別。訓(xùn)練模型階段可在實(shí)驗(yàn)室環(huán)境下使用大量商品圖像來進(jìn)行深度學(xué)習(xí)訓(xùn)練。
深度學(xué)習(xí)是一種特征學(xué)習(xí)方法,通過將原始數(shù)據(jù)由低層次的簡單非線性模型向高層次的抽象模型轉(zhuǎn)換[5-6]。標(biāo)準(zhǔn)神經(jīng)網(wǎng)絡(luò)是由基本神經(jīng)元組成,神經(jīng)元接收到來自N個(gè)其他神經(jīng)元傳遞過來的輸入信號(hào),這些輸入信號(hào)通過帶權(quán)重的連接進(jìn)行傳遞,神經(jīng)元接收到的總輸入值與神經(jīng)元的閾值進(jìn)行比較,然后通過激活函數(shù)處理以產(chǎn)生神經(jīng)元的輸出[7]。
基本神經(jīng)元結(jié)構(gòu)如圖1所示,其中x1、x2表示輸入向量,w1、w2為權(quán)重,b為偏置,σ(z)為激活函數(shù),a為輸出。多層感知機(jī)(MLP)是典型模型。
圖1 基本神經(jīng)元的網(wǎng)絡(luò)結(jié)構(gòu)
卷積神經(jīng)網(wǎng)絡(luò)(CNN)是從標(biāo)準(zhǔn)神經(jīng)網(wǎng)絡(luò)發(fā)展而來的,廣泛應(yīng)用在圖像領(lǐng)域。手寫數(shù)字識(shí)別準(zhǔn)確率逐漸趨近于人類識(shí)別準(zhǔn)確率,2012年圖像分類大賽ImageNet競賽中采用卷積神經(jīng)網(wǎng)絡(luò)對(duì)100萬張圖像進(jìn)行分類,準(zhǔn)確率大幅提高至84.7%[8]。CNN模型引入了很多實(shí)用策略,如卷積、池化、Dropout等,用以提高模型的容錯(cuò)等性能,其中卷積和池化是現(xiàn)有的CNN模型中必備的策略。卷積(Convolution)操作過程是:人工設(shè)定一個(gè)過濾器(或者叫內(nèi)核),通過這個(gè)過濾器從神經(jīng)網(wǎng)絡(luò)當(dāng)前層的左上角移動(dòng)至右下角,并且在移動(dòng)中計(jì)算窗口內(nèi)的加權(quán)和。在CNN模型中做卷積操作的時(shí)候,會(huì)初始化多個(gè)過濾器,提取到圖像的不同特定信息,如顏色、深淺、輪廓等,得到不同的輸出數(shù)據(jù)。如圖2所示不同卷積內(nèi)核對(duì)同一幅圖像卷積操作的效果,其中(a)、(d)是商品原圖,(b)、(e)是兩個(gè)同尺寸3×3不同結(jié)構(gòu)的卷積內(nèi)核,(c)、(f)分別是原圖(a)或(d)與內(nèi)核(b)、(c)卷積操作后的圖像。
圖2 不同過濾器卷積處理的效果
卷積操作之后往往會(huì)加上池化(Pooling)處理,池化操作的前向傳播過程也是通過移動(dòng)一個(gè)類似過濾器的結(jié)構(gòu)完成。不過窗口內(nèi)的運(yùn)算,不是采用加權(quán)和,而是采用最大值或者平均值運(yùn)算。原始輸入圖像可能很大,相鄰像素間具有相似性,故存在冗余像素信息,池化操作就是對(duì)相鄰的像素進(jìn)行“融合”。池化操作可以非常有效地縮小圖像的尺寸,從而減少最后全連接層的參數(shù),使用池化層可以加快計(jì)算速度,也有防止過擬合問題的作用。在后續(xù)發(fā)展中,由于神經(jīng)網(wǎng)絡(luò)模型的層數(shù)逐漸增多,卷積層和池化層合并稱為卷積層。池化操作常用的有最大池化和平均值池化。最大值池化操作如圖3所示,上一層輸入圖像中的窗口中x1至x9九個(gè)數(shù)的最大值是下一層圖像中f1的值,其中內(nèi)核尺寸為3×3。
圖3 最大值池化操作
典型的卷積神經(jīng)網(wǎng)絡(luò)模型有:LeNet-5,AlexNet,GoogleNet等。2012年在ImageNet競賽中使用的卷積神經(jīng)網(wǎng)絡(luò)刷新了圖像分類的記錄,這個(gè)CNN模型就是AlexNet模型。AlexNet整個(gè)網(wǎng)絡(luò)模型結(jié)構(gòu)共有8層網(wǎng)絡(luò)(模型的層數(shù)較多,池化層不計(jì)入總層數(shù)),前5層是卷積層,后3層是全連接層,最后一個(gè)全連接層的輸出是softmax[9]?;窘Y(jié)構(gòu)如表1所示。
表1 AlexNet模型配置表
采用AlexNet神經(jīng)網(wǎng)絡(luò)模型,對(duì)該模型進(jìn)行簡單調(diào)整,把在ImageNet競賽上訓(xùn)練好的網(wǎng)絡(luò)參數(shù)用于商品識(shí)別網(wǎng)絡(luò)的初始化參數(shù),然后用標(biāo)注的商品圖像對(duì)神經(jīng)網(wǎng)絡(luò)權(quán)重使用反向傳播和隨機(jī)梯度下降法(Stochastic Gradient Descent,SGD)進(jìn)行調(diào)整,直到該模型達(dá)到一定準(zhǔn)確率。實(shí)驗(yàn)流程如圖4所示。
首先,確定商品圖片的收集范圍。經(jīng)過一段時(shí)間的實(shí)地調(diào)研當(dāng)?shù)刂車鷶?shù)個(gè)小型零售店,統(tǒng)計(jì)和整理這些零售店的熱賣商品,選擇其中50種零食飲料等商品作為商品識(shí)別實(shí)驗(yàn)的原始數(shù)據(jù)。
其次,搭建獲取商品圖片的硬件平臺(tái)。為了盡可能貼近無人超市實(shí)現(xiàn)自動(dòng)識(shí)別商品的固定場(chǎng)景,搭建了一個(gè)由相機(jī)、光源、置物臺(tái)和支架組成的視覺平臺(tái),相機(jī)和光源固定在置物臺(tái)的正上方,置物臺(tái)就是顧客放置商品的識(shí)別結(jié)算臺(tái),置物臺(tái)選用黑色或者白色等單一色,商品和置物臺(tái)顏色差盡可能大。
再次,選擇商品的最大特征面。最大特征面也就是最能突出該商品特征的面,一般會(huì)有正反兩個(gè)面,某些商品只有一個(gè)最能突出商品那就只拍攝這一面的圖像。盡可能地模擬顧客放置商品在結(jié)算臺(tái)上各種位置,調(diào)整商品最大面在攝像機(jī)視野中的位置,一種商品每個(gè)最大面都拍攝50張圖片。有正反面的就拍攝正面50張、反面50張,該商品共拍攝100張圖像;只有正面的就拍攝正面50張,該商品共拍攝50張圖像。
最后,選取的50種商品按照以上方式拍攝商品圖像,作為商品圖像的原始數(shù)據(jù)。
圖4 實(shí)驗(yàn)流程圖
圖5 單張圖像的預(yù)處理過程
先是ROI提取。提取出商品圖像內(nèi)商品輪廓所在區(qū)域,即感興趣區(qū)域(Region of Interest,ROI)。單張圖像的預(yù)處理過程如圖5所示。拍攝單張商品原始圖像(圖5(a)),原始圖像尺寸為640×480,RGB彩色,采用OTSU閾值處理得到閾值圖像(圖5(b)),對(duì)閾值圖像進(jìn)行膨脹和開運(yùn)算等形態(tài)學(xué)處理后,尋找圖像內(nèi)面積最大的輪廓,就得到了原圖像中商品輪廓的正矩形框,即ROI區(qū)域(圖5(c)中白色正矩形框)。后是統(tǒng)一尺寸。對(duì)正矩形框四邊向外擴(kuò)大一定像素(在不超過原圖像邊界的情況下),得到擴(kuò)大的正矩形框(圖5(d)中白色組線條的正矩形框,細(xì)線條矩形框是ROI區(qū)域),在原圖像內(nèi)截取該正矩形框形成矩形圖像(圖5(e))。對(duì)矩形圖像進(jìn)行邊界擴(kuò)展操作后,得到長寬相等的新圖像(圖5(f)),并將新圖像縮放至尺寸為300×300的商品圖像(圖5(g))。
圖6 數(shù)據(jù)擴(kuò)充方式
每類商品的所有圖像均經(jīng)過上一節(jié)數(shù)據(jù)預(yù)處理后,還要經(jīng)過數(shù)據(jù)擴(kuò)充處理,比如鏡像翻轉(zhuǎn)(水平、垂直)、多角度旋轉(zhuǎn)(順時(shí)針、逆時(shí)針)等圖像數(shù)據(jù)擴(kuò)充方法,保證數(shù)據(jù)的相對(duì)平衡,圖像數(shù)據(jù)擴(kuò)充方式如圖6所示。最后達(dá)到每類商品每個(gè)特征面有1000張尺寸為300×300的圖像。最后將預(yù)處理好的圖像數(shù)據(jù)隨機(jī)分為訓(xùn)練集和測(cè)試集。
搭建實(shí)驗(yàn)平臺(tái)獲取商品圖像,利用OpenCV視覺庫對(duì)商品圖像進(jìn)行數(shù)據(jù)預(yù)處理和數(shù)據(jù)擴(kuò)充,利用TensorFlow深度學(xué)習(xí)框架對(duì)該神經(jīng)網(wǎng)絡(luò)模型進(jìn)行迭代訓(xùn)練。使用訓(xùn)練集來訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型,使用測(cè)試集來評(píng)估模型的準(zhǔn)確率。針對(duì)模型外參數(shù),比如學(xué)習(xí)率、迭代次數(shù)等參數(shù)時(shí),采用多折交叉驗(yàn)證法,將數(shù)據(jù)預(yù)處理階段劃分的訓(xùn)練集再拆分為實(shí)際訓(xùn)練集和交叉驗(yàn)證集。通過觀察這些參數(shù)的不同效果。利用交叉驗(yàn)證,最終確定了初始學(xué)習(xí)率為0.000 1,迭代次數(shù)為20萬次。
經(jīng)過一系列的處理和訓(xùn)練,得到了一定準(zhǔn)確率和穩(wěn)定性的神經(jīng)網(wǎng)絡(luò)模型和參數(shù),采用測(cè)試集驗(yàn)證,最終得到了平均90%的準(zhǔn)確性。該商品識(shí)別模型封裝為可調(diào)用的程序模塊,在小型便利店本地?cái)z像頭拍攝商品圖像,通過計(jì)算機(jī)上已訓(xùn)練模型來識(shí)別商品;或者本地?cái)z像頭獲取商品圖像后,上傳至云端通過已訓(xùn)練模型進(jìn)行識(shí)別。完成便利店對(duì)顧客已挑選商品的識(shí)別和結(jié)算工作。
隨著消費(fèi)升級(jí)趨勢(shì)的到來,社會(huì)人口結(jié)構(gòu)的變化,無人零售行業(yè)會(huì)得到極大的發(fā)展,對(duì)商品識(shí)別技術(shù)的需求也越來越高。由最初的人工識(shí)別、條碼識(shí)別、到無人RFID電子標(biāo)簽識(shí)別和深度學(xué)習(xí)識(shí)別,每一次技術(shù)的突破都意味著在商品流通和交易環(huán)節(jié)中,商品識(shí)別的安全性和便捷性需求不斷提高。最近幾年深度學(xué)習(xí)的強(qiáng)勁表現(xiàn)證明了該項(xiàng)技術(shù)在圖像分類領(lǐng)域有著極大的優(yōu)勢(shì)。本文提出的基于深度學(xué)習(xí)的商品識(shí)別方法,突破了基于商品包裝上的條碼或者特定標(biāo)簽的局限,利用商品本身的特征來識(shí)別該商品。實(shí)驗(yàn)表明,利用深度學(xué)習(xí)構(gòu)造的深度神經(jīng)網(wǎng)絡(luò)模型,對(duì)商品圖像識(shí)別的分類具有良好的效果。