MCN 服裝穿搭評價模型 | 附源碼


     
     
     

點擊上方AI算法與圖像處理”,選擇加"星標"或“置頂”

重磅乾貨,第一時間送達


Outfit Compatibility Prediction and Diagnosis with Multi-Layered Comparison Network

論文題目:Outfit Compatibility Prediction and Diagnosis with Multi-Layered Comparison Network

論文地址:https://arxiv.org/abs/1907.11496

代碼:https://github.com/WangXin93/fashion_compatibility_mcn

簡介

本文基於一個多層比較網絡(Multi-Layered Comparison Network,MCN) 實現搭配匹配預測和診斷,並實現一個端到端的框架。主要貢獻如下:

  1. 通過採用 梯度值來近似輸入商品的相似度實現對搭配的診斷,可以給出搭配中哪件商品最不不合適,並可以通過替換該商品來提高搭配的評價得分;
  2. 利用 CNN 的不同層的特徵進行商品之間兩兩對比,得到一個 相似度矩陣,然後再通過兩層全連接層來輸出搭配的評價得分;CNN的不同層特徵可以解釋爲不同級別的語義信息,從低級的顏色、紋理到高級的風格等信息;
  3. 對 Polyvore 進行處理,得到一個更加乾淨的數據集 Polyvore-T,並對類別進行歸納得到新的 5 大類型--上裝、下裝、鞋子、包和首飾(Top、Bottom、Shoe、Bag、Accessory)

本文的應用可以如下所示,主要分爲三方面的應用:

  1. 判斷搭配好壞,也可以對搭配進行評分;
  2. 對搭配進行診斷,判斷需要替換哪件商品;
  3. 根據 2 的診斷結果,從數據集選擇合適的同類別商品進行替換。

背景

1. 時尚商品識別和理解

時尚商品識別是實現搭配匹配性的第一步,也是非常關鍵的步驟。

《DeepFashion》[7]論文建立了一個時尚商品數據集--DeepFashion,並採用CNN學習商品的類別、屬性和位置信息;

一些相關的方法分別從有監督、無監督,加入文本信息、搭配之間的關聯信息等方面來提高對商品的識別精度。

2. 視覺匹配性學習

搭配的匹配性是非常主觀的審美標準,但目前也存在不少搭配相關的網站,比如 Polyvore 數據集(也是目前搭配領域非常常用的數據集)。

之前對於搭配匹配性的學習方法主要分爲兩個方向:

  • 學習一對商品的匹配性
  • 採用端到端方法學習搭配的匹配性

對於一對商品的匹配性,可以通過計算商品的特徵的歐式距離,但最近的學者認爲搭配匹配性並不像檢索任務一樣嚴格,並不太適用歐式距離來學習,於是就有很多工作是嘗試採用其他的 metric learning 方法來學習。但這個方向的問題是沒有考慮到整體搭配的匹配性和兩兩商品的匹配性之間的關係。

對於第二個採用端到端方法,則可以學習多種商品的特徵,然後利用 MLP 來計算搭配的匹配性得分。但 MLP 並不是一個有效的學習每個商品間關係的方法。也有工作採用 LSTM 進行學習,但搭配更類似集合,而不是序列,因爲它是無序的。


方法

MCN 整體流程如下所示:

從上圖可以知道,MCN 總共分爲四大部分,分別如下:

  1. Multi-layered Feature Extractor
  2. Comparisons at Different Layers
  3. Predictor
  4. Outfit Diagnosis by Gradients

其中第四部分是對搭配進行診斷,訓練模型階段僅包含前三個部分。下面會分別介紹這幾部分內容:

1. Outfit Diagnosis by Gradients

整體搭配的匹配性是綜合考慮了商品之間兩兩在不同方面,比如顏色、紋理、風格等,進行對比後的結果。一般要學習整體匹配性和成對商品相似度的關係,可以考慮兩種方法:

  • 線性模型

優點:有很好的解釋性,輸入的權重就表明其輸出的重要性程度;缺點:受限的容量

  • 多層感知器(MLP)

優點:有更好的容量 缺點:可解釋行差

結合兩者的優點,所以本文是採用梯度來近似每對商品的相似度的重要程度,從而找出不合適的商品。

首先給出商品之間的相似度矩陣 R,其公式如下所示,具體的計算方法將在下一節介紹。

R 矩陣中每個數值都是兩個商品在不同特徵的相似度,因爲本文采用了 CNN 的四層輸出特徵,所以 R 矩陣是有四個,也就是 K = 4,K 表示商品對比的不同方面,其大小 N 是搭配中商品的個數,而本文的 N = 5,設置了搭配的商品數量上限是 5 件,因此 R 矩陣的大小是

當然這裏在代碼實現的時候,並不需要存儲 5*5 = 25 個數值,而是僅需要 15 個數值,這是剔除重複的元素。

在獲得相似性矩陣 R 後,就會將這個矩陣傳到 2 層的 MLP,即兩個全連接層,這裏 R 矩陣的維度就是 (batch, 15*4)。通過兩層 MLP 輸出搭配的匹配得分,公式如下所示:

這裏使用了非線性激活函數 ReLU,即 R 和最終搭配得分 s 之間是一個非線性關係,這有助於提高搭配匹配判斷的性能,但並不好解釋做出這個搭配匹配判斷結果的原因,因此採用的就是上述說的梯度值。

具體來說,對搭配評價得分 s 採用一階泰勒展開式,可以得到:

這個近似公式就是一個線性模型(wx+b的形式),這裏的權重 W 就可以用於表示相似度矩陣的重要程度,也就是每對商品的相似性的重要性,而 W 的元素是等於 s 對每個 R 的導數,即:

假如不匹配的搭配的標籤是 1,上述公式裏的 w 就表示爲第 i 個商品和第 j 個商品在第 k 種特徵方面的相似程度對整體搭配不匹配的影響程度,數值越大自然表示影響越大了。

如果是單個商品的重要程度,可以對包含該商品的梯度進行求和,這裏是計算了第 q 個商品的重要程度:

訓練過程,對於輸出層的激活函數採用 Sigmoid 函數,而損失函數採用二值交叉熵:

2. Comparisons with Projected Embedding

上一節是整體介紹了 MCN 如何判斷搭配的評價,以及對搭配的診斷,至於替換商品其實就是在數據集選擇商品替換當前搭配,然後計算搭配的得分,判斷是否符合閾值(比如評價得分大於0.9就停止搜索,採用當前替換的商品)。這裏可以發現最重要的就是如何計算兩個商品的相似度矩陣。

一個比較簡單的方法的就是採用餘弦相似性來計算相同空間中特徵的距離。但這有幾個缺點:

  1. 匹配性的變化會被壓縮。比如和同一個襯衫很匹配的所有褲子都被強制拉近距離,但這些褲子並非都很相似;
  2. 三角形不等式會限制每個 embedding 的位置。比如存在這種情況,一條褲子和一件襯衫很匹配,然後褲子和一個鞋子又很匹配,那麼這個鞋子也會強制靠近這件襯衫,使得它們是匹配的。

爲了避免上述問題,這裏參考了論文**[1, 2],採用不同服飾類型集合的投影變量(projected embedding)**來處理這個問題。

一套搭配通常是包含不同類型的商品,比如上衣、下裝、鞋子等等,不同對類型的集合可以作爲一個條件,用於將 embedding 投影到不同的子空間,這裏定義:

然後投影過程的計算如下所示

其中 P 表示投影,這裏的距離 d 採用餘弦相似性。實現如下所示:

其中,m 是一個可學習的 mask 向量,它的作用就是一個像素元素的門函數,在不同的匹配性條件下,挑選相關的像素元素,這裏參考**[3]**,添加兩個損失函數,如下所示,Lmask是讓 masks 變得更加稀疏,而 Lemb 則是鼓勵 CNN 在隱式空間中編碼歸一化的特徵表示,因此前者採用 L1 正則,後者是 L2 正則方法。

3. Multi-Layered Representation

對商品的特徵表示也是非常關鍵的,不僅可以更好對搭配進行診斷,判斷哪件商品不合適,也有助於搭配匹配性的預測。

一種構建不同特徵表示的方法,就是預定義一些特徵,比如顏色、紋理和形狀等等,但這種做法可能不能完全表示時尚商品的特徵。

另一種做法就是利用 CNN 的特徵,對於CNN的不同網絡層可以捕捉圖像的不同特徵,淺層的通常是捕捉到低級特徵,比如顏色、紋理,而深層的可以獲取高級的特徵,包括商品風格和匹配性等。

因此,本文採用 CNN 的不同網絡層的輸出特徵作爲商品的特徵表示,具體來說,就是指定網絡層的輸出會再連接一個全局平均池化(global average pooling, GAP)層來將網絡層的特徵圖變爲向量表示。

GAP的兩大作用:

  1. 將網絡層的特徵圖轉換爲向量,滿足計算餘弦相似性
  2. 包括顏色、紋理等特徵是和位置沒有相關性的,GAP 可以有效丟棄空間信息

因此,採用 K 層的特徵圖就可以得到 K 個相似度矩陣 R。在本文中,基礎網絡模型採用 ResNet-50,然後 K=4。

4. Visual Semantic Embedding

現實生活中,商品通常都有多種描述信息,包括圖像、文字等。Visual Semantic Embedding(VSE)[4]就是一種可以很好利用這些不同形式的信息的方法,參考[5,6],只需要給這些信息設計一個表達式。

在Polyvore 數據集中,每個商品都有一個文字的描述,如"classic skinny jeans",文字信息可以採用如下符號進行表示:

w_i 表示的就是第 i 個單詞,並且可以表示爲一個 one-hot 向量 e_i,然後 e_i 的詞向量(word embedding)如下表示:

W_T 表示詞向量的權重

一套搭配的語義向量(semantic embedding)如下表示

對於視覺特徵 x,也是有相似的處理過程,得到一個視覺向量,如下表示

所以,VSE 的目標就是讓同一個商品的 v 和 u 兩個語義向量在聯合空間中的距離減小,因此這裏採用的是**對比損失(contrastive loss),**公式如下所示:

這裏 d(u,v) 表示的就是兩個向量的距離。然後對於來自同個商品的 u 和 v,v_k 表示所有其他不匹配商品的語義向量,而 u_k 表示其他所有不匹配的商品的視覺向量。因此上述損失函數是期望所有匹配的 u 和 k 的距離要小於不匹配的情況(也就是公式中 u 和 v_k 或者 u_k 和 v 這兩種情況),並且設置一個間距 m。

在實際訓練中,可以採用一個 mini-batch 作爲搜索所有 u_k 和 v_k 的集合

最後,整體的損失函數如下所示:


實驗

1. Polyvore-T 數據集

論文采用的 Polyvore 數據集,原始數據集有 21899 套搭配,但原始數據集存在這幾個問題:

  • 給的類別會有重疊的,比如 "shoulder bags" 和 "bags"
  • 有些類別數量太少,不足以進行訓練

因此將總共 381 個類別通過下述方法分成 5 個大類:

  1. 不相關的類別,包括鏡子等都被刪除,只保留 158 個類別;
  2. 手動將剩餘的類別分爲 5 個類別--Top、Bottom、Shoe、Bag和Accessory
  3. 刪除不在指定類別的商品,並對剩餘商品根據指定的標籤進行分類

具體統計信息如下表所示:

2. 實驗

實驗設置

  • 採用預訓練模型的 ResNet-50
  • 輸入圖片大小是 224*224
  • 搭配的商品數量是 3-5件,不足5件的會採用缺少的類別的平均圖
  • 在計算完相似度矩陣後,添加一個 BN 層
  • batch = 32
  • 訓練epochs=50
  • 採用 SGD,初始學習率0.01
  • 損失函數的三個權重分爲是 5e-3, 5e-4 和 1

負樣本

正樣本就是polyvore數據集中的原始搭配,而負樣本是通過對正樣本的每個商品,隨機從其他搭配中挑選相同類別的商品替換。

主要也是因爲現實生活很少會有專門設計糟糕的搭配;此外,對於 Polyvore網站,相信專家都是根據不同美學規則來進行組合商品得到搭配,因此隨機組合的搭配很大概率是不好的。

實驗結果

主要是兩個實驗,如下圖所示

  1. 搭配匹配性預測(Compatibility Prediction):給定一套搭配,計算整套搭配的得分,並判斷搭配的好壞。如下圖a所示
  2. 補充搭配(Fill-in-the-blank):對一套搭配,補充缺少的商品。如下圖b所示,實驗中會給定四個候補商品,測試模型四選一選擇正確商品的準確率。

實驗結果如下表所示,總共對比了 6 種其他的方法,本文方法在搭配匹配性預測任務和補充搭配任務都取得最好的性能,分別是91.9%和64.35%。

接着是分析 MCN 模型中四個模塊對模型性能的影響,如下表所示,CM 表示採用相似度矩陣,VSE是採用視覺語義向量信息,PE是採用投影向量來計算商品間的相似度。

然後就是研究商品兩兩的相似度和整體匹配性的關係,實驗如下表所示,實驗結果表明採用兩層FC的效果是最好的,也說明兩者之間是一種非線性的關係。

而下表則表明 CNN 不同層的輸出特徵都對模型的性能做出了貢獻。

模型診斷的例子如下圖所示,給出都是評分很差的搭配,紅色框的商品是最需要替換的商品,然後分別給出每層特徵計算的商品間相似度。

診斷接着進行替換商品,再經過模型輸出得分,例子如下圖所示,紅色箭頭表示更換前後的商品。


參考文獻

下面是論文中部分的參考文獻

【1】Hongxu Chen, Weiqing Wang, and Hao Wang. [n. d.]. PME : Projected Metric Embedding on Heterogeneous Networks for Link Prediction. ([n. d.]). 

【2】Mariya I. Vasileva, Bryan A. Plummer, Krishna Dusad, Shreya Rajpal, Ranjitha Kumar, and David Forsyth. 2018. Learning Type-Aware Embeddings for Fashion Compatibility. (2018), 1–66. arXiv:1803.09196 http://arxiv.org/abs/1803.09196 

【3】Andreas Veit, Serge Belongie, and Theofanis Karaletsos. 2017. Conditional similarity networks. Proceedings - 30th IEEE Conference on Computer Vision and Pattern Recognition, CVPR 2017 2017-Janua (2017), 1781–1789. https://doi.org/10.1109/CVPR.2017.193 arXiv:1603.07810 

【4】Ryan Kiros, Ruslan Salakhutdinov, and Richard S Zemel. [n. d.]. Unifying VisualSemantic Embeddings with Multimodal Neural Language Models arXiv : 1411 .2539v1 [ cs . LG ] 10 Nov 2014. ([n. d.]), 1–13. arXiv:arXiv:1411.2539v1 

【5】Xintong Han, Zuxuan Wu, Yu-Gang Jiang, and Larry S. Davis. 2017. Learning Fashion Compatibility with Bidirectional LSTMs. Proceedings of the 2017 ACM on Multimedia Conference - MM ’17 1 (2017), 1078–1086. https://doi.org/10.1145/3123266.3123394 arXiv:1707.05691 

【6】Takuma Nakamura and Ryosuke Goto. 2018. Outft Generation and Style Extraction via Bidirectional LSTM and Autoencoder. (2018). 

【7】Deepfashion: Powering robust clothes recognition and retrieval with rich annotations.


  
     
     
     
個人微信(如果沒有備註不拉羣!
請註明: 地區+學校/企業+研究方向+暱稱



下載1:何愷明頂會分享


AI算法與圖像處理」公衆號後臺回覆:何愷明,即可下載。總共有6份PDF,涉及 ResNet、Mask RCNN等經典工作的總結分析


下載2:終身受益的編程指南:Google編程風格指南


AI算法與圖像處理」公衆號後臺回覆:c++,即可下載。歷經十年考驗,最權威的編程規範!




   
   
   
下載3 CVPR2021

AI算法與圖像處公衆號後臺回覆: CVPR 即可下載1467篇CVPR 2020論文 和 CVPR 2021 最新論文

點亮 ,告訴大家你也在看


本文分享自微信公衆號 - AI算法與圖像處理(AI_study)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章