梁冬,陳智斌,農英雄,潘劍,汪倍貝
廣西中煙工業有限責任公司,南寧市西鄉塘區北湖南路28號 530001
卷煙零售數據是煙草行業的重要信息,通過卷煙零售數據可以進行精準銷量預測,有效指導營銷和供應鏈協同工作,從而減少庫存積壓,降低成本,提升行業的經營和管理水平。目前卷煙零售數據采集方式主要是使用POS 零售終端、市場人員到店采集等人工采集方式,其中POS 零售終端存在問題是零售戶未養成規范掃碼的習慣,同時POS 零售終端軟硬件的故障影響零售戶使用,導致零售戶的配合度不高[1];市場人員到店采集數據存在問題是人力成本較高,采集數據的覆蓋率較低,且準確率難以保證。因此,人工采集數據的方法難以滿足行業對更高質量數據的需求,亟需構建一種自動化采集卷煙零售數據的方法。
目前,自動化數據采集技術主要有RFID 技術、重力識別技術和圖像識別技術等。其中RFID 技術在物流和倉儲方面有較多應用,可提高物流和倉儲的管理效率[2-4],但由于使用RFID 技術需要為每個卷煙商品貼上RFID 標簽,這會較大增加零售戶的工作量,實際操作中難以實施;重力識別技術是自動零售和無人零售自動化采集數據的重要方式,可通過商品的不同重量識別商品型號,但由于卷煙商品的重量需符合一定規格[5-6],導致大部分卷煙商品的重量相近,使用重力識別技術難以區分;圖像識別技術近年來發展迅速,準確率有了較大提升[7-10],目前已廣泛應用在零售、安防、教育和交通等行業,適用于卷煙零售場景的數據采集。因此,本文研究基于圖像識別技術建立一種采集數據的方法,實現卷煙零售數據的自動化采集。
數據采集系統結構主要分為本地端的采集設備和云端的存儲數據庫,其中本地端采集設備包含有RGBD 深度攝像頭、高清彩色攝像頭、本地計算平臺等,云端存儲數據庫為MySQL 關系型數據庫,系統結構如圖1 所示。圖中攝像頭采用頂式安裝方式,以減少對消費者的影響,將結算臺上表面做為卷煙的識別區,當卷煙放到識別區時識別卷煙的牌號。RGBD深度攝像頭是橫向100°、縱向75°的主動式雙目攝像頭,用于采集消費者行為圖像數據;高清彩色攝像頭配備長焦鏡頭,用于采集清晰的卷煙圖像數據;本地計算平臺CPU 型號為i7-8700,并配備1080Ti GPU。工作時,本地計算平臺通過以太網獲取RGBD 深度攝像頭和卷煙攝像頭采集的圖像,經過實時處理后輸出結構化的卷煙零售數據,并將該卷煙零售數據上傳到云端存儲數據庫完成數據存儲。

圖1 數據采集方法的系統結構圖Fig. 1 System structure of data collection method
數據采集由人體檢測與跟蹤算法、卷煙檢測和識別算法、人體關鍵點檢測算法和消費者行為識別算法四種算法協同構成,各算法的結構關系如圖2 所示。

圖2 數據采集方法的算法結構圖Fig. 2 Algorithm structure of data collection method
(1)人體檢測與跟蹤算法:實時接收RGBD 深度攝像頭的Depth 圖像,基于深度圖實現頂式視角下的人體檢測和跟蹤,輸出人體ID 和頭頂點的位置,穩定跟蹤消費者在購買卷煙期間的行動軌跡。
(2)卷煙檢測與識別算法:實時接收RGB 高清攝像頭的圖像,檢測卷煙在圖像中的位置和姿態,將卷煙局部圖像截取出來后通過姿態信息完成卷煙的姿態矯正,并對矯正后的卷煙圖片完成牌號識別,輸出卷煙的位置和ID。由卷煙檢測與識別算法的結果產生兩種卷煙事件,分別是卷煙出現事件與卷煙消失事件。其中卷煙出現事件定義為上一次識別結果中沒有出現該卷煙,而當前識別結果中出現該卷煙;卷煙消失事件定義為上一次識別結果中出現該卷煙,而當前識別結果中沒有出現該卷煙。
(3)人體關鍵點檢測算法:當發生卷煙事件時,接收RGBD 深度攝像頭的RGB 圖像,檢測頂式視角下的人體關鍵點,將其中的人體的頭頂點和人手點位置輸出,作為消費者行為識別算法的數據輸入。
(4)消費者行為識別算法:當事件發生時,先接收人體檢測與跟蹤算法和人體關鍵點檢測算法輸出的頭頂點位置信息,通過空間位置關系實現兩者的關聯,關聯后將人體關鍵點檢測出來的人手位置信息綁定到對應的人體ID 上;其次,將人體ID 對應的人手位置和卷煙位置通過空間位置關系進行關聯,如果存在關聯關系,則認為是該人手發生了拿取或放回卷煙事件,將此時的人體ID、卷煙ID 和事件ID 作為結果輸出。
在多個卷煙零售店部署數據采集方法的本地端采集設備,使用RGBD 深度攝像頭采集5000 張包含消費者進入時刻、到收銀臺時刻、拿取卷煙時刻等各時刻的RGBD 圖像,采集完成后對圖像進行人體關鍵點標注,形成人體關鍵點檢測數據集Dp;使用高清彩色攝像頭采集5000 張卷煙在售賣時的圖像,包含有105 種來自于不同卷煙品牌的卷煙牌號,采集完成后對圖像進行卷煙位置、姿態和牌號標注,形成卷煙數據集Dc;聯合使用RGBD 深度攝像和高清彩色攝像頭采集300 個消費者購買卷煙的視頻片段,其中發生拿取行為451 次、放回行為143 次和購買行為308次,對消費者行為和卷煙牌號進行記錄,形成消費者行為數據集Dv。
穩定的人體跟蹤算法使消費者在購買卷煙期間保持同一個身份ID,是消費者連續行為識別的基礎,整個算法包含圖像預處理、人體頭頂候選點查找、人體頭頂候選點匹配三個部分。
2.1.1 圖像預處理
令Id為從RGBD 攝像頭獲取的深度圖像,將Id減去背景深度圖Ib,生成前景深度圖If。將If通過深度攝像頭和地面的空間位置關系轉換到地面坐標系下,生成的前景高度圖Ih。為減少噪聲,采用中值濾波對Ih進行濾波,生成去噪后的高度圖Ihm。在高度圖Ihm中過濾掉高于2.5 m 的物體,即把Ihm中高于2.5 m 的高度值設置為0,生成目標高度圖Iho,到此完成圖像預處理,其過程結果如圖3 所示。

圖3 圖像預處理過程結果Fig. 3 Results of image preprocessing
2.1.2 人體頭頂候選點查找
從目標高度圖Iho中搜索局部極大值點,生成P1點集,搜索規則是該點的高度值大于8 鄰域各點的高度值。對P1點集進行空間聚類,生成P2點集,聚類規則是計算P1點集中所有兩點組合(p1i,p1j)的3維空間距離d1ij,將d1ij小 于閾值T1的點歸為同一類,歸類完成后選擇該類中高度值最大的點代表這一類。以P2點集的每個點作為中心點,采用Meanshift 算法在Iho上生成P3點集。對P3點集進行空間聚類,生成P4點集,聚類規則與P2點集的聚類規則一致。對P4點集進行篩選,生成P5人體頭頂候選點集,篩選規則是以P4點集的每個點作為中心點,在Iho上向水平和垂直方向延伸10 cm,滿足至少在一個方向上高度落差不超過10 cm。各點集處理結果如圖4 所示。

圖4 點集處理結果Fig. 4 Results of point sets processing
2.1.3 人體頭頂候選點匹配


人體在頂式視角下有7 個較為關鍵的點,分別是頭頂點、左右肩點、左右肘點和左右手點,這些點做為消費者行為識別算法的信息輸入,幫助完成消費者的行為識別。頂式視角下的7 點式人體關鍵點檢測示例如圖5 所示。

圖5 人體關鍵點檢測示例Fig. 5 Example of human keypoints detection
目前常用的關鍵點檢測算法有Openpose[11]、Alphapose[12]、Densepose[13]和CenterNet[14]等,其中基于CenterNet 的人體關鍵點檢測算法在保持精度的同時有更好的實時性,因此本研究基于CenterNet 設計頂式視角下的人體關鍵點檢測模型。檢測模型主干網絡選擇DLA34[15],在其基礎上增加跳躍連接,同時把DLA34 在上采樣階段的卷積層替換成可變形卷積層,最后在輸出的特征圖上直接回歸出人體中心點熱力圖、人體中心點局部偏差、人體包圍框尺寸和人體關鍵點相對中心點偏移量四類信息。檢測模型應用時,通過人體關鍵點相對中心點的偏移量即可確定人體關鍵點的位置,但由于其位置精度有限,為了進一步提升關鍵點的位置精度,檢測模型在輸出的特征圖上增加了人體關鍵點熱力圖和人體關鍵點局部偏差兩類信息,檢測模型的結構如圖6所示。檢測模型應用時,先通過人體關鍵點相對中心點的偏移量確定人體的初始關鍵點,其次利用人體關鍵點熱力圖及其局部偏差可以確定精準的人體關鍵點,由于精準的人體關鍵點是獨立的,沒有和人體實例關聯,因此需將精準人體關鍵點與其最近的初始人體關鍵點進行綁定。綁定時,精準人體關鍵點應位于人體包圍框內。綁定完成后,精準人體關鍵點和人體實例完成關聯,將關聯好的精準人體關鍵點做為檢測結果輸出。

圖6 人體關鍵點檢測模型結構Fig. 6 Structure of human keypoints detection model
卷煙檢測完成卷煙的位置和姿態檢測,其中卷煙的姿態用卷煙的4 個角點P1(x1,y1),P2(x2,y2),P3(x3,y3),P4(x4,y4) 來 表 示, 且 滿足x1≤x2≤x3≤x4。與人體關鍵點檢測類似,基于CenterNet 來設計卷煙的檢測模型。卷煙識別選擇Darknet53[16]作為特征提取模型,將Darknet53 最后一個平均池化層的輸出作為卷煙的特征向量,該向量是1024 維。在進行卷煙牌號識別時,先采用卷煙檢測模型完成卷煙在圖像中位置和姿態檢測,其次利用卷煙姿態信息矯正卷煙的姿態,從而生成卷煙的正向圖像,然后采用Darknet53 網絡提取出卷煙正向圖像的特征向量,最后計算待識別卷煙的特征向量與卷煙特征庫的每個向量的歐式距離并選擇其中最小的距離值,判斷該距離值是否小于閾值,如小于則判定這兩個特征屬于同一卷煙牌號,否則認為當前卷煙是未知的卷煙牌號。卷煙檢測與識別算法的算法流程如圖7所示。

圖7 卷煙檢測與識別算法流程Fig. 7 The flow of cigarette detection and recognition algorithm
數據采集方法定義了消費者的三種行為,分別是拿取卷煙、放回卷煙和購買卷煙行為。其中拿取卷煙行為定義為發生卷煙消失事件時,消費者的手處于卷煙消失的位置;放回卷煙行為定義為發生卷煙出現事件時,消費者的手處于在卷煙出現的位置;購買卷煙行為定義為消費者離開零售店時,對于同一個卷煙商品,消費者的拿取行為次數與放回行為次數的差值為1。以下以拿取卷煙行為為例說明消費者行為識別算法的流程:
(1)消費者伸手從卷煙識別區拿取卷煙的過程中,當卷煙被消費者的手遮擋時,觸發卷煙消失事件,如圖8(a)所示。保存卷煙發生消失事件時的中心點位置Pc(xc,yc)和其牌號Bc,同時保存RGBD 深度攝像頭對應時刻的RGB 圖像和Depth 圖像,記為Irgb和Idepth,其中Irgb如圖8(b)所示;

圖8 消費者拿取行為示例Fig. 8 Example of consumer pick-up behavior
(2)使用人體關鍵點檢測算法檢測人體在Irgb的關鍵點位置,記頭頂點為Ph(xh,yh)、左手點為P1(x1,y1)和右手點為Pr(xr,yr);
(3)使用人體檢測與跟蹤算法在Idepth上獲取跟蹤結果的頭頂點列表和人體編號列表,分別記為記為Lh,Lid;

式中d為P1(x1,y1)在Idepth上的深度值。
(6)將點P' l(x1,y1,Zl)通過深度攝像頭和高清彩色攝像頭的空間位置關系[R|T],轉成高清彩色攝像頭三維坐標系下的坐標點Pk(xk,yk,Zk),轉換關系如下式(2)所示:

(7)通過高清彩色攝像頭內參cu',cv',fx',fy'將Pk(xk,yk,Zk)轉換到高清彩色攝像頭平面坐標系下的點Po(xo,yo),轉化關系如下式(3)所示:

(9)重復(5)-(8)步驟判斷右手點Pr(xr,yr)是否有發生拿取卷煙行為。
在數據集Dv上測試人體跟蹤算法的性能,結果顯示:在本地計算平臺的CPU 單核上運行幀率達到40 FPS;在300 個消費者購買卷煙的視頻片段中,消費者人體ID 在購買卷煙期間始終保持一致,跟蹤結果全部正確。
從人體關鍵點檢測數據集Dp中隨機選擇4000 張作為訓練集,余下1000 張作為測試集。設置學習率1.25e-4,批處理大小為32,在深度學習服務器上訓練140 epochs,并在epochs 為90,120 時將學習率下降10 倍。訓練模型過程中采用隨機裁剪、隨機翻轉和圖像縮放等數據增強方法,以獲得更好的訓練效果。訓練完成后,在測試集上對人體關鍵點檢測模型進行準確率評估,結果如表1 所示。

表1 人體關鍵點檢測結果Tab. 1 Detection results of human key points
(1)卷煙檢測模型訓練與測試結果。從卷煙數據集Dc中隨機選擇4000 張作為卷煙檢測模型的訓練集,余下1000 張作為測試集。訓練方式和人體關鍵點類似,訓練完成后在1000 張測試集上對卷煙檢測模型進行準確率評估,結果顯示:卷煙位置檢測的AP 為95.6%,卷煙關鍵點檢測的AP 為93.4%。
(2)卷煙識別模型訓練與測試結果。在卷煙數據集Dc中利用卷煙位置信息,將卷煙局部圖像從原始圖像中截取出來,并利用卷煙的姿態信息通過平面射影變換矯正卷煙姿態,生成有12552 張卷煙正向圖像的數據集Dr。從Dr中隨機選擇10000 張作為卷煙識別模型的訓練集,其余作為測試集。由于卷煙正反面的特征差異,訓練時將卷煙的正反面分為兩種類型。設置學習率為1e-3,動量為0.9,批處理大小為32,在深度學習服務器上訓練20000 輪次。訓練完成后在2552 張測試集上進行模型準確率測試,結果顯示卷煙識別模型的準確率為99.7%。
在Dv數據集上對消費者行為識別方法進行測試,測試時忽略卷煙牌號和人體跟蹤ID 的正確性,結果如表2 所示。消費者拿取行為示例如圖8 所示。

表2 消費者行為識別結果Tab. 2 Results of custom behavior recognition
記一次正確的卷煙零售數據采集為:在消費者行為識別中,人體跟蹤ID、卷煙ID 和事件ID 同時正確,則數據采集的準確率為: 正確計數/(正確計數+錯誤計數)×100%。在Dv數據集上對數據采集方法進行測試,結果顯示:在594 次消費者拿取和返回行為數據中,正確采集的計數為568 次,準確率為95.6%。
(1)本研究基于圖像識別技術實現了一種自動化采集卷煙零售數據的方法,該方法的采集準確率達到95.6%,可為煙草行業提供高質量的卷煙零售數據,為煙草行業進一步提升經營管理水平奠定基礎。同時,由于數據采集方法在本地和云端存儲的是結構化的卷煙零售數據,不識別消費者的生物特征,不存在個人隱私風險,是一種安全有效的數據采集方法。
(2)本研究中將多個神經網絡模型運行于本地計算平臺,導致本地計算平臺對GPU 有較高的要求,成本較大,不利于大規模推廣。下一步可通過將識別模型進行云服務化和對模型進行壓縮,降低對GPU的要求,達到降低本地計算平臺成本的目的,為規模推廣奠定基礎。此外,本研究中要求卷煙識別區為非透明背景,這一定程度上限制了場景的使用范圍,因此如何解決透明背景對采集方法的準確率影響還需進一步研究。