電商商品同款識別圖像算法研究
淘寶官⽅⽐價平臺 “有好價” 產品主打的就是實時更新全⽹最低價的好物,能在第⼀時間給⽤戶展示低價的同款商品。
業務背景
隨着電商的快速發展,“貨⽐三家” 已經成爲了⼤衆的⽇常,但琳琅滿⽬的商品給⽐價增添了不少負擔,且每個購物平臺的優惠規則也不相同。爲了能夠讓⽤戶實時發現最新低價,同款識別成爲了破局的關鍵,並且只有完全相同的商品(sku 維度相同)纔有⽐價的意義。淘寶官⽅⽐價平臺 “有好價” 產品主打的就是實時更新全⽹最低價的好物,能在第⼀時間給⽤戶展示低價的同款商品。
業務難點
圖一
圖二
不同於⼀般的以圖搜圖,只需要找出相似的圖⽚即可,同款圖像檢索屬於細粒度檢索,需要找出精確同款。同款圖像檢索的難點如下:
-
類間混淆性問題,即如何區分相似款和同款,如圖⼀,都是⿊⾊連⾐⻓裙,是通過以圖搜圖召回的結果,但在局部細節特徵有區別,所以是⾮同款。
-
類內混淆性問題,即同款本身存在較⼤差異。如圖⼆,是同⼀商品的主副圖,但由於拍攝⻆度不同,加⼤了檢索的難度。
解決方案
網絡結構
-
Batch Dropblock
隨着淘寶商家與⽇俱增,商品展示也是 “百花⻬放”,不同⻆度不同場景拍攝的商品圖⽚給識別增加了難度,以及⽜⽪癬的泛濫,使得圖⽚更難區分。⽽⽬前主流的 CNN ⽹絡傾向於集中 在識別對象主體上,忽視了局部細節特徵,因⽽抑制了其他可區分的部分,導致召回的商品 存在⼤量的相似款。當然,針對⽜⽪癬的問題,可以通過檢測和分割來進⾏改善,但是這些⼯作在全域商品上處理明顯太複雜笨重。batch dropblock 旨在設計⼀種簡單⼜適⽤性強的⽹絡來解決這個問題。具體⽅案如下:即對⼀個 batch 的特徵圖,隨機遮擋住同樣的⼀塊區域,強迫⽹絡在剩餘的區域⾥去學⼀些細節的特徵。通過結合全局特徵和局部特徵,使得 CNN 能提取到更魯棒更全⾯的圖像特徵。⽹絡結構如圖所示,使⽤ ResNet50 作爲 backbone ⽹絡提取特徵,並將 ResNet50 中的第 4 個 stage 的下采樣去除掉,從⽽獲取更⼤的特徵圖。緊接着將特徵分 爲兩個分⽀,⼀個分⽀爲全局分⽀學習全局特徵,另⼀個分⽀爲局部分⽀學習局部特徵。在訓練過程中,兩個⽀會作爲多任務同時學習。在測試過程中,會將全局特徵與局部特徵 concat ⼀起,作爲圖像的 embedding 向量。Batch Dropblock 的優點在於不會增加⽹絡參數,且適⽤於所有的 CNN 模型,針對不同的任務可以調節超參。
-
Second-Order Attention
淘寶商家經常會在圖片上添加一些備註,這些備註一般都會用於描述商品,但由於卷積神經網絡受限於感受野,使得備註和商品之間的聯繫難以獲取到。對此在卷積層之間加入 Self Attention 計算局部特徵之間的相關性,具體算法如下:
q、k 和 v 表示圖像特徵 mm 經過 11 的卷積後生成的特徵向量。
-
Gem Pooling
局部特徵的 max pooling 和全局特徵的 average pooling 比較極端,可選用 generalized mean pooling 代替(可學習參數 p 的 pooling layer),其中 p 值越大,特徵圖響應的局部化程度越高。其中當 p 接近無窮大時,就是 max pooling,當 p=1 時,就是 aveage pooling。
Loss Function
-
Triplet Loss
同款的核心的解決思路就是讓網絡縮小類內距離,擴大類間的距離,這就是 Metric Learning 的核心思想。因此採用優化 Loss function 的方式解決難點二遇到的問題。衆所周知,Softmax 優化類間的距離比較強,但是優化類內距離比較弱。而基於 Metric Learning 構造的損失函數可以使類內緊湊和類間分離,典型的如 Contrastive Loss、Triplet Loss,但這些 Loss 對於噪聲比較敏感,單獨訓練時模型很難收斂。對此將 Softmax 和 Triplet loss 進行疊加訓練,Loss Function 如下,其中 xi 表示錨點,xp 表示與錨點互爲同款的正樣本,xn 表示與錨點互爲非同款的負樣本,f(x) 表示模型輸出的 embedding。
-
Softmax Loss
僅僅使用 Triplet Loss 訓練網絡,網絡難以收斂,需要加入分類的 Softmax Loss,Softmax Loss 能很好的放大邏輯值的差異,將正確類目的概率逼近 1,有利於模型快速收斂。Softmax Loss 分類器學習到的特徵空間是呈現扇形分佈,使用餘弦距離檢索會優於歐式距離。但 Softmax Loss 也有明顯的問題,邊界樣本距離臨近類的餘弦距離很可能小於該樣本到同類之間的距離,容易造成檢索錯誤。
-
Solar Loss
由於圖像在輸入到網絡之前需要 resize 到 224×224 的大小,但商品的圖像不一致會導致形變,爲此採用二階相似度(能抓取更多的結構化信息,對形變的魯棒性高)作爲正則項加入到 loss funcition 中。
實驗過程
訓練集準備
在使用 Triplet Loss 進行訓練時,需要提供圖像的 pair 對作爲訓練樣本,但 pair 對的標註成本非常大。如圖所示,站內的主副圖是商家對同一個商品通過拍攝不同角度生成的,所以大多數主副圖都可以理解成同款。因此主副圖完全可以作爲 Triplet Loss 中的正樣本對,而負樣本只需要選擇不用商品的主副圖即可,最後分類任務的 label 則選擇商品的葉子類目。實驗中訓練集隨機挑選了 2230 萬的商品主副圖,但由於主副圖中存在商家展示的活動圖片,這些噪聲圖片會使得模型無法收斂。爲了處理噪聲樣本,我們在訓練前對訓練集進行清洗。首先利用 ResNet50 提取圖像特徵,再對提取出的特徵利用 DBSCAN 聚類算法進行聚類,將噪聲樣本 (如下圖紅框中的廣告圖) 進行剔除。經過清洗後,得到 1910 萬的圖片數據。DBSCAN 聚類算法需要對閾值進行調整,如果閾值太高會使得樣本分佈很單一化,閾值太低會使得噪聲太多起不到過濾的效果。因此這裏設置參數爲 0.8,保證加入困難的正樣本提升檢索模型的魯棒性和泛化能力。
訓練過程
剛開始訓練時,模型的權重是利用 ImageNet 數據集預訓練的 ResNet50 模型,此時若選擇一個較大的學習率,可能使得模型振盪。對此選擇 Warmup 預熱學習率的方式,在開始訓練前幾個 epoch 或者一些 step 內用較小的學習率。在預熱的小學習率下,模型可以慢慢趨於穩定,等模型相對穩定後再選擇預先設置的學習率進行訓練,可以加快模型收斂速度,使模型效果更佳。
- 訓練優化
同款圖像檢索模型訓練過程中最重要的是難例挖掘,最近很多工作都是在改進採樣或者加權方案。目前的改進方法主要有兩種思路:第一種思路是在 mini-batch 內下功夫,對於 mini-batch 內的樣本對,從各種角度去衡量他們的難度, 然後對於難樣本對,給予更高的權重,比如 N-pair Loss、Lifted Struture Loss、MS Loss 就是這種做法,第二種思路是在 mini-batch 的生成做文章,比如 HTL、divide and conquer,他們的做法雖然看上去各有不同,甚至複雜精妙,但其實大差不差。不嚴謹地說,大致思路都是對整個數據集進行聚類,每次生成 mini-batch 不是從整個數據集去採樣,而是從一個子集,或者說一個聚類小簇中去採樣。這樣的做法,由於採樣範圍本身更加集中,生成的 mini-batch 中難例的比例自然也會很高。但以上的所有思路都是僅在對當前 mini-batch 裏的樣本對兩兩比較,形成樣本對。跨越時空進行難例挖掘(Cross Batch Memory,XBM)就是突破這個侷限,把過去的 mini-batch 的樣本提取的特徵也拿過來作比較,形成樣本對,這樣只需要佔用少量的顯存就能用於挖掘海量的難例樣本。
XBM 是極其簡單的,需要先對網絡用原來的方式訓練,等待特徵偏移變小,再加入 XBM。一個特徵隊列去記憶過去 mini-batch 的特徵,每次迭代,都會把當前 mini-batch 提取出來的最新特徵加入隊列,並把最老的特徵踢出隊列,從而保證 XBM 裏的特徵儘量是最新的。每次去構建樣本的時候。將當前 mini-batch 和 XBM 裏的所有特徵都進行配對比較。從而形成了海量的樣本對,如果 XBM 存儲了過去 100 個 mini-batch 的特徵,那麼其所產生的樣本對就是基於 mini-batch 方法的 100 倍。
由於 XBM 能起作用的假設前提是特徵偏移小,但實際應用過程中很難確定在什麼時刻模型特徵偏移小可開始啓動 XBM,且偏移但相對大小受限於數據集和模型。因此提出了一種新的訓練方式——Incremental XBM,具體操作如下:初始選擇小的歷史特徵庫,隨着訓練的進行,不斷加大歷史特徵庫的數量,效果優於一開始就指定大的特徵庫的數量。
實驗結果
選擇天貓淘寶站內 500w 的商品作爲商品底池,並選取其中 30000 個匹配對給外包標註,以下實驗結果均爲 Top1000 的召回率。
模型優化實驗
backbone 選用 ResNet50,對比實驗分別爲 ResNet50+Self Attention,ResNet50+GEM Pooling,ResNet50+BDB,由於網絡結構不同,收斂時間不同,將驗證集上的召回率變化低於 0.05% 作爲收斂條件。Loss Function 僅使用 Softmax Loss,實驗結果如下:
從實驗結果上可以看出 BDB 能明顯提高模型的召回率。
Loss Function 優化實驗
backbone 還是選用 ResNet50,由於單獨使用 Triplet Loss,模型難以收斂,所以沒有用於單獨對比。實驗分別爲 Softmax Loss,Softmax Loss+Triplet Loss,Softmax Loss+Solar Loss。實驗結果如下:
訓練優化實驗
backbone 還是選用 ResNet50,由於 Cross Batch Memory 主要是用於難例挖掘,Loss Function 需要加入 Triplet Loss。實驗分別爲 ResNet50+Triplet loss,ResNet50+Triplet Loss+XBM,ResNet50+Triplet Loss+Incremental XBM。實驗結果如下:
最終實驗結果
通過以上的實驗效果,將所有的優化方案都彙總在一起,實驗結果如下:
總結
非常感謝集團沉澱的衆多優秀技術方案和寶貴經驗,幫助同款識別圖像算法的優化。第一,本文提出了通過隨機遮擋住同樣的一塊區域,強迫網絡在剩餘的區域裏去學局部特徵,並結合局部特徵和全局特徵同時訓練,在不新增參數的情況下,提升圖像對於局部特徵的關注,第二,本文還通過加入 self attention 獲取局部特徵之間聯繫,增加了文本備註和商品的連接。第三,本文采用多任務學習的方式,將 Softmax Loss 和 Triplet Loss 同時聯合訓練,並加入二階 Loss 作爲正則,不僅可以加快模型的收斂,還能大幅提高模型的魯棒性。第四,在訓練過程中加入 Cross Batch Memory,只需要增加少量內存的消耗,就能大幅度提高難例挖掘的效率。在未來的工作彙總,會重點在以下幾個方向進行優化:
-
利用 Vision Transformer 代替 ResNet 網絡,Vision Transformer 保留了更多的空間信息
-
目前只是針對 item 維度的同款識別,需要將圖像同款識別的能力推廣到 sku 維度上
參考文獻
[1] Dai, Zuozhuo, et al. "Batch dropblock network for person re-identification and beyond." Proceedings of the IEEE/CVF international conference on computer vision. 2019.
[2] Vaswani, Ashish, et al. "Attention is all you need." Advances in neural information processing systems 30 (2017).
[3] Wang, Xun, et al. "Cross-batch memory for embedding learning." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020.
[4] Ng, Tony, et al. "SOLAR: second-order loss and attention for image retrieval." European Conference on Computer Vision. Springer, Cham, 2020.
[5] Radenović, Filip, Giorgos Tolias, and Ondřej Chum. "Fine-tuning CNN image retrieval with no human annotation." IEEE transactions on pattern analysis and machine intelligence 41.7 (2018): 1655-1668.
[6] Dong, Xingping, and Jianbing Shen. "Triplet loss in siamese network for object tracking." Proceedings of the European conference on computer vision (ECCV). 2018.
[7] Targ, Sasha, Diogo Almeida, and Kevin Lyman. "Resnet in resnet: Generalizing residual architectures." arXiv preprint arXiv:1603.08029 (2016).
作者 | 陳立鑫(天柚)
編輯 | 橙子君
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/aIz7JDyciq9O_-KNnE_6hQ