轉轉是主營二手商品交易的電商平台。根據交易主體的不同,可以形成C2C、C2B、B2C等交易關係。例如個人用戶在轉轉app的自由市場發布商品進行販售屬於C2C模式、轉公司提供手機和其他電子產品的郵寄與上門回收C2B服務,轉轉app也提供官方驗和保固與售後的二手B2C商品。本文將重點放在轉轉 B2C 賣場商品上架審核過程中影像演算法的應用。
由於二手商品的非標品性質,即使同一sku下的不同庫存商品間也存在著成色差異。平台為了提升使用者體驗,增加商品資訊的透明度,在展示二手商品時全部採用實拍商品圖,避免使用渲染的標品圖片。這涉及到對每個上架商品的相關展示圖片進行資訊準確性、圖片品質等各方面的審核問題。
業務發展初期,上架商品的相關展示圖片均由人工審核來確保圖片的品質和準確性,審核的內容主要有以下幾個面向:
二、自動審核方案
審核範例圖
2.1、商品展示圖與對應的sku資訊是否一致
類別是有限的,不管輸入圖像是否在類別中,都一定會輸出一個類別。
由於類別的固定,導致無法處理新增的sku。
由於分類方法存在上面的問題,我們改變了策略,使用圖像匹配的方案。我們訓練一個較好的特徵提取器,再使用影像匹配方案,就可以較好的解決新加類別的問題。我們選取的方案和學術中的Face Recognition 、Person Re-Identification、Image Retrieval等方向的解決方案基本上一致,主要流程包括影像特徵擷取、影像相似度計算、排序、輸出結果。其中影像特徵擷取這塊是大家研究的重點方向,傳統影像配對特徵包括SIFT、SURF、ORB特徵等,基於深度學習的影像特徵擷取主要是CNN神經網路進行特徵擷取。下圖給了我們的方案:
商品suk審核方案
訓練階段:訓練階段主要是使用交叉熵損失聯合三元組損失訓練一個分類網絡,其中骨幹網絡嘗試了MobileNet、ResNet、ShuffleNet、OSNet等。我們的實驗結果顯示ResNet模型的精確度略高,因此選取了ResNet作為我們的骨幹網路。
三元組範例
公式1給出的是二分類交叉熵損失函數,其中表示樣本的輸出值,表示樣本對應的標籤。公式2給出了三元組損失函數,表示錨點樣本對應的特徵向量,表示與錨點樣本類別相同的樣本對應的特徵向量,表示與錨點樣本不同類別的樣本對應的特徵向量。特徵空間內,負樣本距離錨點樣本的距離減去正樣本到錨點的距離應大於。
交叉熵損失函數是常見的分類損失函數,三元組損失函數是人臉辨識、行人重識別常用的損失函數。三元組損失函數,可以使特徵在特徵空間呈現一簇一簇的特徵,其帶來的好處就是可以得到更穩健的特徵。若單獨使用三元組損失函數,模型的收斂速度較慢,因此我們使用交叉熵損失和三元組損失進行聯合監督學習,以加速模型收斂,同時提升模型精確度。
測試階段:測試階段選取訓練好的backbone做特徵提取器,用來提取embedding特徵。擷取查詢影像特徵並與gallery庫中的特徵計算餘弦相似度,得到相似性排序列表,再選取排序列表中top1影像對應的類別作為查詢影像的類別輸出。但是我們在建構gallery時,一個sku存放了三張影像,對應著不同的拍攝場景,因此我們對top5輸出進行knn後得到查詢影像對應的sku。
上線運行:為了確保匹配演算法輸出的sku一定是準確的,我們輸出了排序列表中的top1相似度,當相似度小於一定值threshold時,會輸出警報訊息,進行人工審核。這個策略保證了演算法輸出的sku資訊準確性。
拍攝商品的過程中,由於商品移動或沒對好焦距,導致拍攝出的商品較為模糊。為了帶給用戶更好的購物體驗,我們會在審核的過程中打回這些商品,重新拍出符合要求的商品圖後才能上架。單純針對影像拍照是否清晰,可以理解為影像分類問題。由於影像是否模糊的標註具有主觀性,同時二分類無法很好的刻畫出影像的模糊度,因此在實際的審核過程中,一線審核人員對於輕微模糊的影像往往會給出不同的判定結果,這類情況大大的影響了審核結果的一致性,導致商城中的商品展示效果有好有壞。
為了解決上面的問題,我們把影像的模糊度分成三個級別,模糊度由高到低分別是明顯模糊、輕微模糊、清晰。並給出對應的分值,分別為2,1,0分。多人對同一張圖進行評分,並去掉同時出現打分為明顯模糊且清晰的影像,剩餘的影像進行數值歸一化,得到影像的模糊度分值。當然,我們可以把模糊程度細分為四類,例如明顯模糊,輕微模糊、細微模糊、清晰,並且讓更多的標註人員標註同一張圖,這樣我們可以得到更加細膩的標籤值,這樣也能帶來更好的預測結果。但鑑於資源有限,我們只把模糊度分成三個級別,讓三個同學來標註。由此,我們把二分類問題轉化為了回歸問題,可以很好的隔離到業務標準。下面的表格給了我們如何把分類任務變成迴歸任務。
圖片名同學一打分同學二打分同學三打分總分(0-6)歸一化得分圖片1明顯模糊輕微模糊明顯模糊55/6=0.83圖片2輕微模糊輕微模糊明顯模糊44/6=0.67圖片3清晰輕微模糊清晰10.17..................
一樣的,我們還是使用卷積神經網絡,然後把分類損失函數變成回歸損失函數,我們選用了MSE作為回歸任務的損失函數,其中表示樣本的預測值,表示樣本的標籤。
模型的輸出值代表影像的模糊程度,我們把二分類任務變成迴歸任務後,可以帶來許多好處。首先就是演算法開發與業務解耦合,不會因為業務標準的變更導致演算法模型失效;同時業務方可以根據業務需求設定不同的模糊度閾值用來控製商城影像的清晰程度。
針對商品是否貼了防拆標、是否髒污、是否處於中心區域問題,我們使用檢測方案。這三個項中,防拆標和物品的偵測都較為簡單。防拆標檢測中的防拆標特徵單一,因此比較容易訓練出一個檢測準確率相當模型;商品是否居中檢測中,物品較大,且數據好收集,也能訓練出一個準確率相當高的商品檢測模型。
髒污的偵測則比較困難,因為部分髒污目標較小,且樣本不易取得。針對這個問題,我們在資料收集的過程中選取主動學習的策略去尋找到更多正樣本(檢測任務中的正樣本指的是我們需要檢測的樣本類)。其方式也很簡單,我們在初期使用一批資料訓練偵測模型,接著用該模型以非常低的置信度在大批量未標註的資料中選取可疑正樣本,再讓人工對該批次資料標註,隨後再用新資料更新訓練模型,這便是一輪。我們可以重複這個步驟,最後可以得到一個媲美人工的檢測模型。
對於電腦視覺中常見的分類、偵測等任務,我們無法同時保證模型的召回和精確度同時達到100%的指標,因此在實際的應用過程中,需要結合實際業務,考慮選取模型是採用高精準度還是高召回的狀態。下圖給出了召回率和精確度關係的曲線圖(圖片來自週志華老師的一書)
PR曲線圖
針對我們的審核業務,我們採取的是高召回策略,也就是保證模型可以盡可能把不符合要求的商品圖都找出來,其代價就是精確度會相應的降低。我們召回有拍攝有問題商品後,會人工介入審核,因此那些被誤召回的例子不會對業務造成影響。
在演算法的輔助下,目前上架審核同學的工作量降低了50%。經過演算法的商品圖像中,有50%的商品通過演算法,可以直接上架到商城app,剩餘的疑似有問題的商品都會被演算法辨識出來,然後再人工複審。
我們在第一節介紹了商品上架審核的背景,我們為什麼要審核以及審核的內容,同時分析了目前業務中人工審核面臨的一些問題,然後給出了演算法賦能業務帶來的好處。
在第二節,我們詳細的介紹了演算法模組。根據上架審核項的不同,我們採用了三種方式分別去解決三個不同的任務。並介紹了演算法應用落地所選取的高召回率犧牲預測精確度的方案,以及此方案的可行性,最後給出了演算法上線所取得的效果。
以上是影像演算法助力提效轉轉商品審核的詳細內容。更多資訊請關注PHP中文網其他相關文章!