關(guān)紫微,呂 釗,滕金保
(1.西安工程大學(xué) 服裝與藝術(shù)設(shè)計學(xué)院, 陜西 西安 710048; 2.西安郵電大學(xué) 計算機學(xué)院, 陜西 西安 710121)
隨著電子商務(wù)的發(fā)展,人們網(wǎng)購商品的行為變得越來越普遍,尤其是服裝行業(yè),其電子商務(wù)的銷售額占比越來越大。目前,購物網(wǎng)站進行商品搜索多采用輸入關(guān)鍵字,而網(wǎng)站能快速定位同類型商品服飾的前提是將相應(yīng)的服裝進行識別和精準分類,因此服飾類別的分類具有很高的商業(yè)價值,有助于商品的快速定位。
傳統(tǒng)的服裝分類算法多基于深度學(xué)習(xí)模型[1],Zhou等[2]提出一種新的MultiXMNet方法進行服裝圖像分類,該方法主要由2個卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNN)分支組成,一個分支通過改進異常網(wǎng)絡(luò)設(shè)計的Multi_X從整個表情圖像中提取多尺度特征,另一個分支通過MobileNetV3網(wǎng)絡(luò)從整個圖像中提取注意機制特征;在進行分類之前,對多尺度和注意機制特征進行聚合;在訓(xùn)練階段,使用全局平均池化、卷積層和Softmax分類器代替全連接層對最終特征進行分類,加快了模型的訓(xùn)練,并緩解了因參數(shù)過多而導(dǎo)致的過度擬合問題。Yu等[3]提出基于CNN的服飾分類模型,設(shè)計了2種具有不同卷積層和池化層的CNN,并使用Fashion-MNIST數(shù)據(jù)集進行訓(xùn)練和測試,實驗結(jié)果表明CNN是一種有效的服裝分類方法,可以獲得更高的分類精度,但會增加計算成本。陳巧紅等[4]提出多尺度SE-Xception服裝圖像分類,采用多尺度的深度可分離卷積來提升模型特征信息的豐富度,并嵌入SE-Net模塊增強有用特征通道,減弱無用特征通道,模型在2種噪聲程度不同的服裝數(shù)據(jù)集中均取得不錯表現(xiàn)。以上基于傳統(tǒng)深度學(xué)習(xí)的服裝分類模型雖然有著各自的優(yōu)勢,并在公開數(shù)據(jù)集上的實驗結(jié)果表現(xiàn)很好的分類效果,但沒有考慮到數(shù)據(jù)集中其他樣本的實例信息,因此分類效果有待提升。
針對以上分析,本文提出基于最近鄰注意力(KNN-Attention)與卷積神經(jīng)網(wǎng)絡(luò)(CNN)的服裝分類模型(KAMC),模型訓(xùn)練時通過引入KNN-Attention獲取數(shù)據(jù)集中實例樣本的服裝信息,同時采用CNN進一步提取服裝的關(guān)鍵特征,并進一步進行池化操作,最后將KNN-Attention的輸出信息與CNN的輸出信息進行融合,使模型提取的服裝信息更加全面,達到提升分類效果的目的。
本文提出的KAMC模型主要包含CNN層與KNN-Attention層,其總體架構(gòu)如圖1所示。
CNN作為最常用的深度學(xué)習(xí)模型之一,在圖像處理領(lǐng)域表現(xiàn)優(yōu)異[5]。CNN具有較強的特征提取能力,通過設(shè)置不同大小的卷積核可以有效地提取圖像潛在的深層信息,然后通過池化層對輸入的特征圖進一步壓縮,縮減特征圖,簡化網(wǎng)絡(luò)計算復(fù)雜度,最后由全連接層連接所有的特征,將輸出值送給分類器,輸入到系統(tǒng)中的服飾信息經(jīng)過卷積池化后得到CNN的輸出向量X°。CNN結(jié)構(gòu)如圖2所示。
圖2 CNN結(jié)構(gòu)圖Fig.2 CNN structure diagram
KNN[6]是傳統(tǒng)的機器學(xué)習(xí)算法之一,其核心思想是如果一個樣本在特征空間中的K個最相鄰的樣本中的大多數(shù)屬于某一個類別,則該樣本也屬于這個類別,并具有這個類別上樣本的特性。該方法在確定分類決策上只依據(jù)最鄰近的一個或者幾個樣本的類別來決定待分樣本所屬的類別,該算法思想簡單且高效,在實際應(yīng)用中較為廣泛,樣本之間的距離多采用歐式距離進行計算。從圖1可以看出,KNN-Attention層由KNN和Attention構(gòu)成,具體又包含K相似圖像、標簽、圖像的相似度、加權(quán)標簽、加權(quán)圖像向量部分,其中“K相似圖像”代表與當(dāng)前服裝圖像前K個相似的服裝,“標簽”對應(yīng)該前K個服裝圖像的標簽,“圖像的相似度”代表該K個服裝圖像與原服裝的相似度,“加權(quán)標簽”意味著加權(quán)值的大小與相似度成正相關(guān)。
假設(shè)整個訓(xùn)練集數(shù)據(jù)樣本為X={X1,X2,…,Xn},其對應(yīng)的數(shù)據(jù)集樣本的標簽為Y={y1,y2,…,yn},則相應(yīng)的距離計算公式為:
(1)
式中:Xi為當(dāng)前的預(yù)測樣本;Xj為訓(xùn)練集數(shù)據(jù)樣本X中的第j個服裝樣本;Xit和Xjt分別為當(dāng)前預(yù)測樣本和第j個服裝的第t維向量;n為樣本的維數(shù)。
采用歐式距離計算公式計算預(yù)測服裝和整個服裝數(shù)據(jù)集之間的相似度,得到整個數(shù)據(jù)集中最臨近的前K個相似服裝集{X1,X2,…,XK},其對應(yīng)的相似服裝集的標簽為{y1,y2,…,yK}。使用式(2)(3)進行相似度計算得到前K個相似樣本:
Si=sim(X,Xi)
(2)
S={S1,S2,…,SK}
(3)
式中:i∈{1,2,…,K};Si為進行相似度計算得到的相似度分值;S為數(shù)據(jù)集前K個序列的注意力權(quán)重,對得到的服裝數(shù)據(jù)集前K個相似服裝的輸出標簽和輸出向量使用S進行加權(quán)。
對服裝數(shù)據(jù)集中前K個相似樣本的輸出標簽進行加權(quán)的公式為:
(4)
式中:Sp表示注意力權(quán)重;yp表示第p個輸出標簽值;p∈{1,2,…,K}。
對服裝數(shù)據(jù)集中前K個相似樣本的輸出向量進行加權(quán)的公式為:
(5)
式中:Xp表示第p個實例樣本。
數(shù)據(jù)集中的實例樣本經(jīng)過計算后得到加權(quán)后的輸出標簽y^和實例樣本向量X^,將CNN的輸出向量X°與X^進行融合得到Xθ,更好地表達服裝圖像最真實的信息,然后將融合后的Xθ輸入到Softmax層進行分類。
訓(xùn)練環(huán)節(jié)采用Adam[7]優(yōu)化器更新權(quán)重,重新定義交叉熵損失函數(shù)為:
(6)
實驗在Ubuntu18.04系統(tǒng)上進行,具體實驗環(huán)境如表1所示。
表1 實驗環(huán)境Tab.1 Experimental environment
實驗數(shù)據(jù)集為公開的Deep Fashion2[8]和Fashion AI[9]數(shù)據(jù)集中的服裝數(shù)據(jù)集,Deep Fashion2是一個包含801 000張圖像的大型服裝數(shù)據(jù)集,該數(shù)據(jù)集來源于購物網(wǎng)站和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數(shù)據(jù)集中Short sleeve top(短袖上衣)、Long sleeve top(長袖上衣)、Short sleeve outswear(短袖外套)、Vest(背心)4種類別進行標記和實驗。Fashion AI包含8種屬性維度共計114 805張圖像,取其中上身視角中的領(lǐng)子設(shè)計屬性維度進行實驗,該屬性下對應(yīng)4種類別,分別是娃娃領(lǐng)、清道夫領(lǐng)、襯衫領(lǐng)、飛行員領(lǐng),對4種類別分別進行標記,然后進行對比實驗。所有的數(shù)據(jù)集按照5∶3∶1的比例分別作為訓(xùn)練集、驗證集和測試集,然后輸入到模型中進行學(xué)習(xí)。
模型的參數(shù)設(shè)置對最終結(jié)果有較大的影響[10],為了使模型達到最優(yōu)分類效果,在模型進行訓(xùn)練時對其涉及的主要參數(shù)進行動態(tài)調(diào)節(jié)。模型的參數(shù)設(shè)置主要分為模型參數(shù)和訓(xùn)練參數(shù)2個部分。
2.2.1 模型參數(shù)
提出的KAMC模型主要由CNN層和KNN-Attention層組成,對不同層的參數(shù)設(shè)置如下:
①CNN層的核心參數(shù)主要是卷積核的大小,卷積核的大小不同可能會對實驗結(jié)果造成不同的影響,因此后續(xù)章節(jié)將進一步討論CNN卷積核大小的設(shè)置,對比實驗中卷積核大小設(shè)置為(3,4,5),Drop_out值設(shè)置為0.5,隨機失活50%的神經(jīng)單元。
②KNN-Attention層核心參數(shù)為K值的大小,KAMC模型中K的取值相較于其他參數(shù)對最終的結(jié)果產(chǎn)生的影響較大,因此后續(xù)章節(jié)將著重分析K的不同取值對實驗結(jié)果造成的影響,對比實驗中設(shè)置K的默認值為8。
2.2.2 訓(xùn)練參數(shù)
訓(xùn)練參數(shù)主要包括激活函數(shù)、批處理的大小(批大小)、優(yōu)化器、學(xué)習(xí)率等[11],訓(xùn)練參數(shù)設(shè)置如下:
①激活函數(shù)通過為模型增加非線性能力使得模型可以更好地學(xué)習(xí)更深層次的信息,因此為模型選擇合適的激活函數(shù)是非常有必要的,KAMC模型的激活函數(shù)設(shè)置為ReLU。
②批大小會對梯度下降的方向產(chǎn)生較大的影響,過大的批處理會導(dǎo)致泛化能力差,過小的批處理會導(dǎo)致KAMC模型的收斂速度慢,實驗批大小設(shè)置為256。
③合適的優(yōu)化器可以讓KAMC模型在訓(xùn)練時找到模型的最優(yōu)解,增強模型的效果,KAMC模型對比實驗采用的優(yōu)化器為Adam。
④學(xué)習(xí)率的設(shè)置對最終的結(jié)果影響較大,過大的學(xué)習(xí)率會出現(xiàn)損失值震蕩,過小的學(xué)習(xí)率會導(dǎo)致模型收斂速度慢,發(fā)生過擬合現(xiàn)象,KAMC模型的學(xué)習(xí)率設(shè)置為0.001。
采用準確率(Acc)、精確率(Pre)、召回率(Rec)、精準率和召回率的調(diào)合平均數(shù)(F1)作為評價指標,混淆矩陣如表2所示。
表2 混淆矩陣Tab.2 Confusion matrix
表2中行和列分別表示分類前樣本的實際類別及分類后對樣本的預(yù)測類別,具體計算公式見式(7)~(10):
(7)
(8)
(9)
(10)
為驗證KAMC模型的性能,在相同條件下與以下基準模型進行對比:
①AlexNet[12]由8個網(wǎng)絡(luò)層組成,包括前5個卷積層和后3個全連接層,并在每個卷積層和全連接層之后使用ReLU非線性激活函數(shù),然后輸入到分類器中進行分類。
②CNN-Attention[13]由CNN和Attention組成,模型先用CNN提取圖像信息,然后使用Attention進一步將模型的注意力集中在對分類結(jié)果影響較大的像素點上,經(jīng)過Attention加權(quán)后輸入到分類器中進行分類。
③KNN[14]K值設(shè)置為8,通過歐式距離計算公式計算預(yù)測樣本和其他樣本的距離,通過前8個樣本投票表決該樣本的分類結(jié)果。
④Agrawal[15]使用2種新穎的CNN架構(gòu),一種架構(gòu)的過濾器數(shù)量隨著網(wǎng)絡(luò)深度的增加保持不變,而另一種架構(gòu)的過濾器數(shù)量隨著深度的增加而減少,2種架構(gòu)全部采用大小為8的卷積核。
KAMC模型和以上基準模型在公開數(shù)據(jù)集上的實驗結(jié)果如表3~6所示。其中,表3為模型在Deep Fashion2數(shù)據(jù)集上的總體效果,表4為模型在DeepFashion2數(shù)據(jù)集上識別不同服裝類別的準確率,表5為模型在Fashion AI數(shù)據(jù)集上的總體效果,表6為模型在Fashion AI數(shù)據(jù)集上對領(lǐng)子設(shè)計屬性識別的準確率。
表3 Deep Fashion2總體實驗結(jié)果對比Tab.3 Comparison of overall experimental results of Deep Fashion2 %
表4 Deep Fashion2不同服裝類別Acc實驗結(jié)果對比Tab.4 Comparison of experimental results of Acc of different clothing categories in Deep Fashion2 %
表5 Fashion AI總體實驗結(jié)果對比Tab.5 Comparison of overall experimental results of Fashion AI %
表6 Fashion AI不同領(lǐng)子設(shè)計Acc實驗結(jié)果對比Tab.6 Comparison of experimental results of different collar design Acc of Fashion AI %
由表3~6可以看出,KAMC模型在2個數(shù)據(jù)集上的分類效果最好,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可以更有效地提取當(dāng)前樣本的深層信息,但沒有有效地利用訓(xùn)練集數(shù)據(jù)中其他樣本的實例信息,因此提取的特征是不全面的,而KAMC模型不僅可以提取當(dāng)前樣本的信息,在此之上通過引入KNN-Attention使得在數(shù)據(jù)集中實例樣本的信息也得到了充分的使用,因此提取的特征更全面,更能代表最真實的圖像信息,因此分類效果也更好。KAMC模型相較于KNN模型在Deep Fashion2和Fashion AI上的準確率分別提升了13.4%、11.87%,這是因為KNN模型進行分類時只關(guān)注與當(dāng)前樣本相似的其他樣本的信息,沒有考慮到當(dāng)前樣本潛在的深層信息,而提出的KAMC模型在此基礎(chǔ)上引入Attention使得提取相似樣本的信息更有優(yōu)勢,除此之外還引入了CNN,彌補了對當(dāng)前樣本信息提取的不足,因此分類效果也更好。
同時還可以看出,KAMC模型在精確率、召回率、F1值上的性能提升也很大,相較于AlexNet模型,KAMC模型在Deep Fashion2數(shù)據(jù)集上精確率、召回率、F1值上分別提升了4.08%、3.81%、5.04%,KAMC模型在Fashion AI數(shù)據(jù)集上精確率、召回率、F1值上分別提升了2.24%、2.83%、2.90%;相較于CNN-Attention模型,KAMC模型在Deep Fashion2數(shù)據(jù)集上精確率、召回率、F1值分別提升了2.02%、2.60%、2.63%,在Fashion AI數(shù)據(jù)集上精確率、召回率、F1值分別提升了9.24%、2.83%、2.90%;相較于KNN模型,KAMC模型在Deep Fashion2數(shù)據(jù)集上精確率、召回率、F1值分別提升了13.64%、13.71%、13.90%,在Fashion AI數(shù)據(jù)集上精確率、召回率、F1值分別提升了12.10%、13.70%、12.27%;相較于Agrawal提出的模型,KAMC模型在Deep Fashion2數(shù)據(jù)集上精確率、召回率、F1值分別提升了3.26%、2.81%、3.49%,在Fashion AI數(shù)據(jù)集上精確率、召回率、F1值分別提升了1.24%、2.54%、2.38%,以上實驗結(jié)果充分顯示了KAMC模型的優(yōu)勢。
模型訓(xùn)練所耗費的時間是評價模型的另一個重要指標,因此在以上對比實驗的基礎(chǔ)上進行模型訓(xùn)練時所花費時間的實驗,實驗結(jié)果如表7所示。
表7 訓(xùn)練時間實驗結(jié)果Tab.7 Experimental results of training time min
訓(xùn)練時間實驗是在單機下進行的,系統(tǒng)為 Ubuntu Server 18.04 LTS,GPU為Ampere A100 77 40GB,CPU 為 Intel(R) Xeon(R) Gold 5218,采用 CUDA10.1加速計算。從表7可以看出,KAMC模型訓(xùn)練時間與對比模型所消耗的時間接近,在可接收訓(xùn)練時間范圍內(nèi)提高了模型的分類效果。
參數(shù)設(shè)置不同會對最終的分類效果產(chǎn)生不同的影響。為進一步探究最符合KAMC模型的參數(shù)設(shè)置以提升模型性能,對CNN卷積核大小、KNN-Attention層的K值進行詳細分析。將卷積核大小分別設(shè)置為3、4、5、(3,4)、(3,5)、(4,5)、(3,4,5),K值固定為8,在Deep Fashion2數(shù)據(jù)集上進行實驗,實驗結(jié)果如表8所示。
表8 卷積核大小對實驗結(jié)果的影響Tab.8 Effect of convolution kernel size on experimental results %
由表8可以看出,當(dāng)卷積核大小設(shè)置為(3,4,5)時,KAMC模型在公開數(shù)據(jù)集上的表現(xiàn)最優(yōu),與單個最優(yōu)卷積核為5時相比性能提升了2.09%,這是因為多尺寸卷積核可以提取更多的服裝信息,對結(jié)果起到了促進作用,因此由多尺寸卷積核組成的模型要比單一尺寸卷積核組成的模型效果好,模型的卷積核大小設(shè)置為(3,4,5)。
為驗證K值設(shè)置的大小對實驗結(jié)果的影響,設(shè)置K值的取值范圍為1~20,固定卷積核大小設(shè)置為(3,4,5),在Deep Fashion2數(shù)據(jù)集上進行實驗,實驗結(jié)果如圖3所示。當(dāng)K值等于0時模型預(yù)測性能較低,此時KNN-Attention層不發(fā)揮作用,模型退化為CNN模型,KAMC模型的準確率為87.92%。當(dāng)K值從0逐漸增大時,可以看出KAMC模型的預(yù)測性能逐漸提升,此時KAMC模型由于結(jié)合了KNN-Attention,相較于CNN模型可以更有效地提取預(yù)測樣本的實例信息,因此性能更好。當(dāng)K值設(shè)置為8~10時模型的表現(xiàn)最好,準確率為93.36%。從圖3還可以看出,K值的不同設(shè)置對最終結(jié)果會造成不同的影響,當(dāng)K值從0在一定的范圍內(nèi)增大時KAMC模型的預(yù)測性能也逐漸提升,但當(dāng)K值的設(shè)置超過閾值時,模型的預(yù)測性能開始降低。這是因為K值的設(shè)置超過閾值時會引入過多對結(jié)果影響不大的相似服裝,從而出現(xiàn)特征冗余的問題,影響KAMC模型的分類性能,因此K值的設(shè)置要適中,KAMC模型的對比實驗中的最佳K值應(yīng)設(shè)置在8~10,使KAMC模型的預(yù)測性能達到最大值。
圖3 K值對實驗結(jié)果的影響Fig.3 Influence of K value on the experimental results
消融實驗可以進一步檢驗KAMC模型的性能,以便更好地理解神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)行為,因此對所提模型進行消融實驗。分解KAMC模型,設(shè)置為KNN模型、KNN-Attention模型和CNN模型,在相同的實驗環(huán)境下進行對比實驗,結(jié)果如表9、10所示。
表9 Deep Fashion2消融實驗結(jié)果Tab.9 Ablation experiment results of Deep Fashion2 %
表10 Fashion AI消融實驗結(jié)果
從表9、10可以看出,KNN-Attention在2個公開數(shù)據(jù)集中的實驗效果優(yōu)于單一的KNN模型,這是因為單一的KNN模型進行分類任務(wù)時無法有效區(qū)分不同的實例信息對最終結(jié)果造成的不同影響,認為提取的K個實例樣本發(fā)揮同等作用,而通過Attention計算后可以看出提取的K個實例樣本與原樣本的近似程度不同,因而對最終結(jié)果造成的影響也不同,與原樣本更近似的樣本應(yīng)該發(fā)揮更大的作用,因而權(quán)重也更大。CNN模型的分類效果優(yōu)于KNN模型和KNN-Attention,這是因為CNN特有的網(wǎng)絡(luò)結(jié)構(gòu)可以學(xué)習(xí)到服裝圖像更深層次的信息,而KNN模型和KNN-Attention進行分類時只采用了類比投票的方式,沒有考慮到當(dāng)前樣本潛在的特征,因此CNN模型的分類效果更好。從表9、10可以看出,KAMC模型的分類效果最好,這是因為進行分類任務(wù)時KAMC模型不僅可以通過CNN模型提取服裝局部關(guān)鍵特征,還引入了KNN-Attention模型,使得KAMC模型在提取訓(xùn)練集實例信息上更有優(yōu)勢,因此KAMC模型的表現(xiàn)最優(yōu)。
為了解決傳統(tǒng)服裝分類模型進行分類時無法有效提取訓(xùn)練集中其他樣本的實例信息的問題,提出基于最近鄰注意力(KNN-Attention)與卷積神經(jīng)網(wǎng)絡(luò)(CNN)的服裝分類模型(KAMC)。通過引入KNN-Attention使得模型在提取數(shù)據(jù)集其他相似樣本信息上更有優(yōu)勢,有效地解決了特征提取不全的問題。當(dāng)卷積核大小為(3,4,5),K值為8時,KAMC模型在Deep Fashion2和Fashion AI上的準確率分別為92.29%和92.13%。通過與其他模型的對比實驗進一步驗證KAMC模型的優(yōu)勢,可以有效提升服裝分類效果。