17.jpg

在智慧零售場景中,線下的行為數據是潛藏的寶礦。如何進行數位化升級,更好輔佐商家和消費者,成為擺在我們眼前的重要課題。

 
下面,搜索事業部的算法專家京五將,為大家詳細介紹阿里在線下場景的客流數位化探索與應用。
 
在網路時代,數據是所有應用的基礎,淘寶的商家可以基於商品歷史的點擊成交量,來判斷店內各個商品的情況,並做出相應的經營行為,淘寶的買家會根據商品歷史的成交數據,評論數據等,來輔助自己判斷是否進行購買,同時我們平台也會基於用戶和商品的歷史數據,來訓練模型,預測各個商品的點擊率預測各個用戶的偏好,使展示的結果更符合用戶的需求。可以看出,數據對於各個不同的角色,都有很重要的作用。
 
在網路中,獲取數據相對容易,反觀線下零售場景,大部分數據都是缺失的,商家並不知道店內多少商品被瀏覽了,多少商品被試穿了,買家也不知道各件商品的歷史數據。
 
因此,我們的客流數位化相關的探索,就是要將線下的消費者和商品的行為數據收集起來,讓線下的行為也能有跡可循,為商業決策和市場營運,提供準確有效的數據支撐,將傳統零售中的導購經驗,逐漸數位化成可量化和統計的數字指標,能夠輔助商家營運,同時幫助用戶進行決策。基於這些數據,也能夠讓算法在線下發揮更大的作用。
 
整體方案
 
整體方案如下圖所示,方案涉及場外的選品策略指導,線下引流,進店的人群畫像,顧客軌跡跟蹤,人貨交互數據沈澱,試衣鏡互動/推薦,以及離店後的線上二次觸達。從場外到場內再到線上,構成了整體全流程的產品方案。
 
 
16.jpg
客流數位化探索
在門市店客流數位化的探索中,硬體部署上,我們使用了門市店已有的監控攝影機和RFID標籤,並結合視覺及射頻相關技術,透過在門市店部署GPU終端進行計算。
 
技術方案上,我們基於人臉辨識技術,辨識進店用戶的性別、年齡、新老客等基礎屬性,並透過行人檢測跟蹤,與跨攝影機的行人重新辨識技術,跟蹤用戶在門市店內的動線變化,同時得到整體門市店各個區域的熱力圖分布。
 
此外,還透過攝影機與RFID 多感測器融合的技術,辨識用戶在門市店內的行為,包括翻動、試穿等,精確定位門市店內,各個商品的瀏覽與試穿頻次,以及用戶在線下的偏好。下面會主要介紹其中的行人檢測行人重新辨識動作辨識,這三個技術方向相關的優化。
 
行人檢測
智慧零售的客流數位化場景中,我們需要透過監控攝影機,對門市店客流量的進店頻次、性別、動作、行為軌跡、停留時間等,全面的記錄和分析。要達到我們的目標,首先需要能夠檢測,並辨識出攝影機中的行人。
 
雖然目前YOLO等目標檢測算法,可以做到近乎即時的計算性能,但其評估環境都是Titan X、M40等高性能GPU,且只能支持單路輸入。無論從硬體成本或是計算能力方面考慮,這些算法都無法直接應用到真實場景中。
 
當然YOLO官方也提供了像YOLOv3-Tiny,這種輕量級的模型方案,但模型性能衰減過大,在COCO上mAP下降超過40%。同時現有目標檢測方案的泛化能力還比較弱,不同場景的差異對模型性能,會造成較大的影響。
 
門市店場景下的視角、光線、遮擋、相似物體乾擾等情況,與開源數據集差異較大,直接使用基於VOC、COCO數據集訓練的模型,對該場景進行檢查,效果非常不理想。我們分別針對模型的性能,和在實際數據集的效果,兩方面做了相應的優化。
 
網路結構精簡與優化
我們在YOLO框架的基礎上,對模型進行改進,實現了一種輕量級實時目標檢測算法,在服飾門市店的真實場景下,和YOLOv3相比,模型性能下降不超過2%,模型大小縮小至原來的1/10,在Tesla P4上對比FPS提升268%,可直接部署到手機、晶片等邊緣設備上,真實業務場景中一台GTX1070,可以同時支持16路攝影機同時檢測,有效節約了門市店改造的經濟成本。
 
標準YOLOv3的網路結構有106層,模型大小有237M,為了設計一個輕量級的目標檢測系統,我們使用Tiny DarkNet來作為骨幹網路,Tiny DarkNet是一個極簡的網路結構,最大通道數為512,模型大小僅4M,該模型結構比YOLO官方的YOLOv3-Tiny的骨幹網路還要精簡,但精簡網路會造成特徵抽取能力的衰減,模型性能下降劇烈,在我們人工標注的2萬多張服飾門市店場景數據集上,替換後的Tiny DarkNet + FPN結構,較原生結構的AP-50(IOU=0.5)下降30%。
 
我們在特徵抽取網路之後,進行Spatial Pyramid Pooling,與原特徵一起聚合,之後透過下採樣,與反卷積操作,將不同層級特徵合併,希望將底層的像素特徵,和高層的語義特徵,進行更充分的融合,來彌補特徵抽取能力的下降,整體網路結構如下圖所示,精簡後的檢測模型大小約為原來的1/10。15.jpg
標檢測網絡結構
 
 
知識蒸餾進一步優化
 
知識蒸餾通過Teacher Network輸出的Soft Target來監督Student Network學習網中Dark Knowledge,以實現Knowledge Transfer的目的,與量化、剪枝、矩陣近似等方法,常被用來實現對模型的壓縮。但蒸餾與量化等方法之間,又是可以互相結合的,而且蒸餾本身對模型的修改更加透明,無需特殊的依賴及執行框架。
 
 
14.jpg
識蒸餾網路結構
 
 
上圖是我們網蒸餾的模型結構設計,蒸餾時我們採用原生YOLOv3作為Teacher Network,雖然YOLOv3擁有較好的檢測性能,且結構上與我們的模型比較相似,但直接在二者輸出層之間建立L2約束,無法克服Teacher Network中的噪聲,及回歸預測的波動,結果反而抑制了Student Network的學習。
 
實驗中發現Hint Layer的損失設計,和回歸預測的不確定性,是蒸餾效果的核心問題,強行在對應Channel之間,建立損失約束的方式過於嚴苛。對於普通卷積而言,我們無需要求Teacher / Student Network的Input Channel順序保持一致,僅需要整個輸入的分布是一致的。
 
每個Channel相當於一次採樣結果,相同的分布,採出的樣本順序可能多種多樣,但整體結果符合相同分布,同時經過激活函數的Channel分布不再穩定,需要進行歸一處理。
 
為了避免Teacher Network回歸預測本身的不穩定,回歸損失設計時仍以Ground Truth為目標,將Teacher Network的Output作為Bound,僅對誤差大於Teacher Network的部分進行約束,本質上是在借Teacher Network來進行Online Hard Example Mining。
 
行人重新辨識
行人重新辨識(Person Re-identification)問題,是指在跨攝影機場景下,給定待查找的行人圖片,查找在其他攝影機是否出現該人。一般用來解決跨攝影機追蹤。
 
在線下門市店場景中,每個門市店都會在各個不同的區域安裝攝影機,當顧客在店內逛時,我們需要瞭解消費者是如何在各個區域之間活動,瞭解各個區域客流的去向與來源,因此需要將各個不同攝影機中,同一個行人進行關聯。
 
行人特徵提取
行人重辨識的難點在於,多個攝影機下拍攝行人的角度不同,圖像中的行人可能72變,同時還有可能會有不同程度的遮擋,導致直接使用整體的行人特徵,來做重新辨識非常具有挑戰性,那能不能用人臉辨識做行人重辨識
 
理論上是可以的,但是在實際場景中非常難應用,首先,廣泛存在後腦勺和側臉的情況,做正臉的人臉辨識難,其次,攝影機拍攝的像素可能不高,尤其是遠景攝影機裡面人臉,截出來很可能都沒有32x32的像素。所以人臉辨識在實際的重新辨識應用中,存在很大的限制。
 
行人重新辨識問題中,如何學得一個凸顯的行人特徵表示,成為了一個很關鍵的問題。學得行人特徵表示最直觀的方式,是直接以整張行人圖片作為輸入,提取一個全局特徵,全局特徵的目標,是學習到能夠區分不同行人之間最突出的資訊,比如衣服顏色等,來區分這個行人。
 
然而監控場景的複雜性,使得這樣的方法的準確性,受到了很大的限制,比如,各個攝影機之間存在色差,並且門市店的不同區域的光照條件會有差異,此外,還有很多穿相似服裝的行人。同時由於目前行人重新辨識數據集,在體量及豐富性上有比較大的欠缺,一些不突出,不頻繁出現的細節特徵,在全局特徵的訓練中,很容易被忽略。
 
要解決上面提到的問題,使用局部特徵替換全局特徵,是一個比較好的解決方案,基於局部特徵的行人重新辨識方法,將原始輸入表示成多個特徵塊,每一個特徵塊代表一個局部的特徵,基於局部特徵的方法,能夠更關注行人的局部細節方面的特徵。
 
 
基於局部特徵的方法,也存在一些問題,這一類方法將行人劃分為各個獨立的語義分塊,並沒有考慮各個局部特徵之間的關聯,因此,在我們的方案中,我們使用到了多級局部特徵的融合方案,在考慮各個局部特徵的同時,考慮多個局部特徵的關聯關係。
 
具體網路結構如下圖所示,在原始的局部特徵的基礎之上,增加了多個不同尺度的局部特徵,以及全局特徵。學到的特徵,不僅能夠表示各個部位的細節特徵,還能表達不同部位,融合在一起的特徵,相較原始版本更加豐富化。
 
 
13.jpg
 
 
目前基於此版本模型還在持續優化中,在Market數據集上Rank@1能達到96.19%,使用同樣骨幹網路結構的情況下,提取全局特徵的版本的Rank@1只能達到89.9%,而僅使用local特徵的版本Rank@1,能夠達到92.5%,融合的方案相比兩個版本,均有較明顯的提升。
 
跨數據集的行人重新辨識的探索與嘗試
由於線下場景的特殊性,我們的模型需要部署到各家不同的門市店,各個門市店的光線,環境存在很大的差異,不同門市店的攝影機安裝的角度,也會有些許不同,因此我們在一個數據集上訓練的模型,可能並不適用於所有門市店,然而我們又不可能逐家門市店去做數據的標注,因此,我們想透過一種方式,讓我們的模型,能夠自適應到新的門市店的數據中。
 
 
在門市店中,由於顧客是在一個封閉空間,因此顧客在各個攝影機之間的轉移,是存在一定的規律的,比如說:顧客肯定是最先出現在門市口的攝影機,顧客只能在相鄰的兩個區域之間進行轉移等,基於門市店場景的特性,我們首先嘗試了基於攝影機時空資訊的混合模型,模型結構如下圖所示:
 
 
12.jpg
 
 
混合模型首先基於原始的視覺特徵的分類器,來計算各個攝影機,以及不同時間間隔之間轉移的機率分布,再使用時空資訊與原始分類器結合,得到最終的結果。
 
人貨動作檢測
除了基礎的客流動線數據以外,顧客在門市店中的行為數據也是非常有價值的,我們嘗試使用視覺結合RFID射頻信號的融合方案,試圖解決顧客在門市店中與貨物的交互問題,即哪個顧客在什麼地點翻動/拿起了哪一件商品,比較類似線上的點擊數據。
 
人貨交互的數據,在線下是很重要的一個環節,人貨交互的數據可以讓商家知道,哪些商品被翻動的多,瞭解哪些商品比較能夠吸引顧客,哪一類顧客更喜歡哪些風格的商品,同時這一部分數據,也完善了整個門市店的漏斗轉化,以前商家僅僅能根據成交,來判定每個商品的受歡迎程度,而有些潛在暢銷款可能是由於擺放的位置不恰當,導致可能根本沒有顧客仔細看到,導致最終成交額較低。
 
同時有的商品雖然成交筆數不少,但是實際上被顧客拿起的次數也特別多,可能是因為這件商品在一個更顯眼的位置,相比同樣成交筆數的拿起次數較少的商品,實際轉換率更低。補全這個環節的數據,對商家的線下營運有很關鍵的作用,同時這一部分行為數據,在商家線上線下商品打通之後,為線上服務起到最重要的作用。
 
 
人貨交互的數據,是目前線下數據缺失的比較嚴重的環節,商家一般都能很容易的,拿到商品的成交的統計數據,而人貨交互的數據由於發生更頻繁,且不易判斷,因此整體數據的收集難度比較高,此外人貨交互的數據,需要精確到具體的SKU,單純的顧客發生了動作並沒有太大的意義,因此在人貨動作檢測的方案上,我們設計了一套結合視覺技術,和RFID射頻信號的融合方案,得到最終的人貨交互數據。下圖為整體方案:
 
 
11.jpg
 
 
門市店中裝配有監控攝影機設備與RFID接收器設備,分別錄製即時影像與RFID標籤,受激反射的即時序訊號,首先基於回傳的RFID信號,與檢測哪些RFID標籤可能被翻動了,由於門市店服務員已經將RFID標籤的EPC編號,與商品的 SKU編號關聯入庫,基於被翻動的標籤EPC編號,可以取到對應商品的SKU。
 
同時,使用回傳的顧客圖片,檢測出疑似有在翻動商品的顧客,並根據顧客的圖像坐標進行坐標變換,得到該顧客的真實物理坐標,最後,將檢測出的疑似被翻動的商品,與疑似有翻動商品動作的顧客進行關聯,得到商品與行人的最佳匹配。
 
 
其中基於RFID射頻技術的商品動作辨識,是一個比較新的嘗試。當顧客翻動衣服時,衣服上的RFID標籤會隨之發生微小抖動,RFID接收機設備記錄標籤反射的信號RSSI,Phase等特徵值的變化,回傳到後台,算法透過對每個天線回傳的信號值,進行分析判斷商品是否發生翻動。
 
基於RFID信號判斷商品翻動存在諸多問題,包括信號自身噪聲、環境多徑效應、偶然電磁噪聲、貨櫃對信號遮擋的影響等。同時RFID反射信號的大小,與接收器離標籤距離遠近,存在非線性關係,
 
 
10.jpg
 
 
其中,d代表RFID標籤與接收器之間距離,受Multipath和當前環境的影響,表示各種靜態設備誤差帶來的偏移。從公式中可以看出,接收器安裝的位置,商店環境等都會給RFID信號帶來很大影響,尋找統一的可以適用於不同商店、不同位置接收器的翻動判斷算法,存在很大挑戰。
 
最初的版本我們使用RSSI和Phase的原始值,作為特徵值來訓練模型,這樣的模型存在一個問題,在我們的樣本不充足的情況下,受環境的影響較大,在真實環境中往往不能達到離線測試的結果,因此,我們試圖基於原始的信號值產生於空間位置不那麼強相關的特徵值來輔助動作的判斷。
 
雖然頻率資訊中的幅度,資訊與空間位置存在關係,但是當我們只關注於頻率分布(不同頻率成份的佔比)時,可以將頻率資訊,也當成與空間位置資訊無關的特徵。頻率資訊的獲取需要對RSSI信號,與Phase信號進行離散傅利葉變換, 然後統計頻率信號,與相位信號的分布圖。對得到的分布圖,計算當前分布與前一個時刻分布的JS散度(相對於KL散度,JS散度具有加法的對稱性,因此可以用來衡量多個分布之間的相對距離)。
 
基於相鄰時刻前後兩個樣本的JS散差異的版本,在我們的測試數據上能夠達到94%的辨識精度,相比最初版本基於原始的RSSI值和phase值,作為特徵的版本的91.9%的精度,有一定的提升。
 
 
基於圖像的顧客動作檢測,是經典的分類問題,為了減小對計算能力的需求,我們使用了:MobileNet對行人檢測的圖像進一步分類,並根據模型Logits輸出,進行了最優化參數尋優,在保持分類精度時,提高正例召回率,確保正例盡可能被召回,如下圖所示。
 
 
9.jpg
 
 
我們透過時間關聯程度,與動作可疑程度,兩個維度同時進行比對,使得最終的比對行人與翻動商品的準確率達到85.8%。
 
客流數位化應用
客流數位化產出的客流相關數據,不僅僅用於商家的線下營運,同時我們也基於這部分數據,在線下場的流量分發上,有一些初步應用,淘寶是線上的一個很大的流量分發的入口,淘寶的搜索和推薦,決定了消費者當前能看到哪些商品,也同時影響了各個商家和商品的整體流量情況,搜索和推薦就是將商家、商品和用戶做匹配,將適當的商品展示給合適的用戶,滿足消費者的購物體驗的同時,也平衡各個商家商品的流量分配,避免流量的浪費,實現流量的最大化的價值。
 
在線下商場,也有一樣的流量分發的需求。但是線下場相比線上,有兩個比較大的挑戰:
1) 線下目前沒有統一的入口,類似線上的搜索和推薦應用,無法觸達到用戶
 
2) 線下沒有類似線上豐富的日誌和行為數據,沒有數據支撐比較難做到精準的個性化,無法優化效果。
 
在線下場的流量分發的探索中,我們使用商場已有的互動螢幕、門市店的互動螢幕作為流量分發的出口,同時,利用前文提到的客流數位化沈澱的數據,來支撐線下場的個性化流量分發。
 
場外引流螢幕
場外引流螢幕的作用,是進行第一級的流量分發,首先需要通過不同的互動玩法,行銷活動吸引消費者,再透過螢幕對消費者進行個性化的優惠券投放,引導消費者進入不同的門市店。
 
 
在傳統商場中,消費者剛進來商場,可能會隨機地在這個樓層進行活動,當看到感興趣的品牌完成進店的活動,或者用戶會基於導覽螢幕,大概瞭解商場樓層的品牌分布情況,再進行有一定針對性的瀏覽。而我們的引流螢幕的作用,是將合適的優惠推薦給對應的人,從而引導消費者進店,相當於在商場中島進行整體的流量分發,將集中在中島的消費者,往各個不同的方向進行引導。整體方案如下圖所示:
 
 
8.jpg
 
 
整體方案依賴三部分的數據,分別是基於用戶的圖像特徵,產出的人群屬性數據,以及各個店鋪的進店人群分布數據,和店鋪的其他統計量的特徵,基於消費者當前的屬性特徵與店鋪的人群分布進行比對,可以得到初步的個性化的店鋪推薦結果,此外,使用店鋪本身的統計量特徵作為輔助資訊,在同等比對條件下,額外考慮各個店鋪本身的熱度,效率等維度特徵,以及當前所提供的優惠券的力度資訊,得到最終的優惠券的排序,並展示給用戶。
 
場內試衣螢幕
場內試衣螢幕的作用,是做第二層的流量分發,即消費者進店後,需要推薦哪些商品展示給用戶。在傳統的門市店中,消費者進店後會在店內進行隨機的瀏覽,對於感興趣的衣服會找導購員提供試穿,試穿後導購員也會對顧客進行推薦。
 
整個過程中存在一些問題,首先,消費者對於商品的瀏覽,和商品擺放的位置關係很大,櫥窗的商品會更容易吸引用戶注意,而部分較密集的衣架區,消費者可能沒有辦法注意到部分貨品其次,試穿之後導購進行的推薦也會因人而異,和導購本身的素質關係也較大,有些經驗豐富的導購員,可以根據你個人的長相、氣質,推薦更適合你的商品,而更多的導購員只能簡單的,基於當前的熱銷款來進行推薦,無法做到因人而異。
 
 
試衣螢幕推薦,要解決的就是上述的兩個問題,整體展現形式如下圖:
 
 
 
 
消費者進行試穿時,會在鏡子側方顯示商品的詳情資訊,包括目前商品是否有折扣等,同時會基於消費者的試穿行為,推薦相關商品與搭配商品,給部分商品一次額外的展示機會,同時也能夠基於消費者的試穿,以及消費者當前的圖像特徵,給出個性化的推薦結果,方便消費者的選購,即使消費者暫時沒有這個消費習慣,鏡子螢幕上的推薦結果,也能對導購員進行一些輔助決策,能夠幫助導購員給消費者,推薦更加個性化更加豐富的商品。
 
 
整體算法方案如下圖所示:
 
 
6.jpg
 
 
考慮到隱私問題,在我們的應用中,我們不去嘗試透過人臉關聯到對應的ID,僅在場內透過消費者的行為和其他消費者行為的相似性進行推薦。
 
工程實現
 
AI inference是GPU終端計算重要的一環,最開始探索的時候,AI inference採用串行模式:
 
 
5.jpg
 
透過觀察測試數據,我們驚訝地發現,雖然程序已經處於影像流圖片處理飽和的狀態,但是6核心CPU的使用率才到150%,GPU的使用率才到30%,也就是說,超過一半的硬體資源處於閒置狀態。 為了使得原本間歇性閒置的資源,得到重新的利用,我們改造成了流水線模式,結構圖如下所示:
 
4.jpg
 
 
在多進程實現的流水線方案中,由於每個進程的數據都是相互獨立的,一個進程產生或修改的數據,對另一個進程而言它是無感知。如何提高進程間的數據傳遞,是能否高效實現併發的關鍵點。 
 
我們採用了基於mmap ctypes實現的共享內存,對比管道、socket多進程通訊機制,共享內存在多進程數據通訊方案中,是非常高效和靈活,參考multiprocessing Value的解決方案,使用ctypes內置的基本數據結構,來實現我們的數據模型,非常方便的進行內存切分,並轉換成可用的數據結構。
 
結合業務情況,我們的流水線工作模式,會將各個階段分割為子任務,我們還設計了圖片共享隊列,整個過程只需要寫入一次圖片數據,各個階段只需要從這個共享隊列讀取圖片即可,等所有流程都操作完之後,再從圖片隊列刪除這個圖片數據,這樣就能保證圖片操作的正確性和高效性。
 
透過測試發現,我們實現的共享內存隊列,在讀取數據上比pipe方式快了300多倍。
 
業務效果
 
目前我們客流數位化的數據,已經沈澱到相應的產品,以下是基礎客流的示意圖,品牌商可以看到門市店每日的基礎客流量,以及分時段的客流情況,瞭解各個門市店當前的經營狀況。
 
 
3.jpg
 
 
下圖為區域熱力圖和區域動線圖,區域熱力圖展示了門市店在一天內,各個小時各個區域的人流量密度情況,我們將各個不同攝影機的數據進行整合,最終映射到門市店的平面CAD圖上展示區域熱力,讓門市店能夠更直皆的看到各個區域的熱度,區域動線圖展示了各個區域客流的去向和來源的佔比,基於區域熱力和動線數據,商家能夠清晰的瞭解到門市店,各個區域的密度情況,以及各個區域之間顧客的轉移情況,目前合作的品牌商,也會基於區域的數據,對店內的陳列做適當的調整,甚至有門市店基於動線的數據,重新調整整個門市店的區域分布情況。
 
 
2.jpg
 
 
下圖為門市店進店客流的人群畫像,展示了門市店每天進店客流的性別和年齡的分布,商家會基於進店的人群畫像數據,與當前品牌的目標人群進行對比,並基於實際進店客流的分布,調整門市店陳列商品的品類結構,以及不同類型商品的佔比。
 
 
1.jpg

 

Reference: https://3smarket-info.blogspot.com/2019/01/rfid_14.html

 

 

 

 

 

arrow
arrow
    全站熱搜

    BENEVO 發表在 痞客邦 留言(0) 人氣()