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