0
本文作者: 汪思穎 | 2018-09-29 16:56 |
雷鋒網(wǎng) AI 科技評(píng)論按:隨著消費(fèi)升級(jí)時(shí)代的來(lái)臨,中國(guó)時(shí)尚消費(fèi)市場(chǎng)正漸漸變得更加個(gè)性化、精致化和多樣化,服飾的時(shí)尚風(fēng)格對(duì)消費(fèi)動(dòng)機(jī)的影響愈漸加深,而隨著 AI 技術(shù)的發(fā)展,AI 也越來(lái)越多地被應(yīng)用于時(shí)尚領(lǐng)域。
基于以上原因,京東集團(tuán) AI 平臺(tái)與研究院推出與時(shí)尚相關(guān)的 AI Fashion-Challenge 挑戰(zhàn)賽,該項(xiàng)賽事包括時(shí)尚風(fēng)格識(shí)別和時(shí)尚單品搜索兩個(gè)子任務(wù)。
對(duì)于風(fēng)格識(shí)別賽道,主要面臨兩大難題,一是基于京東真實(shí)數(shù)據(jù)集的樣本差異非常明顯,二是時(shí)尚還面臨主觀性和專業(yè)性問題,是非常具有難度的多標(biāo)簽分類任務(wù)之一。本次競(jìng)賽邀請(qǐng)了專業(yè)時(shí)尚設(shè)計(jì)界人士,在設(shè)計(jì)師指導(dǎo)下標(biāo)注了大量京東的女裝商品照片的整體時(shí)尚風(fēng)格,共分為 13 類風(fēng)格。
另一個(gè)賽道是時(shí)尚單品搜索,這是時(shí)尚領(lǐng)域比較常見的視覺搜索任務(wù),除了前面提到的主觀性挑戰(zhàn),圖片中的物體具有不規(guī)則的特性,角度和形狀也具有多樣性,這也都為解決本問題帶來(lái)巨大挑戰(zhàn)。
據(jù)京東 AI 平臺(tái)與研究部葉韻博士介紹,本次比賽共有 212 支隊(duì)伍報(bào)名,52 支隊(duì)伍提交結(jié)果,共收到 12 份技術(shù)報(bào)告,參賽人員來(lái)自 6 個(gè)不同國(guó)家和地區(qū),涵蓋 196 所大學(xué)和研究所,包含 31 家公司。最終,「西天取京」隊(duì)以 0.6834 F2 Score 獲得時(shí)尚風(fēng)格識(shí)別子賽道冠軍,「Fashion_First」隊(duì)以 0.5886 mAP 獲得時(shí)尚單品搜索子賽道冠軍。
「西天取京」隊(duì)成員如下:
丁煌浩
dinghuanghao@gmail.com
萬(wàn)輝
wanhui0729@gmail. com
「Fashion_First」隊(duì)成員如下:
陳亮雨,中國(guó)科學(xué)院自動(dòng)化研究所實(shí)習(xí)生
吳旭貌,中國(guó)科學(xué)院自動(dòng)化研究所實(shí)習(xí)生
方治煒,中國(guó)科學(xué)院自動(dòng)化研究所博士在讀
劉靜(帶隊(duì)老師),中國(guó)科學(xué)院自動(dòng)化研究所研究員
以下為這兩個(gè)賽道冠軍方案:
風(fēng)格識(shí)別賽道
本次競(jìng)賽開發(fā)數(shù)據(jù)包含 5.5 萬(wàn)張經(jīng)過(guò)專業(yè)標(biāo)注的真實(shí)京東時(shí)尚單品展示圖,該數(shù)據(jù)用作模型訓(xùn)練及調(diào)優(yōu)。 測(cè)試數(shù)據(jù)包括 1 萬(wàn)張經(jīng)過(guò)專業(yè)標(biāo)注的真實(shí)的京東時(shí)尚單品展示圖。任務(wù)描述如下:給定一張時(shí)尚照片 I,參賽算法需要預(yù)測(cè)
。
其中 S={運(yùn)動(dòng),休閑,OL/通勤,日系,韓版,歐美,英倫,少女,名媛/淑女,簡(jiǎn)約,自然,街頭/朋克, 民族}
工程方面:
以 Keras 作為基礎(chǔ)框架,對(duì)其進(jìn)行了一定的優(yōu)化和封裝,大大的加快了開發(fā)進(jìn)度,具體如下:
采用 Config-Driven-Development 的開發(fā)方式,對(duì)所有的技術(shù)和參數(shù)進(jìn)行封裝,只用修改配置文件即可自動(dòng)進(jìn)行訓(xùn)練、評(píng)估、統(tǒng)計(jì)、集成。
擴(kuò)展了 Keras 的數(shù)據(jù)加載器 ,使其支持 TTA、K-Fold Cross Validation。
將 Keras 的 Evaluate 方法改為異步,減少了訓(xùn)練的中斷。
將 XGBoost 的參數(shù)分發(fā)到多臺(tái) PC 訓(xùn)練然后合并,縮短了訓(xùn)練時(shí)長(zhǎng)。
模型:
采用多種不同的 Backbone,包括 ResNet、Inception、Xception 等,后接兩個(gè) FC 層,分別為 256、13 個(gè)神經(jīng)元(多隱層提升并不大),兩層之間使用 BN,使用 Cross-Entropy Loss、Focal Loss 進(jìn)行模型的訓(xùn)練。這種結(jié)構(gòu)相當(dāng)于構(gòu)建了 Multi-task 學(xué)習(xí),比起每個(gè)標(biāo)簽單獨(dú)訓(xùn)練模型而言,速度更快,且精度更高。
數(shù)據(jù)增強(qiáng):
使用了一些比較通用的方法,包括隨機(jī)裁剪(橫15%,縱10%)、拉伸(10%)、壓縮(10%)、水平翻轉(zhuǎn)。裁剪時(shí)考慮到人的比例,橫向和豎向的裁剪比例不同,這樣會(huì)有一定的提升。
除此之外,提出一種專門針對(duì)服裝的變色方案:
使用 MASK-RCNN 分割出人像;
根據(jù)人像區(qū)域中的顏色比例,推測(cè)出服裝的顏色;
對(duì)服裝顏色在全局進(jìn)行 HSV 變換。
這種方法的好處是變化的平滑以及自然,缺點(diǎn)是一定程度上影響了背景。最終,一共生產(chǎn)出大約 130K 圖片,考慮到計(jì)算量,并沒有全部使用。
測(cè)試時(shí),嘗試了兩種增強(qiáng),一種是水平翻轉(zhuǎn),一種是裁剪(左上、左下、右上、右下、中央)。五種裁剪操作加上翻轉(zhuǎn)一共有十種變換,雖然效果更好,但會(huì)有很大的性能損耗。最終僅采用了水平翻轉(zhuǎn),可以將結(jié)果提高一個(gè)百分點(diǎn)左右。
處理標(biāo)簽不均衡:
此次比賽的數(shù)據(jù)集存在嚴(yán)重的標(biāo)簽不均衡,數(shù)量差異可達(dá) 480 倍。主要采用了如下的四種方案來(lái)解決:
上采樣:對(duì)所有稀疏標(biāo)簽相關(guān)樣本進(jìn)行上采樣。因?yàn)檫@是一個(gè)多標(biāo)簽分類問題,雖然密集標(biāo)簽相關(guān)樣本數(shù)量也會(huì)被連帶進(jìn)行部分上采樣,但是比例會(huì)變得更均衡。
下采樣:因?yàn)樾?biāo)簽本來(lái)就很少,如果再對(duì)它進(jìn)行下采樣,后果會(huì)更加嚴(yán)重,因此下采樣時(shí)只對(duì)那些所有標(biāo)簽都是密集標(biāo)簽的樣本進(jìn)行下采樣,不會(huì)影響到稀疏標(biāo)簽相關(guān)樣本。
數(shù)據(jù)生成:使用前面提到的服裝變色技術(shù)對(duì)稀疏標(biāo)簽相關(guān)樣本進(jìn)行變色。
優(yōu)化損失函數(shù):使用 Focal Loss(使用網(wǎng)格搜索法進(jìn)行了簡(jiǎn)單的調(diào)參),提升了 1% 左右。如果與加權(quán)法相結(jié)合,應(yīng)該會(huì)帶來(lái)更好的效果(參考第二名)。
下圖左邊是上采樣之后各個(gè)標(biāo)簽的 F2 score,右邊是提升值。比賽中對(duì) 0,3,6,12 這四個(gè)標(biāo)簽進(jìn)行了上采樣,可以看到這四個(gè)標(biāo)簽平均提升值大約在 3.5% 左右。
下采樣過(guò)程中隨機(jī)對(duì)樣本進(jìn)行刪除,分別測(cè)試了 20%,40% 和 60% 的下采樣,可以看到 20% 的時(shí)候效果最好。
調(diào)參:主要使用 Adam,batch-size 為 32,圖像短邊為 224(經(jīng)測(cè)試,尺寸越大結(jié)果越好,但由于算力限制,仍以 224 為主),使用 Cyclic Learning Rate 和階段性 Fine Tuning(以較大的學(xué)習(xí)率訓(xùn)練后幾層,然后逐步增加訓(xùn)練的層數(shù)并減小學(xué)習(xí)率,最初始的幾層不進(jìn)行訓(xùn)練),這可以加快速度,并提高準(zhǔn)確率。
閾值搜索:
由于每個(gè)標(biāo)簽的概率分布不同,因此需要不同的閾值(如某些數(shù)量較小的標(biāo)簽,輸出值往往低于 0.5,而數(shù)量較多的標(biāo)簽輸出值大于 0.5)。
我們嘗試了三種方案:第一是固定閾值,人為根據(jù)概率分布去篩選閾值。第二,用 L-BFGS 去搜索,第三,只用了貪心搜索。最后得出來(lái)的結(jié)果是,固定閾值效果較差,L-BFGS 和貪心搜索差異不大,但貪心搜索更快,也更穩(wěn)定。
為了驗(yàn)證 CV 集上貪心搜索的泛化能力,我們?cè)诤髞?lái)官方公布的測(cè)試集上也進(jìn)行了搜索,并進(jìn)行了對(duì)比,發(fā)現(xiàn) CV 上的閾值和 TEST 上的閾值之間的差異小于 0.1,而且是類似正態(tài)分布。不管是密集標(biāo)簽還是稀疏標(biāo)簽,都是這樣的分布,可見貪心搜索算法在本任務(wù)中有較好的泛化能力。
模型集成:
模型集成的關(guān)鍵主要是在于模型的「好而不同」,即模型效果首先要效果好,還要具有多樣化。我們使用如下方法來(lái)實(shí)現(xiàn):
第一,使用了多種優(yōu)秀的 backbone網(wǎng)絡(luò),包括ResNet、Inception、Xception、DenseNet 等;
第二,針對(duì)每個(gè)模型,在訓(xùn)練過(guò)程中對(duì)參數(shù)、數(shù)據(jù)集進(jìn)行微擾;
第三,我們計(jì)算了所有模型的模型相關(guān)度,篩選掉相關(guān)性大于 90% 的模型。
第四,基于每個(gè)標(biāo)簽獨(dú)立挑選最優(yōu)秀的模型。由于訓(xùn)練過(guò)程中,不同標(biāo)簽到達(dá)最優(yōu)的 epoch 不同,因此我們以標(biāo)簽為單位根據(jù) F2-Score 對(duì)所有模型的所有 epoch 進(jìn)行統(tǒng)一排序,并挑選 Top-N 模型。
集成方法是使用 Stacking + Bagging 進(jìn)行集成。訓(xùn)練階段,首先使用 5-fold validation 訓(xùn)練大量 CNN 模型,并將所有 fold 的預(yù)測(cè)拼接在一起構(gòu)成新的數(shù)據(jù)集輸入到XGBoost 中,同樣使用 5-fold validation 訓(xùn)練 XGBoost。預(yù)測(cè)階段,將圖片輸入 5-fold 的 CNN 網(wǎng)絡(luò),然后再分別輸入到 5-fold 的 XGBoost,最后通過(guò)投票的方式得到最終輸出。
詳細(xì)信息參見:
https://fashion-challenge.github.io/西天取京.pdf
時(shí)尚單品搜索
任務(wù):給定一個(gè)大規(guī)模時(shí)尚單品的電商展示圖集合 S,其中每個(gè)時(shí)尚商品都屬于{上衣, 鞋子,箱包}中的某一類。對(duì)于任意一張時(shí)尚單品的用戶實(shí)拍圖 q,都存在一個(gè)與之相匹配的電商展示圖集合
本賽中,設(shè)定任意的用戶實(shí)拍圖 q 都至少存在一張商品同款圖在S中。參賽算法需把 S 中的電商展示圖依照與 q 的相似度降序排列,提交前10的最相似圖片。
本次比賽的難點(diǎn)主要有兩方面:第一,商品匹配的細(xì)節(jié)化,這意味著兩個(gè)商品圖片是否匹配,其關(guān)鍵點(diǎn)往往取決于某幾個(gè)局部細(xì)節(jié)的異同。第二,商品成像角度的多樣性。任意一件商品都可能從任意一個(gè)角度被呈現(xiàn)出來(lái),這會(huì)導(dǎo)致匹配的商品圖像視覺特征差異很大。
近幾年,隨著深度學(xué)習(xí)的發(fā)展,圖像檢索的研究也隨之被大大推進(jìn)。卷積神經(jīng)網(wǎng)絡(luò)在解決光照、尺度、紋理等問題上面展現(xiàn)出很強(qiáng)的優(yōu)越性。但是對(duì)于本賽事中的商品檢索任務(wù)所面臨的上述兩個(gè)問題,卻仍然是一個(gè)極大的挑戰(zhàn)。在本次比賽中,F(xiàn)ashion_First 團(tuán)隊(duì)提出一種多粒度局部對(duì)齊神經(jīng)網(wǎng)絡(luò),有效解決上述兩個(gè)問題,使得商品檢索的精度有了很大的提高。
此次冠軍方案主要有以下兩個(gè)亮點(diǎn):
第一,構(gòu)建了一個(gè)同時(shí)兼顧多粒度與局部對(duì)齊匹配的神經(jīng)網(wǎng)絡(luò),在保證模型對(duì)全局信息的抓取能力的情況下,大大增強(qiáng)了對(duì)不同局部信息的表達(dá)能力。
第二,團(tuán)隊(duì)創(chuàng)造性地提出環(huán)形池化方法,在幾乎不增加模型參數(shù)和計(jì)算量的情況下,使模型擁有旋轉(zhuǎn)不變性特征的學(xué)習(xí)能力。
網(wǎng)絡(luò)框架
Fashion_First 采用的網(wǎng)絡(luò)是 ResNet101,在訓(xùn)練模型之前,對(duì)檢索庫(kù)的圖片進(jìn)行了預(yù)分類,最后的效果將近 99%,符合使用需求。不同于現(xiàn)在大多數(shù)人使用基于度量 Loss 的網(wǎng)絡(luò),我們依舊把這一個(gè)任務(wù)看成一個(gè)分類問題,既簡(jiǎn)單又高效。
網(wǎng)絡(luò)有四個(gè)分支:全局分支,橫向分支,縱向分支以及環(huán)形分支。
全局分支負(fù)責(zé)學(xué)習(xí)全局特征,以保持模型對(duì)整體信息的抓取能力。橫向分支主要學(xué)習(xí)具有水平方向的平移不變性的特征,為了能夠在不同尺度上學(xué)習(xí)這一特征,模型對(duì)特征圖在水平方向上進(jìn)行不同粒度的切分:一個(gè)均分為兩等分,一個(gè)均分為三等分。最終水平方向會(huì)產(chǎn)生 5 個(gè)局部特征,每個(gè)局部特征都會(huì)經(jīng)過(guò)平均池化和最大值池化以及一個(gè) 1x1 卷積后用于商品分類器的訓(xùn)練。類似地,縱向分支的目的是學(xué)習(xí)具有垂直方向平移不變性的特征。
與上面不同的是環(huán)形分支,其任務(wù)是學(xué)習(xí)具有旋轉(zhuǎn)不變性的特征。與 STN 和可變卷積不同,F(xiàn)ashion_First 團(tuán)隊(duì)提出環(huán)形池化方法,不需要額外參數(shù),即可保持旋轉(zhuǎn)不變性。其具體做法是對(duì)原始特征圖從中心開始,按照不同半徑,提取環(huán)形特征子圖(實(shí)際操作采用方環(huán)形而非圓環(huán)形的方式提?。┻M(jìn)行均值池化和最大值池化,然后相加起來(lái)。這種方式在理論上可以輕松保持 360 度的旋轉(zhuǎn)不變性,并且在試驗(yàn)中也取得了很好的效果。
上述四個(gè)分支構(gòu)成多粒度的局部對(duì)齊神經(jīng)網(wǎng)絡(luò),訓(xùn)練過(guò)程簡(jiǎn)單高效,檢索結(jié)果性能優(yōu)異,取得了本次賽事單品搜索任務(wù)的第一名。
實(shí)現(xiàn)細(xì)節(jié)
此次比賽在參數(shù)的設(shè)定上,整體的 Loss 值使用各個(gè)分支的交叉熵 Loss 的和,輸入圖片的尺寸為 384×384。在訓(xùn)練過(guò)程中,batch size 最初設(shè)置為 64,Adam 優(yōu)化器的初始學(xué)習(xí)率設(shè)置為 0.06,在 20 個(gè) epoch 的時(shí)候衰減到 0.012,大概在 55-60 epoch,可以得到收斂。
以下是實(shí)驗(yàn)結(jié)果,可以看到水平、垂直和環(huán)形三種方式的對(duì)比,環(huán)形相較另外兩種方式能得到很大的提升,另外不同的主干網(wǎng)絡(luò)得到的結(jié)果也有著較大的差異。
比賽的最后階段主要進(jìn)行的是模型融合,相似網(wǎng)絡(luò)結(jié)構(gòu)的模型融合的提升效果一般。主要融合的模型有四個(gè) Resnet101, Resnet152, Resnext101 和 Densenet169,最后得到的 mAP 為 0.55886,與單模型相比有著 2 個(gè)點(diǎn)的提升。
詳細(xì)信息可以參見:
https://fashion-challenge.github.io/fashion_first.pdf
比賽更多信息:
https://fashion-challenge.github.io/#index
雷鋒網(wǎng)雷鋒網(wǎng)
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。