主要包含兩個工作:
1. 建立了一個服裝資料集DeepFashion,包含80萬張服裝映像,有類別,屬性,特徵點以及服飾框的標註。詳情可以參考我的另一篇部落格DeepFashion: 服裝公開資料集概述。
2. 提出一個深度學習模型FashionNet,結合服飾屬性和特徵點進行服飾的特徵提取,可以較好的應對服飾的變形遮擋等問題。
.痛點
Clothes Recognition的痛點大概可以分為三類: Style/texture Variation. Deformation+occlusion. Different Scenarios(背景不純淨)
故作者認為需要一個unified dataset, 用大量的attribute協助分割feature space(分解style的抽象問題),而landmark可以協助Recognition.
資料庫提供可研究的task有: 類別與屬性預測(Category and Attribute Prediction) 對 50 個fine-gained 類別和 1000 個屬性進行分類. 共 63720 張標註圖片。對於類別分類,採用標準的 top-k 分類精度 作為評價準則; 1-of-K classification problem. 對於屬性預測,採用 top-k recall rate 作為評價準則,通過對 1000 個分類 scores 進行排名,檢測在 top-k 中所匹配的屬性數量; multi-label tagging problem. 商家服裝檢索(In-Shop Clothes Retrieval) 該任務是判斷兩張商家映像是否屬於同一款. 共 11735 款服裝,54642 張圖片. 採用 top-k 檢索精度作為評價準則,如果在 top-k 檢索結果中能夠精確找到服裝款,則認為是檢索正確. 買家到商家服裝檢索(Consumer-to-Shop Clothes Retrieval) 該任務是匹配買家所拍照片與商家的服裝. 251361 張買家與商家對.
FashionNet的網路結構類似VGG-16,只是將VGG16的最後一個卷積層進行了修改,改成能夠處理服裝landmarks,屬性和類別的網路。
從上圖可以看出,VGG16的最後一個卷積層由作者設計的三個分支代替。
最右側藍色分支進行特徵點可見度預測以及位置迴歸。
中間綠色的分支,有兩個輸入:VGG16的conv4 + 右側藍色特徵點的分支輸出結果,根據特徵點的位置進行局部feature pooling。這一步有助於應對服飾變形和遮擋問題。
左邊橘色分支,進行全域的特徵處理。
綠色和橘色分支運算的結果經過fc7_fusion進行融合,預測服裝的類別,屬性和pairs
全域特徵分支—— 整個服裝商品的全域特徵; 局部特徵分支—— 由估計的服裝關鍵點池化(pooling) 得到服裝的局部特徵; 姿態分支—— 預測關鍵點位置及其可見度(i.e., landmarks存在的機率).
前向傳播(Forward Pass)
主要包括三個階段: Stage 1 - 服裝映像輸入網路,在pose branch傳遞,以預測關鍵點位置landmark locations和可見度visibity; Stage 2 - 如下圖所示得到將有visibility的地方從conv4_featuremaps中扣出來堆疊在一起,再各自乘以visibility經過maxpooling得到pool5_local的值。這樣的操作使局部特徵對服裝形變和缺失具有不變性;堆疊的好處是增加landmark之間的關聯性 Stage 3 - 得到了pool5_local以後,fix conv4及以前的層訓練對category和attribute的分類/預測。 fc7_fusion層是對 對 fc6_global 層全域特徵和 fc6_local池化後的關鍵點局部特徵的串連.
反向傳播流程定義了4中損失函數:
(1)迴歸損失,用於特徵點位置估計損失計算。
(2)softmax損失,用於特徵點可見度以及服飾類別估計損失計算。
(3)cross-entropy損失,用於屬性預測損失計算。 (4)triple損失,用於服飾pairs預測損失計算。
FashionNet是通過將以上4中loss進行加權處理進行最佳化的。訓練過程分兩步:
step1: 將特徵點可見度預測與位置估計作為主任務,其餘作為輔助任務,因此該過程中給L_visibility 和 L_landmark較大的權重,其餘損失賦予較小的權重。
由於任務間有一定的相關性,因此這種多任務聯合處理的手段能夠加速收斂。
Step2: 使用特徵點分支的預測結果,進行類別,屬性以及pairs的預測。
以上兩步不斷迭代直至收斂。
實驗:
對比方法選用了Where to buy it(WTBI) 和Dual Attribute-aware Ranking Network (DARN)[後續筆記會提到]。也與方法本身做了控制變數測試: +100和+500指使用attribute數量, joints和poselet替換掉了stage 1中的landmark預測。 可以觀察到本方法在分類上有極大提升,無論是attribute數量還是stage1 landmark迴歸。->本文也可作為attribute prediction必要性的佐證。 在attribute任務上FashionNet與poselets方式準確率差距不大,但遠超其他setting。但查全率Recall上我們可以看出FashionNet部分不足:e.g.,直覺上我們會把deep-V和V-neck聯絡到一起,但從performance上看網路沒有抓到二者關聯性:在attribute處理上可能仍需要引入embedding,尤其是我們需要上千attributes的時候one-hot的label presentation比較乏力。此外一些Style例如Distressed(做舊,I guess視覺特徵是有破洞)以及heart(衣服中間有心形圖案)都沒被predict到,大概是衣服中央的圖案會被landmark周圍細節資訊淹沒掉。故可能在feature fusion可以做attention或window