MCN 服裝穿搭評(píng)價(jià)模型 | 附源碼
點(diǎn)擊上方“AI算法與圖像處理”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá)
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

簡(jiǎn)介
本文基于一個(gè)多層比較網(wǎng)絡(luò)(Multi-Layered Comparison Network,MCN) 實(shí)現(xiàn)搭配匹配預(yù)測(cè)和診斷,并實(shí)現(xiàn)一個(gè)端到端的框架。主要貢獻(xiàn)如下:
通過(guò)采用梯度值來(lái)近似輸入商品的相似度實(shí)現(xiàn)對(duì)搭配的診斷,可以給出搭配中哪件商品最不不合適,并可以通過(guò)替換該商品來(lái)提高搭配的評(píng)價(jià)得分; 利用CNN 的不同層的特征進(jìn)行商品之間兩兩對(duì)比,得到一個(gè)相似度矩陣,然后再通過(guò)兩層全連接層來(lái)輸出搭配的評(píng)價(jià)得分;CNN的不同層特征可以解釋為不同級(jí)別的語(yǔ)義信息,從低級(jí)的顏色、紋理到高級(jí)的風(fēng)格等信息; 對(duì) Polyvore 進(jìn)行處理,得到一個(gè)更加干凈的數(shù)據(jù)集 Polyvore-T,并對(duì)類(lèi)別進(jìn)行歸納得到新的 5 大類(lèi)型--上裝、下裝、鞋子、包和首飾(Top、Bottom、Shoe、Bag、Accessory)
本文的應(yīng)用可以如下所示,主要分為三方面的應(yīng)用:
判斷搭配好壞,也可以對(duì)搭配進(jìn)行評(píng)分; 對(duì)搭配進(jìn)行診斷,判斷需要替換哪件商品; 根據(jù) 2 的診斷結(jié)果,從數(shù)據(jù)集選擇合適的同類(lèi)別商品進(jìn)行替換。

背景
1. 時(shí)尚商品識(shí)別和理解
時(shí)尚商品識(shí)別是實(shí)現(xiàn)搭配匹配性的第一步,也是非常關(guān)鍵的步驟。
《DeepFashion》[7]論文建立了一個(gè)時(shí)尚商品數(shù)據(jù)集--DeepFashion,并采用CNN學(xué)習(xí)商品的類(lèi)別、屬性和位置信息;
一些相關(guān)的方法分別從有監(jiān)督、無(wú)監(jiān)督,加入文本信息、搭配之間的關(guān)聯(lián)信息等方面來(lái)提高對(duì)商品的識(shí)別精度。
2. 視覺(jué)匹配性學(xué)習(xí)
搭配的匹配性是非常主觀(guān)的審美標(biāo)準(zhǔn),但目前也存在不少搭配相關(guān)的網(wǎng)站,比如 Polyvore 數(shù)據(jù)集(也是目前搭配領(lǐng)域非常常用的數(shù)據(jù)集)。
之前對(duì)于搭配匹配性的學(xué)習(xí)方法主要分為兩個(gè)方向:
學(xué)習(xí)一對(duì)商品的匹配性 采用端到端方法學(xué)習(xí)搭配的匹配性
對(duì)于一對(duì)商品的匹配性,可以通過(guò)計(jì)算商品的特征的歐式距離,但最近的學(xué)者認(rèn)為搭配匹配性并不像檢索任務(wù)一樣嚴(yán)格,并不太適用歐式距離來(lái)學(xué)習(xí),于是就有很多工作是嘗試采用其他的 metric learning 方法來(lái)學(xué)習(xí)。但這個(gè)方向的問(wèn)題是沒(méi)有考慮到整體搭配的匹配性和兩兩商品的匹配性之間的關(guān)系。
對(duì)于第二個(gè)采用端到端方法,則可以學(xué)習(xí)多種商品的特征,然后利用 MLP 來(lái)計(jì)算搭配的匹配性得分。但 MLP 并不是一個(gè)有效的學(xué)習(xí)每個(gè)商品間關(guān)系的方法。也有工作采用 LSTM 進(jìn)行學(xué)習(xí),但搭配更類(lèi)似集合,而不是序列,因?yàn)樗菬o(wú)序的。
方法
MCN 整體流程如下所示:

從上圖可以知道,MCN 總共分為四大部分,分別如下:
Multi-layered Feature Extractor Comparisons at Different Layers Predictor Outfit Diagnosis by Gradients
其中第四部分是對(duì)搭配進(jìn)行診斷,訓(xùn)練模型階段僅包含前三個(gè)部分。下面會(huì)分別介紹這幾部分內(nèi)容:
1. Outfit Diagnosis by Gradients
整體搭配的匹配性是綜合考慮了商品之間兩兩在不同方面,比如顏色、紋理、風(fēng)格等,進(jìn)行對(duì)比后的結(jié)果。一般要學(xué)習(xí)整體匹配性和成對(duì)商品相似度的關(guān)系,可以考慮兩種方法:
線(xiàn)性模型
優(yōu)點(diǎn):有很好的解釋性,輸入的權(quán)重就表明其輸出的重要性程度;缺點(diǎn):受限的容量
多層感知器(MLP)
優(yōu)點(diǎn):有更好的容量 缺點(diǎn):可解釋行差
結(jié)合兩者的優(yōu)點(diǎn),所以本文是采用梯度來(lái)近似每對(duì)商品的相似度的重要程度,從而找出不合適的商品。
首先給出商品之間的相似度矩陣 R,其公式如下所示,具體的計(jì)算方法將在下一節(jié)介紹。

R 矩陣中每個(gè)數(shù)值都是兩個(gè)商品在不同特征的相似度,因?yàn)楸疚牟捎昧?CNN 的四層輸出特征,所以 R 矩陣是有四個(gè),也就是 K = 4,K 表示商品對(duì)比的不同方面,其大小 ,N 是搭配中商品的個(gè)數(shù),而本文的 N = 5,設(shè)置了搭配的商品數(shù)量上限是 5 件,因此 R 矩陣的大小是 。
當(dāng)然這里在代碼實(shí)現(xiàn)的時(shí)候,并不需要存儲(chǔ) 5*5 = 25 個(gè)數(shù)值,而是僅需要 15 個(gè)數(shù)值,這是剔除重復(fù)的元素。
在獲得相似性矩陣 R 后,就會(huì)將這個(gè)矩陣傳到 2 層的 MLP,即兩個(gè)全連接層,這里 R 矩陣的維度就是 (batch, 15*4)。通過(guò)兩層 MLP 輸出搭配的匹配得分,公式如下所示:

這里使用了非線(xiàn)性激活函數(shù) ReLU,即 R 和最終搭配得分 s 之間是一個(gè)非線(xiàn)性關(guān)系,這有助于提高搭配匹配判斷的性能,但并不好解釋做出這個(gè)搭配匹配判斷結(jié)果的原因,因此采用的就是上述說(shuō)的梯度值。
具體來(lái)說(shuō),對(duì)搭配評(píng)價(jià)得分 s 采用一階泰勒展開(kāi)式,可以得到:

這個(gè)近似公式就是一個(gè)線(xiàn)性模型(wx+b的形式),這里的權(quán)重 W 就可以用于表示相似度矩陣的重要程度,也就是每對(duì)商品的相似性的重要性,而 W 的元素是等于 s 對(duì)每個(gè) R 的導(dǎo)數(shù),即:

假如不匹配的搭配的標(biāo)簽是 1,上述公式里的 w 就表示為第 i 個(gè)商品和第 j 個(gè)商品在第 k 種特征方面的相似程度對(duì)整體搭配不匹配的影響程度,數(shù)值越大自然表示影響越大了。
如果是單個(gè)商品的重要程度,可以對(duì)包含該商品的梯度進(jìn)行求和,這里是計(jì)算了第 q 個(gè)商品的重要程度:

訓(xùn)練過(guò)程,對(duì)于輸出層的激活函數(shù)采用 Sigmoid 函數(shù),而損失函數(shù)采用二值交叉熵:

2. Comparisons with Projected Embedding
上一節(jié)是整體介紹了 MCN 如何判斷搭配的評(píng)價(jià),以及對(duì)搭配的診斷,至于替換商品其實(shí)就是在數(shù)據(jù)集選擇商品替換當(dāng)前搭配,然后計(jì)算搭配的得分,判斷是否符合閾值(比如評(píng)價(jià)得分大于0.9就停止搜索,采用當(dāng)前替換的商品)。這里可以發(fā)現(xiàn)最重要的就是如何計(jì)算兩個(gè)商品的相似度矩陣。
一個(gè)比較簡(jiǎn)單的方法的就是采用余弦相似性來(lái)計(jì)算相同空間中特征的距離。但這有幾個(gè)缺點(diǎn):
匹配性的變化會(huì)被壓縮。比如和同一個(gè)襯衫很匹配的所有褲子都被強(qiáng)制拉近距離,但這些褲子并非都很相似; 三角形不等式會(huì)限制每個(gè) embedding 的位置。比如存在這種情況,一條褲子和一件襯衫很匹配,然后褲子和一個(gè)鞋子又很匹配,那么這個(gè)鞋子也會(huì)強(qiáng)制靠近這件襯衫,使得它們是匹配的。
為了避免上述問(wèn)題,這里參考了論文**[1, 2],采用不同服飾類(lèi)型集合的投影變量(projected embedding)**來(lái)處理這個(gè)問(wèn)題。
一套搭配通常是包含不同類(lèi)型的商品,比如上衣、下裝、鞋子等等,不同對(duì)類(lèi)型的集合可以作為一個(gè)條件,用于將 embedding 投影到不同的子空間,這里定義:
然后投影過(guò)程的計(jì)算如下所示

其中 P 表示投影,這里的距離 d 采用余弦相似性。實(shí)現(xiàn)如下所示:

其中,m 是一個(gè)可學(xué)習(xí)的 mask 向量,它的作用就是一個(gè)像素元素的門(mén)函數(shù),在不同的匹配性條件下,挑選相關(guān)的像素元素,這里參考**[3]**,添加兩個(gè)損失函數(shù),如下所示,Lmask是讓 masks 變得更加稀疏,而 Lemb 則是鼓勵(lì) CNN 在隱式空間中編碼歸一化的特征表示,因此前者采用 L1 正則,后者是 L2 正則方法。

3. Multi-Layered Representation
對(duì)商品的特征表示也是非常關(guān)鍵的,不僅可以更好對(duì)搭配進(jìn)行診斷,判斷哪件商品不合適,也有助于搭配匹配性的預(yù)測(cè)。
一種構(gòu)建不同特征表示的方法,就是預(yù)定義一些特征,比如顏色、紋理和形狀等等,但這種做法可能不能完全表示時(shí)尚商品的特征。
另一種做法就是利用 CNN 的特征,對(duì)于CNN的不同網(wǎng)絡(luò)層可以捕捉圖像的不同特征,淺層的通常是捕捉到低級(jí)特征,比如顏色、紋理,而深層的可以獲取高級(jí)的特征,包括商品風(fēng)格和匹配性等。
因此,本文采用 CNN 的不同網(wǎng)絡(luò)層的輸出特征作為商品的特征表示,具體來(lái)說(shuō),就是指定網(wǎng)絡(luò)層的輸出會(huì)再連接一個(gè)全局平均池化(global average pooling, GAP)層來(lái)將網(wǎng)絡(luò)層的特征圖變?yōu)橄蛄勘硎尽?/p>
GAP的兩大作用:
將網(wǎng)絡(luò)層的特征圖轉(zhuǎn)換為向量,滿(mǎn)足計(jì)算余弦相似性 ; 包括顏色、紋理等特征是和位置沒(méi)有相關(guān)性的,GAP 可以有效丟棄空間信息
因此,采用 K 層的特征圖就可以得到 K 個(gè)相似度矩陣 R。在本文中,基礎(chǔ)網(wǎng)絡(luò)模型采用 ResNet-50,然后 K=4。
4. Visual Semantic Embedding
現(xiàn)實(shí)生活中,商品通常都有多種描述信息,包括圖像、文字等。Visual Semantic Embedding(VSE)[4]就是一種可以很好利用這些不同形式的信息的方法,參考[5,6],只需要給這些信息設(shè)計(jì)一個(gè)表達(dá)式。
在Polyvore 數(shù)據(jù)集中,每個(gè)商品都有一個(gè)文字的描述,如"classic skinny jeans",文字信息可以采用如下符號(hào)進(jìn)行表示:
w_i 表示的就是第 i 個(gè)單詞,并且可以表示為一個(gè) one-hot 向量 e_i,然后 e_i 的詞向量(word embedding)如下表示:
W_T 表示詞向量的權(quán)重
一套搭配的語(yǔ)義向量(semantic embedding)如下表示:
對(duì)于視覺(jué)特征 x,也是有相似的處理過(guò)程,得到一個(gè)視覺(jué)向量,如下表示
所以,VSE 的目標(biāo)就是讓同一個(gè)商品的 v 和 u 兩個(gè)語(yǔ)義向量在聯(lián)合空間中的距離減小,因此這里采用的是**對(duì)比損失(contrastive loss),**公式如下所示:

這里 d(u,v) 表示的就是兩個(gè)向量的距離。然后對(duì)于來(lái)自同個(gè)商品的 u 和 v,v_k 表示所有其他不匹配商品的語(yǔ)義向量,而 u_k 表示其他所有不匹配的商品的視覺(jué)向量。因此上述損失函數(shù)是期望所有匹配的 u 和 k 的距離要小于不匹配的情況(也就是公式中 u 和 v_k 或者 u_k 和 v 這兩種情況),并且設(shè)置一個(gè)間距 m。
在實(shí)際訓(xùn)練中,可以采用一個(gè) mini-batch 作為搜索所有 u_k 和 v_k 的集合。
最后,整體的損失函數(shù)如下所示:

實(shí)驗(yàn)
1. Polyvore-T 數(shù)據(jù)集
論文采用的 Polyvore 數(shù)據(jù)集,原始數(shù)據(jù)集有 21899 套搭配,但原始數(shù)據(jù)集存在這幾個(gè)問(wèn)題:
給的類(lèi)別會(huì)有重疊的,比如 "shoulder bags" 和 "bags" 有些類(lèi)別數(shù)量太少,不足以進(jìn)行訓(xùn)練
因此將總共 381 個(gè)類(lèi)別通過(guò)下述方法分成 5 個(gè)大類(lèi):
不相關(guān)的類(lèi)別,包括鏡子等都被刪除,只保留 158 個(gè)類(lèi)別; 手動(dòng)將剩余的類(lèi)別分為 5 個(gè)類(lèi)別--Top、Bottom、Shoe、Bag和Accessory 刪除不在指定類(lèi)別的商品,并對(duì)剩余商品根據(jù)指定的標(biāo)簽進(jìn)行分類(lèi)
具體統(tǒng)計(jì)信息如下表所示:

2. 實(shí)驗(yàn)
實(shí)驗(yàn)設(shè)置
采用預(yù)訓(xùn)練模型的 ResNet-50 輸入圖片大小是 224*224 搭配的商品數(shù)量是 3-5件,不足5件的會(huì)采用缺少的類(lèi)別的平均圖 在計(jì)算完相似度矩陣后,添加一個(gè) BN 層 batch = 32 訓(xùn)練epochs=50 采用 SGD,初始學(xué)習(xí)率0.01 損失函數(shù)的三個(gè)權(quán)重分為是 5e-3, 5e-4 和 1
負(fù)樣本
正樣本就是polyvore數(shù)據(jù)集中的原始搭配,而負(fù)樣本是通過(guò)對(duì)正樣本的每個(gè)商品,隨機(jī)從其他搭配中挑選相同類(lèi)別的商品替換。
主要也是因?yàn)楝F(xiàn)實(shí)生活很少會(huì)有專(zhuān)門(mén)設(shè)計(jì)糟糕的搭配;此外,對(duì)于 Polyvore網(wǎng)站,相信專(zhuān)家都是根據(jù)不同美學(xué)規(guī)則來(lái)進(jìn)行組合商品得到搭配,因此隨機(jī)組合的搭配很大概率是不好的。
實(shí)驗(yàn)結(jié)果
主要是兩個(gè)實(shí)驗(yàn),如下圖所示
搭配匹配性預(yù)測(cè)(Compatibility Prediction):給定一套搭配,計(jì)算整套搭配的得分,并判斷搭配的好壞。如下圖a所示 補(bǔ)充搭配(Fill-in-the-blank):對(duì)一套搭配,補(bǔ)充缺少的商品。如下圖b所示,實(shí)驗(yàn)中會(huì)給定四個(gè)候補(bǔ)商品,測(cè)試模型四選一選擇正確商品的準(zhǔn)確率。

實(shí)驗(yàn)結(jié)果如下表所示,總共對(duì)比了 6 種其他的方法,本文方法在搭配匹配性預(yù)測(cè)任務(wù)和補(bǔ)充搭配任務(wù)都取得最好的性能,分別是91.9%和64.35%。

接著是分析 MCN 模型中四個(gè)模塊對(duì)模型性能的影響,如下表所示,CM 表示采用相似度矩陣,VSE是采用視覺(jué)語(yǔ)義向量信息,PE是采用投影向量來(lái)計(jì)算商品間的相似度。

然后就是研究商品兩兩的相似度和整體匹配性的關(guān)系,實(shí)驗(yàn)如下表所示,實(shí)驗(yàn)結(jié)果表明采用兩層FC的效果是最好的,也說(shuō)明兩者之間是一種非線(xiàn)性的關(guān)系。

而下表則表明 CNN 不同層的輸出特征都對(duì)模型的性能做出了貢獻(xiàn)。

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

診斷接著進(jìn)行替換商品,再經(jīng)過(guò)模型輸出得分,例子如下圖所示,紅色箭頭表示更換前后的商品。

參考文獻(xiàn)
下面是論文中部分的參考文獻(xiàn)
【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.
個(gè)人微信(如果沒(méi)有備注不拉群!) 請(qǐng)注明:地區(qū)+學(xué)校/企業(yè)+研究方向+昵稱(chēng)
下載1:何愷明頂會(huì)分享
在「AI算法與圖像處理」公眾號(hào)后臺(tái)回復(fù):何愷明,即可下載。總共有6份PDF,涉及 ResNet、Mask RCNN等經(jīng)典工作的總結(jié)分析
下載2:終身受益的編程指南:Google編程風(fēng)格指南
在「AI算法與圖像處理」公眾號(hào)后臺(tái)回復(fù):c++,即可下載。歷經(jīng)十年考驗(yàn),最權(quán)威的編程規(guī)范!
下載3 CVPR2021 在「AI算法與圖像處理」公眾號(hào)后臺(tái)回復(fù):CVPR,即可下載1467篇CVPR 2020論文 和 CVPR 2021 最新論文
點(diǎn)亮
,告訴大家你也在看
