精讀 Recommending Outfits from Personal Closet

論文鏈接:Recommending Outfits from Personal Closet

研究成果

  • 本文可以對任意item組成的一套服裝進行打分,並基於測試用例可以達到84%的準確率;
  • 基於人爲評估也可以達到91%的匹配率;
  • 根據用戶給定的一定數量item,然推薦服裝;
  • 構建了Polyvore409k 數據集

1. 研究背景與意義

研究背景與意義
當今社會計算機視覺技術越來越"style", 而本文研究的Fashion Recommendation是它最熱門的應用領域之一。
根據用戶的喜好、社會的潮流趨勢等一些特徵,從而對時尚進行推薦。而推薦核心就是能夠對Fashion進行評估,得出可靠的評價。也就是本文研究的重點Outfit Evaluation

服裝輸入標準
服裝評估的輸入標準有2大類(也可以說是三種類型),如圖所示:

  • a worn outfit as a full-body picture(全身衣服的照片)
  • a set of images of items(一組衣物的圖像)
  • a combination of both(二者結合)

具體形式是什麼意思呢?請看下圖
左邊是第一種(全身衣服的照片),右邊是第二種(一組衣物的圖像)
a worn outfit as a full-body picture              a set of images of items

2. 國內外研究現狀

  • paper1:根據所要求的場合和該套裝中現有的物品,從而推薦出組合套裝中的物品。
  • paper2:主要是基於polyvore.com的賬戶和相關聯的服裝學習私人對時尚的偏好。
  • paper3:根據套裝中每一件衣物的name、image、category ,並通過已經選擇過的 item 的這些屬性,推薦一個新的item。

現有成果:Amazon automatic style assistant :Echo Look

缺點分析

  1. 只考慮了單件的數量,沒有考慮整套衣服的結構完整性。
  2. 模棱兩可的分類,沒有進行歸類。比如:“連衣裙”和“帶裙上衣”分類錯誤。
  3. 不能確定,每個單品對整體風格的重要性可能與服裝形象中單品的尺度是否有關。

3. 本文研究過程

3.1 數據收集

數據來源:polyvore.com
數據大小:644,192件不同的衣物隨
機組合出409,776套不同的套裝。
每一件套裝都包含: 
 1. 標題
 2. 套裝中的物品
 3. 組合圖像
 4. 行爲數據(例如來自其他用戶的喜歡和評論)組成。

:和傳統的風格識別不同,本文中收集的衣物爲一件件獨立存在,而不是包含模特本身穿着衣服對應的圖片(可以理解爲之前提到的輸入標準中的第二種方法)。

3.2 數據清洗

根據單品衣物部位不同劃分爲6類:

- 外衣:大衣,外套,派克大衣
- 上半身:女襯衫,襯衫,馬球衫
- 下半身:褲子,牛仔褲,裙子,慢跑褲
- 連體衣:禮服,連身褲,長袍
- 足:鞋、靴、平底鞋等
- 裝飾物:包,手套,項鍊,耳環等

因此不滿足這寫分類的單品當做髒數據進行刪除:

- logo
- 化妝品
- 用於演示目的的背景圖像等

針對於本文,服裝還有其他還有一些要求:

  1. 套裝的定義:是涵蓋身體上部和下部的集合,前5個類別中的每個類別最多具有一個件,而裝飾物最多三件。
  2. 可見性:只考慮外衣和上衣,而不考慮多件外衣。
  3. 劃分情況:我們將毛衣、針織衫等考慮作爲外-上混和種類產品。
    (1)如果其他部件存在外套,那麼就屬於上衣;
    (2)如果其他部件沒有外套,那麼就屬於外套;

3.3 P/N樣本創建

正樣本:

  1. 至少有一個讚的套裝,則認爲是正樣本.
  2. 總共212623條.

負樣本:

  1. 將通過任意組合物品的服裝作爲負樣本。
  2. 根據每一個正樣本創建兩個負樣本(即通過將原來正樣本中的某個部件替換爲來自同一訓練/測試部件池中相同部分的隨機部件得到負樣本)

3.4 Train/Test數據集劃分

算法作用:將數據集劃分爲訓練集和測試集
算法核心:保證訓練集和測試集中的任意兩個套裝中,不存在有item相交。
數據集算法劃分描述
大概思路:

  1. 首先輸入包含所有套裝的集合O
  2. 輸出爲三個集合A、B、C
  3. 初始化A、B、C集合爲空集
  4. A ∪ {O0} 表示將套裝總數據集集合的第一件服裝賦值放入A集合
  5. i=1,則表示從第二件套裝開始遍歷O
    1)每輪遍歷都把Oi賦值給o
    2)將當前A集合中的所有套裝包含的單品items,都放入集合itemsA
    3)將當前B集合中的所有套裝包含的單品items,都放入集合itemsB
    4)將當前所遍歷的套裝Oi包含的單品items,都放入集合itemsO
    5)求itemsA和itemsO的交集
    6)求itemsB和itemsO的交集
    7)如果itemsA和itemsO存在交集,且itemsB和itemsO存在交集,表示當前服裝Oi無論是放在A還是B都會使得A集合和B集合最終存在item相交,不滿足我們的要求,故放入C集合中。
          如果如果itemsA和itemsO存在交集,且itemsB和itemsO不存在交集,則放入A集合當中;
          如果如果itemsA和itemsO不存在交集,且itemsB和itemsO存在交集,則放入B集合當中;
          如果A中也沒出現過、B中也沒出現過,那麼就表示當前服裝中的item爲從未出現過,則按照訓練集和測試集比例需要爲2:1的思想,(這裏可以猜到A其實就是訓練集,B其實就是測試集)把當前一套Outfit併入對應的集合。

3.5 服裝分類流程

分類過程圖

  1. 將一套衣服中的每一件衣物都分別劃分到6大部位中;
  2. 通過ResNet-50模型獲取每一件item的2048維嵌入表示(對於缺失的部位,會給定一個圖像均值進行填充,這類似卷積神經網絡中的0填充);
  3. 並將各自衣物的嵌入表示按照固定的順序進行連接,組成整套服裝的表徵。
    Φ(O) ≡ [φouter, φupper, · · · , φaccessory2]
    最終每一套服裝都由5個部位和3個裝飾品組成
    服裝最終表示:5 * part+3 * accessories = 16384 維
  4. 將服裝表示進行質量評分,得到一個[0 , 1]範圍的分值。

3.6 模型設置

  1. one fc4096: 一層4096維度的全連接層
  2. one fc128 : 一層128維度的全連接層
  3. two fc128 : 兩層128維度的全連接層

每一個全連接層都批次歸一化處理,然後通過 Relu 激活函數進行dropout(更好的擬合數據)。
Relu函數圖像
把所有的負值都變爲0,而正值不變,這種操作被稱爲單側抑制
Dropout
使得神經網絡中的神經元也具有了稀疏激活性
就是隻關注真正起作用的神經元。

4. 研究結果

從下表可知,one_fc4096效果最好:
在這裏插入圖片描述

下表中可知訓練集的精確度、回召率、F1-score出於99%以上,但是測試集缺不盡人意,說明是出現了過擬合現象。
在這裏插入圖片描述
爲此,在one_4096fcd的基礎上,又進行了一些其他的特徵選取實驗:

  • (1) item type
  • (2) 4-color palette
  • (3)(1)+(2)
  • (4) ResNet-50 features from grayscale images
  • (5)ResNet-50 features from RGB images
    在這裏插入圖片描述

結論:

Item types和 color 分類效果幾乎一致;但是結合使用效果會有一定提升。
ResNet-50 能夠有更好的實驗效果,如果添加上顏色信息,那麼會繼續有約3%的準確度提升。

還有其他的一些實驗後續再進行補充吧。

AI Fashion, Go Go GO!

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