關紫微,呂 釗,滕金保
(1.西安工程大學 服裝與藝術設計學院, 陜西 西安 710048; 2.西安郵電大學 計算機學院, 陜西 西安 710121)
隨著電子商務的發展,人們網購商品的行為變得越來越普遍,尤其是服裝行業,其電子商務的銷售額占比越來越大。目前,購物網站進行商品搜索多采用輸入關鍵字,而網站能快速定位同類型商品服飾的前提是將相應的服裝進行識別和精準分類,因此服飾類別的分類具有很高的商業價值,有助于商品的快速定位。
傳統的服裝分類算法多基于深度學習模型[1],Zhou等[2]提出一種新的MultiXMNet方法進行服裝圖像分類,該方法主要由2個卷積神經網絡(Convolutional Neural Networks, CNN)分支組成,一個分支通過改進異常網絡設計的Multi_X從整個表情圖像中提取多尺度特征,另一個分支通過MobileNetV3網絡從整個圖像中提取注意機制特征;在進行分類之前,對多尺度和注意機制特征進行聚合;在訓練階段,使用全局平均池化、卷積層和Softmax分類器代替全連接層對最終特征進行分類,加快了模型的訓練,并緩解了因參數過多而導致的過度擬合問題。Yu等[3]提出基于CNN的服飾分類模型,設計了2種具有不同卷積層和池化層的CNN,并使用Fashion-MNIST數據集進行訓練和測試,實驗結果表明CNN是一種有效的服裝分類方法,可以獲得更高的分類精度,但會增加計算成本。陳巧紅等[4]提出多尺度SE-Xception服裝圖像分類,采用多尺度的深度可分離卷積來提升模型特征信息的豐富度,并嵌入SE-Net模塊增強有用特征通道,減弱無用特征通道,模型在2種噪聲程度不同的服裝數據集中均取得不錯表現。以上基于傳統深度學習的服裝分類模型雖然有著各自的優勢,并在公開數據集上的實驗結果表現很好的分類效果,但沒有考慮到數據集中其他樣本的實例信息,因此分類效果有待提升。
針對以上分析,本文提出基于最近鄰注意力(KNN-Attention)與卷積神經網絡(CNN)的服裝分類模型(KAMC),模型訓練時通過引入KNN-Attention獲取數據集中實例樣本的服裝信息,同時采用CNN進一步提取服裝的關鍵特征,并進一步進行池化操作,最后將KNN-Attention的輸出信息與CNN的輸出信息進行融合,使模型提取的服裝信息更加全面,達到提升分類效果的目的。
本文提出的KAMC模型主要包含CNN層與KNN-Attention層,其總體架構如圖1所示。
CNN作為最常用的深度學習模型之一,在圖像處理領域表現優異[5]。CNN具有較強的特征提取能力,通過設置不同大小的卷積核可以有效地提取圖像潛在的深層信息,然后通過池化層對輸入的特征圖進一步壓縮,縮減特征圖,簡化網絡計算復雜度,最后由全連接層連接所有的特征,將輸出值送給分類器,輸入到系統中的服飾信息經過卷積池化后得到CNN的輸出向量X°。CNN結構如圖2所示。

圖2 CNN結構圖Fig.2 CNN structure diagram
KNN[6]是傳統的機器學習算法之一,其核心思想是如果一個樣本在特征空間中的K個最相鄰的樣本中的大多數屬于某一個類別,則該樣本也屬于這個類別,并具有這個類別上樣本的特性。該方法在確定分類決策上只依據最鄰近的一個或者幾個樣本的類別來決定待分樣本所屬的類別,該算法思想簡單且高效,在實際應用中較為廣泛,樣本之間的距離多采用歐式距離進行計算。從圖1可以看出,KNN-Attention層由KNN和Attention構成,具體又包含K相似圖像、標簽、圖像的相似度、加權標簽、加權圖像向量部分,其中“K相似圖像”代表與當前服裝圖像前K個相似的服裝,“標簽”對應該前K個服裝圖像的標簽,“圖像的相似度”代表該K個服裝圖像與原服裝的相似度,“加權標簽”意味著加權值的大小與相似度成正相關。
假設整個訓練集數據樣本為X={X1,X2,…,Xn},其對應的數據集樣本的標簽為Y={y1,y2,…,yn},則相應的距離計算公式為:
(1)
式中:Xi為當前的預測樣本;Xj為訓練集數據樣本X中的第j個服裝樣本;Xit和Xjt分別為當前預測樣本和第j個服裝的第t維向量;n為樣本的維數。
采用歐式距離計算公式計算預測服裝和整個服裝數據集之間的相似度,得到整個數據集中最臨近的前K個相似服裝集{X1,X2,…,XK},其對應的相似服裝集的標簽為{y1,y2,…,yK}。使用式(2)(3)進行相似度計算得到前K個相似樣本:
Si=sim(X,Xi)
(2)
S={S1,S2,…,SK}
(3)
式中:i∈{1,2,…,K};Si為進行相似度計算得到的相似度分值;S為數據集前K個序列的注意力權重,對得到的服裝數據集前K個相似服裝的輸出標簽和輸出向量使用S進行加權。
對服裝數據集中前K個相似樣本的輸出標簽進行加權的公式為:
(4)
式中:Sp表示注意力權重;yp表示第p個輸出標簽值;p∈{1,2,…,K}。
對服裝數據集中前K個相似樣本的輸出向量進行加權的公式為:
(5)
式中:Xp表示第p個實例樣本。
數據集中的實例樣本經過計算后得到加權后的輸出標簽y^和實例樣本向量X^,將CNN的輸出向量X°與X^進行融合得到Xθ,更好地表達服裝圖像最真實的信息,然后將融合后的Xθ輸入到Softmax層進行分類。
訓練環節采用Adam[7]優化器更新權重,重新定義交叉熵損失函數為:
(6)

實驗在Ubuntu18.04系統上進行,具體實驗環境如表1所示。

表1 實驗環境Tab.1 Experimental environment
實驗數據集為公開的Deep Fashion2[8]和Fashion AI[9]數據集中的服裝數據集,Deep Fashion2是一個包含801 000張圖像的大型服裝數據集,該數據集來源于購物網站和Deep Fashion的收集,共包含13個類別,分別為Short sleeve top(短袖上衣)、Long sleeve top(長袖上衣)、Short sleeve outswear(短袖外套)、Vest(背心)、Sling(吊帶)、Short(短褲)、Trousers(長褲)、Skirt(半身裙)、Short sleeve dress(短袖連衣裙)、Long sleeve dress(長袖連衣裙)和Sling dress(吊帶裙),取Deep Fashion2數據集中Short sleeve top(短袖上衣)、Long sleeve top(長袖上衣)、Short sleeve outswear(短袖外套)、Vest(背心)4種類別進行標記和實驗。Fashion AI包含8種屬性維度共計114 805張圖像,取其中上身視角中的領子設計屬性維度進行實驗,該屬性下對應4種類別,分別是娃娃領、清道夫領、襯衫領、飛行員領,對4種類別分別進行標記,然后進行對比實驗。所有的數據集按照5∶3∶1的比例分別作為訓練集、驗證集和測試集,然后輸入到模型中進行學習。
模型的參數設置對最終結果有較大的影響[10],為了使模型達到最優分類效果,在模型進行訓練時對其涉及的主要參數進行動態調節。模型的參數設置主要分為模型參數和訓練參數2個部分。
2.2.1 模型參數
提出的KAMC模型主要由CNN層和KNN-Attention層組成,對不同層的參數設置如下:
①CNN層的核心參數主要是卷積核的大小,卷積核的大小不同可能會對實驗結果造成不同的影響,因此后續章節將進一步討論CNN卷積核大小的設置,對比實驗中卷積核大小設置為(3,4,5),Drop_out值設置為0.5,隨機失活50%的神經單元。
②KNN-Attention層核心參數為K值的大小,KAMC模型中K的取值相較于其他參數對最終的結果產生的影響較大,因此后續章節將著重分析K的不同取值對實驗結果造成的影響,對比實驗中設置K的默認值為8。
2.2.2 訓練參數
訓練參數主要包括激活函數、批處理的大小(批大小)、優化器、學習率等[11],訓練參數設置如下:
①激活函數通過為模型增加非線性能力使得模型可以更好地學習更深層次的信息,因此為模型選擇合適的激活函數是非常有必要的,KAMC模型的激活函數設置為ReLU。
②批大小會對梯度下降的方向產生較大的影響,過大的批處理會導致泛化能力差,過小的批處理會導致KAMC模型的收斂速度慢,實驗批大小設置為256。
③合適的優化器可以讓KAMC模型在訓練時找到模型的最優解,增強模型的效果,KAMC模型對比實驗采用的優化器為Adam。
④學習率的設置對最終的結果影響較大,過大的學習率會出現損失值震蕩,過小的學習率會導致模型收斂速度慢,發生過擬合現象,KAMC模型的學習率設置為0.001。
采用準確率(Acc)、精確率(Pre)、召回率(Rec)、精準率和召回率的調合平均數(F1)作為評價指標,混淆矩陣如表2所示。

表2 混淆矩陣Tab.2 Confusion matrix
表2中行和列分別表示分類前樣本的實際類別及分類后對樣本的預測類別,具體計算公式見式(7)~(10):
(7)
(8)
(9)
(10)
為驗證KAMC模型的性能,在相同條件下與以下基準模型進行對比:
①AlexNet[12]由8個網絡層組成,包括前5個卷積層和后3個全連接層,并在每個卷積層和全連接層之后使用ReLU非線性激活函數,然后輸入到分類器中進行分類。
②CNN-Attention[13]由CNN和Attention組成,模型先用CNN提取圖像信息,然后使用Attention進一步將模型的注意力集中在對分類結果影響較大的像素點上,經過Attention加權后輸入到分類器中進行分類。
③KNN[14]K值設置為8,通過歐式距離計算公式計算預測樣本和其他樣本的距離,通過前8個樣本投票表決該樣本的分類結果。
④Agrawal[15]使用2種新穎的CNN架構,一種架構的過濾器數量隨著網絡深度的增加保持不變,而另一種架構的過濾器數量隨著深度的增加而減少,2種架構全部采用大小為8的卷積核。
KAMC模型和以上基準模型在公開數據集上的實驗結果如表3~6所示。其中,表3為模型在Deep Fashion2數據集上的總體效果,表4為模型在DeepFashion2數據集上識別不同服裝類別的準確率,表5為模型在Fashion AI數據集上的總體效果,表6為模型在Fashion AI數據集上對領子設計屬性識別的準確率。

表3 Deep Fashion2總體實驗結果對比Tab.3 Comparison of overall experimental results of Deep Fashion2 %

表4 Deep Fashion2不同服裝類別Acc實驗結果對比Tab.4 Comparison of experimental results of Acc of different clothing categories in Deep Fashion2 %

表5 Fashion AI總體實驗結果對比Tab.5 Comparison of overall experimental results of Fashion AI %

表6 Fashion AI不同領子設計Acc實驗結果對比Tab.6 Comparison of experimental results of different collar design Acc of Fashion AI %
由表3~6可以看出,KAMC模型在2個數據集上的分類效果最好,KAMC模型在Deep Fashion2和Fashion AI上的準確率相較于AlexNet模型性能分別提升了3.43%、3.90%,相較于CNN-Attention模型性能分別提升了2.06%、2.21%,相較于Agrawal提出的模型性能分別提升了2.02%、1.76%。AlexNet模型、CNN-Attention模型和Agrawal提出的模型進行圖像特征提取時通過其改進的CNN可以更有效地提取當前樣本的深層信息,但沒有有效地利用訓練集數據中其他樣本的實例信息,因此提取的特征是不全面的,而KAMC模型不僅可以提取當前樣本的信息,在此之上通過引入KNN-Attention使得在數據集中實例樣本的信息也得到了充分的使用,因此提取的特征更全面,更能代表最真實的圖像信息,因此分類效果也更好。KAMC模型相較于KNN模型在Deep Fashion2和Fashion AI上的準確率分別提升了13.4%、11.87%,這是因為KNN模型進行分類時只關注與當前樣本相似的其他樣本的信息,沒有考慮到當前樣本潛在的深層信息,而提出的KAMC模型在此基礎上引入Attention使得提取相似樣本的信息更有優勢,除此之外還引入了CNN,彌補了對當前樣本信息提取的不足,因此分類效果也更好。
同時還可以看出,KAMC模型在精確率、召回率、F1值上的性能提升也很大,相較于AlexNet模型,KAMC模型在Deep Fashion2數據集上精確率、召回率、F1值上分別提升了4.08%、3.81%、5.04%,KAMC模型在Fashion AI數據集上精確率、召回率、F1值上分別提升了2.24%、2.83%、2.90%;相較于CNN-Attention模型,KAMC模型在Deep Fashion2數據集上精確率、召回率、F1值分別提升了2.02%、2.60%、2.63%,在Fashion AI數據集上精確率、召回率、F1值分別提升了9.24%、2.83%、2.90%;相較于KNN模型,KAMC模型在Deep Fashion2數據集上精確率、召回率、F1值分別提升了13.64%、13.71%、13.90%,在Fashion AI數據集上精確率、召回率、F1值分別提升了12.10%、13.70%、12.27%;相較于Agrawal提出的模型,KAMC模型在Deep Fashion2數據集上精確率、召回率、F1值分別提升了3.26%、2.81%、3.49%,在Fashion AI數據集上精確率、召回率、F1值分別提升了1.24%、2.54%、2.38%,以上實驗結果充分顯示了KAMC模型的優勢。
模型訓練所耗費的時間是評價模型的另一個重要指標,因此在以上對比實驗的基礎上進行模型訓練時所花費時間的實驗,實驗結果如表7所示。

表7 訓練時間實驗結果Tab.7 Experimental results of training time min
訓練時間實驗是在單機下進行的,系統為 Ubuntu Server 18.04 LTS,GPU為Ampere A100 77 40GB,CPU 為 Intel(R) Xeon(R) Gold 5218,采用 CUDA10.1加速計算。從表7可以看出,KAMC模型訓練時間與對比模型所消耗的時間接近,在可接收訓練時間范圍內提高了模型的分類效果。
參數設置不同會對最終的分類效果產生不同的影響。為進一步探究最符合KAMC模型的參數設置以提升模型性能,對CNN卷積核大小、KNN-Attention層的K值進行詳細分析。將卷積核大小分別設置為3、4、5、(3,4)、(3,5)、(4,5)、(3,4,5),K值固定為8,在Deep Fashion2數據集上進行實驗,實驗結果如表8所示。

表8 卷積核大小對實驗結果的影響Tab.8 Effect of convolution kernel size on experimental results %
由表8可以看出,當卷積核大小設置為(3,4,5)時,KAMC模型在公開數據集上的表現最優,與單個最優卷積核為5時相比性能提升了2.09%,這是因為多尺寸卷積核可以提取更多的服裝信息,對結果起到了促進作用,因此由多尺寸卷積核組成的模型要比單一尺寸卷積核組成的模型效果好,模型的卷積核大小設置為(3,4,5)。
為驗證K值設置的大小對實驗結果的影響,設置K值的取值范圍為1~20,固定卷積核大小設置為(3,4,5),在Deep Fashion2數據集上進行實驗,實驗結果如圖3所示。當K值等于0時模型預測性能較低,此時KNN-Attention層不發揮作用,模型退化為CNN模型,KAMC模型的準確率為87.92%。當K值從0逐漸增大時,可以看出KAMC模型的預測性能逐漸提升,此時KAMC模型由于結合了KNN-Attention,相較于CNN模型可以更有效地提取預測樣本的實例信息,因此性能更好。當K值設置為8~10時模型的表現最好,準確率為93.36%。從圖3還可以看出,K值的不同設置對最終結果會造成不同的影響,當K值從0在一定的范圍內增大時KAMC模型的預測性能也逐漸提升,但當K值的設置超過閾值時,模型的預測性能開始降低。這是因為K值的設置超過閾值時會引入過多對結果影響不大的相似服裝,從而出現特征冗余的問題,影響KAMC模型的分類性能,因此K值的設置要適中,KAMC模型的對比實驗中的最佳K值應設置在8~10,使KAMC模型的預測性能達到最大值。

圖3 K值對實驗結果的影響Fig.3 Influence of K value on the experimental results
消融實驗可以進一步檢驗KAMC模型的性能,以便更好地理解神經網絡的學習行為,因此對所提模型進行消融實驗。分解KAMC模型,設置為KNN模型、KNN-Attention模型和CNN模型,在相同的實驗環境下進行對比實驗,結果如表9、10所示。

表9 Deep Fashion2消融實驗結果Tab.9 Ablation experiment results of Deep Fashion2 %

表10 Fashion AI消融實驗結果
從表9、10可以看出,KNN-Attention在2個公開數據集中的實驗效果優于單一的KNN模型,這是因為單一的KNN模型進行分類任務時無法有效區分不同的實例信息對最終結果造成的不同影響,認為提取的K個實例樣本發揮同等作用,而通過Attention計算后可以看出提取的K個實例樣本與原樣本的近似程度不同,因而對最終結果造成的影響也不同,與原樣本更近似的樣本應該發揮更大的作用,因而權重也更大。CNN模型的分類效果優于KNN模型和KNN-Attention,這是因為CNN特有的網絡結構可以學習到服裝圖像更深層次的信息,而KNN模型和KNN-Attention進行分類時只采用了類比投票的方式,沒有考慮到當前樣本潛在的特征,因此CNN模型的分類效果更好。從表9、10可以看出,KAMC模型的分類效果最好,這是因為進行分類任務時KAMC模型不僅可以通過CNN模型提取服裝局部關鍵特征,還引入了KNN-Attention模型,使得KAMC模型在提取訓練集實例信息上更有優勢,因此KAMC模型的表現最優。
為了解決傳統服裝分類模型進行分類時無法有效提取訓練集中其他樣本的實例信息的問題,提出基于最近鄰注意力(KNN-Attention)與卷積神經網絡(CNN)的服裝分類模型(KAMC)。通過引入KNN-Attention使得模型在提取數據集其他相似樣本信息上更有優勢,有效地解決了特征提取不全的問題。當卷積核大小為(3,4,5),K值為8時,KAMC模型在Deep Fashion2和Fashion AI上的準確率分別為92.29%和92.13%。通過與其他模型的對比實驗進一步驗證KAMC模型的優勢,可以有效提升服裝分類效果。