單宇翔,龍濤,樓衛(wèi)東,陸海良,胡紅春,李軒
1 浙江中煙工業(yè)有限責任公司信息中心,杭州市上城區(qū)中山南路77號 310008;
2 深圳愛莫科技有限公司,深圳市南山區(qū)國際創(chuàng)新谷1期2棟A座 518000;
3 中國煙草總公司職工進修學(xué)院,鄭州 450008
零售終端是煙草產(chǎn)業(yè)鏈的重要組成部分,是煙草實現(xiàn)最終銷售的關(guān)鍵環(huán)節(jié)。隨著控煙政策日益趨緊,煙草品牌宣傳途徑愈發(fā)狹窄。終端陳列對于卷煙品牌培育、產(chǎn)品動銷的作用愈發(fā)凸顯,決勝終端對煙草企業(yè)而言更多了一份特殊的意義。煙草工商業(yè)企業(yè)各項工作開展和針對零售終端的眾多營銷活動,都需要對卷煙煙盒(本論文中的卷煙煙盒指的是卷煙陳列場景中的卷煙小盒,簡稱煙盒;煙盒圖像指的是對該場景進行拍照得到的煙盒外觀圖像)進行識別和分析,以進行卷煙市場表現(xiàn)評估(陳列分析、上柜率檢查)、零售終端評價、庫存盤點、零售終端信息采集等。
傳統(tǒng)的流程采用人工對圖片中的每一個卷煙煙盒圖像進行辨識、判斷,工作量巨大,且難以對市場上的數(shù)量巨大的所有卷煙煙盒實現(xiàn)準確的辨別,容易導(dǎo)致識別和判定結(jié)果出錯。近年來,圖像識別算法得到了快速的發(fā)展,特別是基于深度學(xué)習(xí)的方法[1],在很多場景得到了廣泛應(yīng)用,例如根據(jù)圖像內(nèi)容進行分類[2-3],無人駕駛場景進行車輛或者行人的檢測[4-9],以及廣泛應(yīng)用的人臉識別[10-13]。在上述這些領(lǐng)域,深度學(xué)習(xí)技術(shù)極大降低了人力成本,提升了任務(wù)精度和速度。但在煙草領(lǐng)域,除了在工業(yè)生產(chǎn)[14-15]和零售支付場景中的傳統(tǒng)的煙盒條碼識別,深度學(xué)習(xí)技術(shù)并未得到廣泛和有效的應(yīng)用。
造成這一局面的主要原因,在于深度學(xué)習(xí)的主流應(yīng)用場景與煙草應(yīng)用場景存在著較大的差異,現(xiàn)有技術(shù)無法有效應(yīng)用到煙草的相關(guān)場景中。以陳列場景的煙盒識別為例,由于不同業(yè)務(wù)場景的差異,卷煙煙盒會以各種形態(tài)出現(xiàn)。比如在終端陳列時,卷煙煙盒會在零售店鋪的前柜和背柜中成行成列地密集擺放,在宣傳樣品中會獨立存在于宣傳陳列架里。由于零售終端本身業(yè)態(tài)情況復(fù)雜,包含了街邊店、超市、便利店、煙草直營店等多種類型。店鋪條件差異大,使得煙盒圖像本身的差異巨大;加之受到拍攝人員、拍攝設(shè)備、拍攝條件等影響,使得拍攝的煙盒圖像無法標準化,出現(xiàn)較多的玻璃反光、遮擋、不同角度擺放等;另外煙盒規(guī)格本身數(shù)量多,新品更新迭代快,某些品牌不同規(guī)格之間在外包裝上差異非常小,不同品牌的規(guī)格之間也有很多具有較強的相似性。圖1 和圖2 展示了一些比較典型的煙盒陳列圖片和相似性規(guī)格的煙盒情況,從圖中可以看出卷煙煙盒識別所需要支持的復(fù)雜程度非常高。
圖1 零售終端復(fù)雜的煙盒圖片場景Fig. 1 The cigarette packs placed in complex retail stores
圖2 部分規(guī)格之間的外觀差異非常小,上面一行為同一品牌,下面一行為不同品牌Fig. 2 Visual similarity in appearance of cigarette cases. Top row: the same brand. Bottom row: different brands
采用主流的深度學(xué)習(xí)圖像識別方法(如人臉識別的框架模型)來進行卷煙煙盒識別,面臨以下幾個方面的挑戰(zhàn):1)卷煙煙盒外觀圖像的角度隨意性更大,人臉識別、車輛識別這類問題,目標對象的呈現(xiàn)姿態(tài)相對固定,基本都以正立的方式出現(xiàn)在圖片中。主流的目標檢測算法例如Faster R-CNN[16]、YOLO[17],對于大部分處于正立狀態(tài)的目標對象,經(jīng)過大規(guī)模的數(shù)據(jù)對深度學(xué)習(xí)模型訓(xùn)練后,都可以實現(xiàn)較好的檢測。而對于任意擺放和拍攝的煙盒對象,這些方法都存在著檢測能力弱的問題;2)煙盒圖像往往會密集出現(xiàn),相鄰擺放,使得檢測和識別的難度增大。在一般圖像識別任務(wù)中,即使對物體沒有進行很好的定位,目標周圍基本都以背景為主。陳列條件下的煙盒識別中,相鄰煙盒對識別會產(chǎn)生較大干擾,是準確煙盒識別的一大挑戰(zhàn)。因此,煙盒檢測和識別的關(guān)鍵在于如何對屬于該煙盒的區(qū)域信息進行有效的提取,保證屬于本煙盒的外觀圖像內(nèi)容包含在內(nèi)又不引入相鄰煙盒圖像的干擾信息;3)基于深度學(xué)習(xí)訓(xùn)練煙盒識別模型需要大量的訓(xùn)練樣本。而煙盒的陳列場景環(huán)境復(fù)雜,煙盒與周圍商品很難區(qū)分,該情況極大地增加了人工標注的難度,對構(gòu)建煙盒識別深度學(xué)習(xí)模型帶來了巨大挑戰(zhàn)。
為了解決在復(fù)雜場景下的煙盒識別問題,應(yīng)對以上提到的實際挑戰(zhàn),本論文首次提出了三個核心步驟的卷煙煙盒識別框架:1)卷煙煙盒可視區(qū)域檢測;2)卷煙煙盒圖像幾何正則化;3)基于仿真圖像訓(xùn)練的卷煙煙盒識別。其中,煙盒可視區(qū)域檢測將目標檢測問題轉(zhuǎn)化為實例化區(qū)域分割問題,有效的應(yīng)對多角度拍攝和煙盒相鄰太近的挑戰(zhàn);然后根據(jù)實例分割結(jié)果,擬合煙盒可見圖像關(guān)鍵點,根據(jù)可見區(qū)域的關(guān)鍵點實現(xiàn)圖像變換,將煙盒視區(qū)域變換到正立的煙盒圖像模板,實現(xiàn)煙盒圖像的正則化;最后,為了應(yīng)對訓(xùn)練數(shù)據(jù)不足的問題,本論文采用基于人類知識的煙盒圖像仿真增強方法。對于單一規(guī)格的單張圖片,實現(xiàn)各種復(fù)雜場景的圖像模擬和數(shù)據(jù)的大規(guī)模增廣,基于增廣后的仿真圖像大數(shù)據(jù)實現(xiàn)深度學(xué)習(xí)模型的訓(xùn)練。
綜上所述,本論文將煙盒實例化分割和煙盒圖像幾何正則化步驟結(jié)合起來,消除了拍攝角度對識別的影響,并通過圖像仿真方法解決了煙盒真實數(shù)據(jù)相對匱乏和深度學(xué)習(xí)需要大量訓(xùn)練樣本驅(qū)動之間的矛盾。通過以上設(shè)計的新型架構(gòu)和方法,最終有效構(gòu)建了復(fù)雜場景下的煙盒圖像識別系統(tǒng)。
本論文設(shè)計了完整的煙盒識別系統(tǒng),如圖3 所示,包含煙盒可視區(qū)域檢測-煙盒圖像正則化-基于仿真圖像訓(xùn)練的煙盒識別三個基礎(chǔ)步驟。
圖3 煙盒識別系統(tǒng)的流程Fig. 3 The flow of cigarette cases recognition system
煙盒可視區(qū)域檢測的目的是將屬于煙盒的圖像從背景圖片中區(qū)分出來。在行人、車輛、人臉等通用檢測任務(wù)中,被檢測目標通常比較稀疏,角度旋轉(zhuǎn)情況較少。通常采用Faster R-CNN 或YOLO 等檢測算法來預(yù)測目標的左上、右下兩個頂點坐標。
但在卷煙煙盒圖像檢測任務(wù)中,由于環(huán)境的復(fù)雜多變,卷煙煙盒的密集擺放、陳列角度的多變都會顯著降低上述算法對非正立的煙盒檢測效果,且容易遺漏部分有效區(qū)域,或者誤包含其它規(guī)格煙盒區(qū)域。如圖4 所示,由于煙盒拍攝角度有傾斜,導(dǎo)致3 個示意框都無可避免地將不屬于自己的區(qū)域劃入了示意框范圍內(nèi)。這種干擾引入勢必影響到煙盒識別的精度。如右上角的“紅塔山”紋理將右邊的“云煙”包了進來,在識別過程中,“云煙”紋理帶來的干擾信息識別影響“紅塔山”紋理的正確識別。
圖4 用主流檢測算法檢測卷煙煙盒得到的結(jié)果(如紅框所示)Fig. 4 The cigarette cases detection results obtained by using traditional algorithms
為了克服上述問題,本文利用實例分割來精確檢測出每個煙盒的有效區(qū)域。為了訓(xùn)練模型,本文收集并標注了30 萬張煙盒陳列圖片,每張圖片都對每一個像素點進行了標定,指明該像素屬于前景,還是屬于背景。本系統(tǒng)采用了Mask R-CNN[18]模型作為檢測模塊,在8 塊RTX 2080Ti 顯卡服務(wù)器上,利用手工標注的30 萬煙盒對其進行訓(xùn)練。與YOLO、Faster R-CNN 等算法相比,Mask R-CNN 不再是輸出一個典型的正立矩形框,而是將目標檢測問題轉(zhuǎn)化為一個實例分割問題,對于每個圖像的像素點進行賦值實現(xiàn)區(qū)域分割。Mask R-CNN 的結(jié)構(gòu)如圖5 所示。
圖5 Mask R-CNN 的處理流程Fig. 5 The main process of Mask R-CNN
當陳列圖像輸入Mask R-CNN 網(wǎng)絡(luò)后,網(wǎng)絡(luò)首先檢測出每個煙盒的最小外接矩形,而后對每個煙盒的最小外接矩形進行像素點級別的分割,將煙盒區(qū)域和其它干擾像素完全分開。與主流的正立矩形框目標檢測算法相比,本文的檢測模型不受煙盒旋轉(zhuǎn)、排列、朝向等因素的影響,對相互交疊的煙盒也能給出較為精準的判斷,部分結(jié)果如圖6 所示。從圖中可以看出,本文的檢測結(jié)果不受煙盒擺放的影響,能夠準確預(yù)測出每一個煙盒的位置。
圖6 卷煙煙盒檢測結(jié)果,其中綠框表示檢測得到外接矩形,不同顏色的色塊表示煙盒的實際區(qū)域Fig. 6 Cigarette cases segmentation results. The green rectangles represent the predicted bounding boxes, and blocks of different colors indicate the actual area of the cigarette case
由于通過檢測模型得到的卷煙煙盒圖像位置是不規(guī)則的分割結(jié)果,如果直接進行識別,即使同種煙盒的外觀都會呈現(xiàn)出多種變化,影響識別效果。這種問題如圖7 所示。
圖7 同一種煙盒在不同角度成像,外觀會有很大差異Fig. 7 The appearance of the same case varies greatly under different angles
為了消除這種差異性,本文設(shè)計了卷煙煙盒圖像正則化模塊,將每一個煙盒的形狀修正為正方形,再進行后續(xù)的識別。正則化模塊的主要流程有三步:計算煙盒頂點,計算透視矩陣,進行透視變換。
首先,本文對檢測模塊的輸出的煙盒圖像分割結(jié)果的前景區(qū)域進行輪廓檢測,提取出所有輪廓點的坐標,再通過對圖像輪廓點進行四邊形擬合,從而得到煙盒的四個頂點。具體流程如圖8 所示。
圖8 卷煙煙盒頂點的獲得流程Fig. 8 The process of calculating the key points of the cigarette case
而后,本文定義了邊長為256 像素的正方形,則正方形的四個頂點坐標分別為(0,0),(0,255),(255,255),(255,0),通過計算求解出煙盒屏幕和正方形屏幕之間的透視變換矩陣。
根據(jù)透視變換原理[19],在3D 空間中兩個平面上的點進行變換滿足下列關(guān)系:
而空間中的點(x,y,z)在屏幕上的投影(x',y'),可通過下列公式計算:
令煙盒四個頂點的3D 空間坐標為(xoldk,yoldk,zoldk),屏幕投影坐標為(xoldk',yoldk'),正方形四個頂點的3D 空間坐標為(xnewk,ynewk,znewk),屏幕投影坐標為(xnewk',ynewk'),k= 1,2,3,4。則易知:
根據(jù)公式(1)(3),進一步推理出煙盒屏幕頂點坐標與正方形屏幕頂點坐標之間的關(guān)系:
進一步化簡得:
為了方便計算,引入8 個新變量β11,β12,β13,…,β32,最終方程表示為:
其中:
因為煙盒和正方形4 個頂點之間映射關(guān)系構(gòu)建了8 個方程(x 坐標和y 坐標分別都有映射關(guān)系),而方程中的未知數(shù)a11~a32剛好也是8 個,易得知:通過煙盒與正方形頂點的映射關(guān)系可以求解出β11~β32這8 個未知參數(shù)。
最后,本文根據(jù)計算得到的透視變換參數(shù)β11~β32,對整個煙盒紋理進行透視變化,就能得到最終正則化的煙盒紋理,部分效果圖9 所示??梢钥闯觯簬缀握齽t化的煙盒在相似度上有了很大的提升,更利于后續(xù)的識別任務(wù)。
圖9 原始煙盒圖像與正則化后的煙盒圖像的對比Fig. 9 Comparison of original case image and cigarette case image after regularization
煙盒識別模塊是本系統(tǒng)的最后一個模塊,將正則化后的煙盒圖片送入煙盒識別模塊,就能得到煙盒圖片的識別結(jié)果。本論文采用了在人臉識別領(lǐng)域性能優(yōu)異的DocFace[20]模型,將該模型提出的diam_softmax方法用于卷煙煙盒識別器的訓(xùn)練中。DocFace 的優(yōu)點在于對非同源數(shù)據(jù)的訓(xùn)練上有著較好的性能,能夠充分利用生成樣本存在的多樣性,提高模型在真實場景上的識別性能。
通過自主研發(fā)的數(shù)據(jù)仿真引擎進行樣本增廣,構(gòu)建煙盒3D 模型和設(shè)定不同的光照、角度、反光、遮擋等控制參數(shù),從而獲得各種外觀不同的訓(xùn)練樣本,有效解決訓(xùn)練數(shù)據(jù)不充足的問題。部分仿真引擎生成的圖片效果如圖10 所示。與深度學(xué)習(xí)領(lǐng)域常用的對抗生成網(wǎng)絡(luò)技術(shù)(Generative Adversarial Nets)[21]相比,我們的數(shù)據(jù)仿真引擎能保證生成的每一張樣本都嚴格歸屬于特定類別,不會出現(xiàn)模棱兩可的訓(xùn)練樣本。利用仿真引擎,生成了1000 個暢銷煙品近1000 萬張煙盒圖像樣本。
圖10 通過仿真引擎生成的虛擬訓(xùn)練樣本Fig. 10 Virtual training samples generated by simulation engine
將得到的數(shù)據(jù),利用DocFace 框架在GPU 服務(wù)集群(8 片英偉達RTX 2080Ti 高性能顯卡)上進行訓(xùn)練。得益于仿真引擎生成的大量有效仿真數(shù)據(jù),訓(xùn)練得到的算法模型可以準確地區(qū)分不同規(guī)格的煙盒,識別效果如圖11 所示。無論是在外觀上只有細微的差異,還是實際場景中造成了煙盒部分的遮擋,智能圖像識別系統(tǒng)均可以進行準確的識別。同時與構(gòu)建的規(guī)格數(shù)據(jù)庫實現(xiàn)關(guān)聯(lián),準確的輸出產(chǎn)品屬性信息,包括廠商信息、品牌信息、規(guī)格名稱信息等。識別范圍覆蓋中國市場上流通的國內(nèi)卷煙品牌規(guī)格和國外進口的卷煙品牌和規(guī)格。同時還可以處理各種復(fù)雜的陳列情況,包括光照變化、遮擋、角度大等實際情形。
圖11 卷煙煙盒識別結(jié)果展示Fig. 11 Demonstration of cigarette cases recognition result
本論文設(shè)計的深度學(xué)習(xí)方法采用PyTorch 框架進行訓(xùn)練,硬件環(huán)境配置為2 個Intel? Xeon? E5-2650處理器,8 塊NVIDIA GeForce RTX 2080Ti-12G 計算顯卡,服務(wù)器硬盤為100TB,內(nèi)存為512GB。其中檢測模型訓(xùn)練的時間為1 周,識別模型的訓(xùn)練時間為1 周。然后對訓(xùn)練的模型進行測試。從真實的煙品陳列場景中挑選出200 張圖片作為測試集,部分測試樣本如圖12 所示。
圖12 測試數(shù)據(jù)集圖片樣本Fig. 12 Image samples of test data set
運用手工方式標注每個煙盒的區(qū)域與類別,一共得到10000 個左右的標注煙盒和品名。通過對比系統(tǒng)輸出與人工標注結(jié)果的差異來測試煙盒檢測與煙盒識別的性能。
用公式(8)評估單個卷煙煙盒的檢測精度:
其中areapred表示預(yù)測模型給出單煙盒前景區(qū)域預(yù)測值,areatruth表示人工標注的單煙盒前景準確值,通過對二者的交集除以二者的并集,就得到了單煙盒的檢測準確率。容易理解:當預(yù)測結(jié)果和真實結(jié)果完全不重疊時,精度為0;當預(yù)測結(jié)果和真實結(jié)果完全重疊時,精度為1。
按照公式(9)計算整個測試集的平均檢測精度
最終本系統(tǒng)的檢測模塊在測試集合上獲得了95.1%的平均精度,精度分布情況如圖13 所示??梢钥闯?,檢測結(jié)果在絕大多數(shù)樣本上都取得了很好的檢測精度,只有極少數(shù)樣本的檢測精度低于0.2 左右,通過觀察得知:這部分樣本存在嚴重遮擋、不完整、模糊等問題,即使手工標注出了煙盒區(qū)域,但其內(nèi)容也無法支持后續(xù)的品名識別,屬于無效數(shù)據(jù)。如果除去這部分數(shù)據(jù),本系統(tǒng)的平均檢測精度達到了96.9%,完全滿足了煙盒自動化檢測的需求。部分無法識別的數(shù)據(jù)如圖14 所示。
圖13 檢測結(jié)果的分布直方圖。橫坐標代表檢測精度,縱坐標代表對應(yīng)精度樣本的數(shù)量Fig. 13 Histogram of the test results. The horizontal axis corresponds to the recognition accuracy,and the vertical axis corresponds to the number of samples
圖14 部分檢測失敗的煙盒圖像樣本,本身紋理因為遮擋、反光和殘缺等因素而被破壞Fig. 14 Some image samples of cigarette cases that failed in detection were destroyed in different degrees due to occlusion,reflection, and mutilation
將200 張測試樣本中9874 張煙盒圖像根據(jù)其真實標簽進行分類,共780 個煙品類別對設(shè)計的圖像識別模型進行測試,使用圖像識別領(lǐng)域常用的命中率(True Positive Rate)和錯誤命中率(False Positive Rate, FPR)組成的ROC 曲線[23]對系統(tǒng)識別模塊的性能進行評估。最終結(jié)果如圖15 所示??梢钥闯觯擣PR=0.01 時TPR 約為0.95。這個實驗結(jié)果表明了本文提出的模型在煙盒識別上取得了較高精度,可滿足煙盒自動化識別的需求。
圖15 識別ROC 曲線對比:本論文方法(樣本正則化+DocFace)與傳統(tǒng)深度學(xué)習(xí)方法(樣本未正則化+mobilenetV2[22]分類)的結(jié)果對比Fig. 15 The ROC curve of cigarette case recognition result
本研究利用人工智能圖像識別方法來實現(xiàn)圖像中的煙盒區(qū)域分割、煙盒圖像變換與煙盒識別的完整系統(tǒng)。由于在實際中的煙盒圖像存在遮擋、隨意擺放、玻璃反光、拍攝角度大等眾多挑戰(zhàn),直接采用深度學(xué)習(xí)目標檢測的方法存在較大的難度。本文提出的方法將煙盒檢測問題當成可視區(qū)域分割問題,實現(xiàn)了不同角度、不同遮擋程度的煙盒的圖像區(qū)域定位;然后將分割出來的可視區(qū)域進行圖像變換,變換到正則位置;最后將變換到正則位置的煙盒圖像區(qū)域輸入到深度學(xué)習(xí)圖像識別模型,實現(xiàn)了高精度的煙盒規(guī)格分類識別。采用大量仿真數(shù)據(jù)對識別模型進行訓(xùn)練,并從實際的卷煙柜臺陳列圖像中隨機挑選了各類卷煙煙盒圖像進行人工標注,采用標注圖像對設(shè)計的檢測和識別方法進行檢驗。測試結(jié)果表明:本論文方法精度高,魯棒性強,抗干擾能力強。對于包含100 個左右煙盒的陳列圖像,在單顯卡(NVIDIA GeForce RTX 2080Ti-12G)的計算服務(wù)器上完成所有煙盒的檢測和識別,本文提出的整體框架推理時間為300ms 左右。
該智能化煙盒識別技術(shù)可以為煙草營銷數(shù)字化智能化轉(zhuǎn)型提供有力的技術(shù)支撐,該技術(shù)已在浙江中煙互聯(lián)網(wǎng)營銷活動場景中進行了試點應(yīng)用。后續(xù)將對條煙的圖像識別開展深入研究,通過信息技術(shù)和大數(shù)據(jù)分析,賦能煙草營銷業(yè)務(wù)的創(chuàng)新。