謝小紅 陸建波 李文韜 劉春霞 黃華梅
(南寧師范大學計算機與信息工程學院 廣西 南寧 530299)
隨著互聯(lián)網(wǎng)服裝電子商務迅猛發(fā)展,人們對服裝圖像識別分類技術的要求不斷提高。但由于服裝圖像包含的細粒度分類[1]多,視覺變化大,如形變、光照、拍攝視角、背景影響、鏡頭縮放尺度等,使得人工設計特征越來越難以滿足實際分類的需求。傳統(tǒng)的服裝圖像分類方法是基于文本的,即依據(jù)圖像給予的文本描述進行分類。隨著服裝圖像數(shù)據(jù)量的增加,需要對大量圖片進行人工標注,由于每個人看待圖像的角度不同,則做的圖像標注也會不同,會對服裝圖像分類的精度造成一定的影響[2]。
近年來,深度學習(Deep Learning,DL)[3]已成為當前機器學習領域中的重要發(fā)展方向。使用卷積神經(jīng)網(wǎng)絡CNN[4-5]去解決圖像分類中的問題漸成主流。越來越多的研究者們把深度學習與服裝分類結合,取得了不錯的效果。Liu等[6]收集了一個大規(guī)模且語義標注更全面的服裝數(shù)據(jù)集DeepFashion,提出了FashionNet,對服裝的類別、屬性、ID以及關鍵點做監(jiān)督進行服裝特征學習。Wang等[7]采用標注感知注意力和分類驅動注意力并引入雙向卷積遞歸神經(jīng)網(wǎng)絡(BCRNNs)來建模,使網(wǎng)絡可以進行端到端的訓練,實現(xiàn)了最先進的時尚圖像分類和地標檢測性能。Ge等[8]提出了一種基于掩碼R-CNN的新型匹配R-CNN框架以端到端的方式解決了服裝檢測、姿態(tài)估計、分割和檢索等問題。Krizhevsky等[9]提出的AlexNet在2012 ImageNet LSVRC比賽中,獲得深度神經(jīng)網(wǎng)絡模型的分類效果第一。GoogLeNet[10]、VGGNet[11]、ResNet[12]等深度卷積神經(jīng)網(wǎng)絡模型不斷涌現(xiàn),越來越多的學者將這些模型用于具體的圖像識別任務中。
傳統(tǒng)的CNN模型在處理圖像分類時存在如下問題:CNN模型需要數(shù)百萬個參數(shù)來達到訓練效果,需要大量時間訓練,訓練時也需要使用大量的標記樣本,在訓練樣本數(shù)足夠多、網(wǎng)絡結構比較復雜的情況下,才能達到較優(yōu)異的性能[13]。深度分類網(wǎng)絡在ImageNet數(shù)據(jù)集上表現(xiàn)優(yōu)異,但在少量的數(shù)據(jù)上訓練復雜的分類網(wǎng)絡時,可能出現(xiàn)過擬合和陷入局部最優(yōu)解等現(xiàn)象[9]。
在訓練樣本缺失情況下,為了提高整體識別性能,遷移學習的加入可以很好地解決訓練樣本缺失帶來的上述問題。本文提出一種基于遷移學習的卷積神經(jīng)網(wǎng)絡服裝圖像分類方法,該方法有如下特點:
(1) 預訓練模型在ImageNet數(shù)據(jù)集上得到有效訓練,不斷調整超參數(shù),使模型能提取到關于圖像的邊緣、紋理等基本特征,使預訓練模型中的底層特征有著通用性。
(2) 一定量的服裝數(shù)據(jù)集可以再次對模型超參數(shù)進行微調,模型的語義層面參數(shù)得到充分訓練和調整,提取到的目標特征具有區(qū)分性。
(3) 遷移模型魯棒性和泛化能力相比更強,網(wǎng)絡的識別精度有效提升以及收斂速度快。
本文選取經(jīng)典的VGG16、VGG19、Inception_v3、Xception、ResNet50和MnasNet六種深度分類網(wǎng)絡做初始化模型和遷移模型的實驗對比。實驗表明,本文方法能明顯提高服裝圖像的識別精度,具有較好的泛化能力和魯棒性。
遷移學習[14]是指將模型通過源域學習的遷移運用到目標域中,即將以往的知識遷移到另一個新的領域中。遷移學習有四種常見類別:基于樣本遷移、基于特征遷移、基于模型遷移以及基于關系遷移。近幾年,遷移學習對相關任務的研究已經(jīng)受到了越來越多的關注。Thrun[15]是第一次討論以前學到的知識在泛化中所起的作用,尤其是在訓練數(shù)據(jù)缺乏的情況下。Yosinsk等[16]通過對其他數(shù)據(jù)集采用不同的微調策略,對預先從ImageNet數(shù)據(jù)集中學習到的特征的可移植性進行了廣泛的研究,發(fā)現(xiàn)當基本任務與目標任務之間的距離增大時,特征的可移植性降低。Wu等[17]結合了CNN和遷移用于花卉識別中,取得了很好的分類效果。本文在處理超參數(shù)調優(yōu)以及對預先訓練好的網(wǎng)絡進行微調方面進行了研究與探索。
下面給出一些遷移學習中術語的定義。
定義1領域(Domains)。一個領域可以表示為:
D={X,P(x)}
(1)
式中:X表示特征空間;P(x)表示x={x1,x2,…,xn}∈X,xi∈Rd,i=1,2,…,n的邊緣分布,xi表示第i幅圖的特征,Rd表示領域的特征集。
定義2任務(Task)。給定某一個具體的領域D={X,P(x)},一個任務可以表示為:
T={Y,f(·)}
(2)
根據(jù)遷移學習的定義,在源域中對目標域任務的完成存在有用的知識均可將其遷移至目標域中。若遷移的知識來自源域或目標域中的多個相關任務,則屬于多任務的范疇。遷移學習并不是在任何時候都能使用,當源域和目標域任務差異較大,進行遷移學習一般會導致負遷移的發(fā)生[18]。例如,將源領域中完成花卉識別任務時學到的知識遷移給目標領域中的服裝識別任務效果是不好的。因此只有具有共性的知識遷移到目標領域才能更好地發(fā)揮其作用。
在卷積神經(jīng)網(wǎng)絡中,當訓練樣本不夠充分時,通常識別效果不夠理想,而重新建立模型會很費時,這時可以考慮使用遷移學習來改善識別效果。在圖像分類識別中,遷移學習不僅可以學習非目標數(shù)據(jù)集的顏色、紋理等底層特征,還可以學習目標數(shù)據(jù)集的高級特征,有望提高模型的分類性能。為了驗證遷移學習的效果,本文提出基于遷移學習的卷積神經(jīng)網(wǎng)絡服裝圖像分類方法,描述如算法1所示,流程如圖1所示。
算法1卷積神經(jīng)網(wǎng)絡遷移學習訓練方法
輸入:ImageNet圖像數(shù)據(jù)I,DeepFashion服裝圖像數(shù)據(jù)D,迭代次數(shù)Epoch1和Epoch2,模型M,訓練精度閾值A1、A2,訓練損失閾值L1、L2。
1. 選擇深層模型M
2. 模型F初始化參數(shù)w1
3. X1=g(I)
//對ImageNet圖像數(shù)據(jù)I進行預處理
4. epoch=1
5. While epoch≤Epoch1 do
6. if A≤A1and L≥L1then
//訓練得到的精度和損失與設定的閾值比較
//更新模型參數(shù)
8. break
9. else
10. train M(I;w1)
11. epoch=epoch+1
12. End
//輸出預訓練模型和參數(shù)
14. X2=g(D)
//對DeepFashion服裝圖像數(shù)據(jù)D進行預處理
16. epoch=1
17. While epoch≤Epoch2 do
18. if A′≤A1and L′≥L2then
//更新模型參數(shù)
20. break
21. else
23. epoch=epoch+1
24. End
//輸出遷移模型和參數(shù)
圖1 基于CNN模型的遷移學習流程圖
本文選取六種經(jīng)典深度分類網(wǎng)絡模型,首先在包含120多萬幅自然圖像和1 000多個不同類別的ImageNet數(shù)據(jù)集上對模型進行預訓練,然后將模型參數(shù)遷移到DeepFashion數(shù)據(jù)集中進行微調訓練。
遷移方法采用預訓練和遷移訓練兩種方法相結合的方式。
1) 預訓練。預訓練過程與隨機初始化訓練過程基本類似。在參數(shù)隨機初始化后,通過網(wǎng)絡訓練迭代和優(yōu)化模型中參數(shù),使得模型精度提升及損失函數(shù)下降到某個設定的閾值,即模型達到收斂后輸出預訓練模型。
2) 遷移訓練方法。將訓練好的模型進行參數(shù)遷移,再通過目標數(shù)據(jù)集來微調網(wǎng)絡和優(yōu)化參數(shù),使得模型能很好地適應目標任務。對于本文的服裝圖像分類任務,深度網(wǎng)絡的遷移訓練方法步驟如下:
(1) 訓練數(shù)據(jù)集準備。將ImageNet數(shù)據(jù)集直接放入到本文選用的模型中,而目標數(shù)據(jù)集DeepFashion輸入到訓練好的模型中。
(2) 選擇模型。深度網(wǎng)絡遷移訓練方法選擇經(jīng)典卷積神經(jīng)網(wǎng)絡VGG16、VGG19、Inception_v3、Xception、ResNet50和MnasNet,最后對比六種遷移模型的識別性能的優(yōu)劣。
(3) 設計網(wǎng)絡結構。根據(jù)遷移所選擇的網(wǎng)絡特征,將最終的預測類別調整為實驗所需要的類別數(shù)目;根據(jù)模型使用Dropout技術、凍結層數(shù)等對遷移訓練模型進行精調。
(4) 參數(shù)優(yōu)化。將預訓練模型參數(shù)遷移到設計的網(wǎng)絡結構中,進一步優(yōu)化網(wǎng)絡參數(shù),能充分訓練模型和有效地觀察模型的性能。
本文使用的服裝圖像來自香港中文大學多媒體實驗室提供的多類別大型服裝數(shù)據(jù)集DeepFashion[6],這些圖像大部分來自購物網(wǎng)站,其余部分來源于博客、論壇和其他用戶的生成。DeepFashion包含了28萬幅圖片,其服裝圖片全部由人工標注,每幅圖像都有1個類別標注,1 000個屬性標注,Bbox邊框。這是迄今為止最大、最全面的服裝數(shù)據(jù)集。由于DeepFashion數(shù)據(jù)集過于龐大,本文僅從中抽取2 533幅服裝圖片,8個服裝類型(Dress,Jeans,Tank,shots,Tee,Jecket,Hoodie,Coat)進行實驗。其中80%作為訓練集,20%作為驗證集,兩者沒有數(shù)據(jù)之間的交集,訓練集用于模型訓練和學習以及參數(shù)的調整。在訓練中使用驗證集對模型進行測試、優(yōu)化,對模型參數(shù)進行微調。數(shù)據(jù)集中部分圖像如圖2所示,數(shù)據(jù)集中呈現(xiàn)了服裝的風格、款式、材質的多樣化。服裝的褶皺、遮光、側拍等因素,在很大程度上增加了服裝圖像分類的困難。
圖2 DeepFashion數(shù)據(jù)集部分數(shù)據(jù)圖
本文實驗環(huán)境:Ubuntu操作系統(tǒng),Intel i7-7700處理器,1 TB固態(tài)硬盤,32 GB內(nèi)存,NVIDIA GTX1080Ti GPU,采用TensorFlow平臺進行訓練;實驗結果中的準確率曲線采用Python中的matplotlib可視化得到。
利用在ImageNet上訓練完成的VGG16和VGG19模型的權值來進行訓練,將獲取到特征向量進行一維化,再將模型的全連接層替換成Softmax分類器,最后用修改后的模型對服裝圖像數(shù)據(jù)集進行訓練。其中模型學習率為0.000 1,迭代次數(shù)為300次,批尺寸(Batch_size)為32,Dropout為0.6。
利用在ImageNet上訓練好的Inception_v3模型來訓練服裝圖像數(shù)據(jù)集,輸入的圖片尺寸為(224,224,3),獲取特征向量后對其進行全局最大池化和全局平均池化,將該模型瓶頸層的輸出作為提取的特征,然后把這些特征輸入到Softmax分類器中獲得分類結果。其中,模型的學習率為0.000 1,迭代次數(shù)為300,批尺寸為32,Dropout為0.5。
利用ImageNet上訓練好的ResNet50模型來訓練服裝圖像數(shù)據(jù)集,獲取特征向量后對其進行了全局平均池化,然后將特征向量輸入到Softmax分類器中獲得分類結果。其中,模型的學習率為0.001,迭代次數(shù)為300,批尺寸為32,Dropout為0.5。NASNetMobile和Xception的實驗設置與ResNet50模型相類似。
表1顯示了VGG16、VGG19、Inception_v3、Xception、ResNet50和MnasNet六種圖像分類網(wǎng)絡模型在相同數(shù)據(jù)集上評價指標的比較。圖3-圖5分別展示了六種模型的初始化訓練和遷移訓練方法在同一數(shù)據(jù)集上準確率的比較。
(a) VGG16
(b) VGG19圖3 VGG16和VGG19初始化模型與遷移模型驗證集準確率比較
(a) Inception_v3
(b) Xception圖4 Inception_v3和Xception初始化模型與遷移模型驗證集準確率比較
(a) ResNet50
(b) MnasNet圖5 ResNet50和MnasNet初始化模型和遷移模型驗證集準確率比較
圖3(a)為VGG16遷移學習模型與初始化模型的對比,VGG16遷移模型在驗證集迭代40次左右開始收斂且波動相對平穩(wěn),初始化模型則需要迭代100次左右才收斂且波動較大。原因是VGG16遷移模型凍結了部分層數(shù),需要訓練的參數(shù)比較少且適合該模型分類,而VGG16初始化模型則需要從隨機參數(shù)進行訓練。圖3(b)為VGG19遷移模型與VGG19的初始化模型的比較,兩個模型的收斂速度與圖3(a)相似,但波動相對平穩(wěn)。
圖4(a)為Inception_v3遷移學習模型與初始化模型的對比,Inception_v3遷移模型在迭代35次左右就開始收斂且較圖3的兩個模型相對平穩(wěn),而初始化模型則需要迭代到125次左右才收斂且波動較大。圖4(b)為Xception遷移模型與初始化模型的比較,Xception遷移模型驗證集在迭代20次達到收斂。因為Xception是Inception_v3的優(yōu)化網(wǎng)絡輕量化模型,在同等參數(shù)量的情況下網(wǎng)絡效率比Inception_v3高,所以收斂速度快。
圖5(a)為ResNet50遷移模型與初始化模型的對比,由于初始化模型本身的網(wǎng)絡結構復雜,需要訓練的參數(shù)多,所以它的初始化模型準確率較低收斂速度也比較慢,且波動大。在ResNet50遷移模型迭代50次之后趨于收斂,雖然不比VGG16、VGG19模型收斂速度快,但是到達收斂點后波動不大。圖5(b)為MnasNet遷移模型與初始化模型的比較,MnasNet遷移模型在訓練50代左右開始收斂,而MnasNet初始化模型比前面的初始化模型的收斂速度要慢很多,需要迭代230次后才慢慢收斂。
由表1可知,六種神經(jīng)網(wǎng)絡使用遷移學習方法訓練后,分類效果明顯優(yōu)于隨機初始化網(wǎng)絡模型。由圖3-圖5可以看出,初始化模型的準確率均低于遷移模型,且模型收斂速度非常慢。六種遷移學習模型中,Inception_v3遷移模型和Xception遷移模型的收斂速度較快,收斂后相對平穩(wěn),且Inception_v3遷移模型和Xception遷移模型網(wǎng)絡損失均小于其他遷移模型??梢钥闯?神經(jīng)網(wǎng)絡模型遷移學習后具有更好的魯棒性和較強的泛化能力。而隨機初始化網(wǎng)絡模型有可能陷入局部最優(yōu)的問題,所以魯棒性和泛化能力相對較差。初始網(wǎng)絡模型受其自身的深層結構和較大的訓練參數(shù)的影響,網(wǎng)絡訓練速度慢,容易出現(xiàn)局部最優(yōu)和過擬合情況。對遷移模型的特定網(wǎng)絡層權重參數(shù)進行凍結,以及充分訓練和調整模型的語義層參數(shù),使模型提取的目標特征更加清晰。
如表2所示,遷移模型的識別精度都高于初始化模型,這證明了遷移學習方法用在DeepFashion服裝數(shù)據(jù)集上是有效的。由于傳統(tǒng)的深度分類模型需要大量的訓練數(shù)據(jù)才能獲得較為理想的實驗效果,而本文數(shù)據(jù)集的數(shù)據(jù)量少,因此模型的準確率低,還會出現(xiàn)梯度消失和過擬合等問題。初始化模型的收斂速度遠慢于遷移模型,且每次迭代所需時間稍長,原因是初始化模型沒有凍結前層網(wǎng)絡參數(shù),所有的網(wǎng)絡參數(shù)需要重新訓練。遷移學習方法在時間和準確率上都優(yōu)于隨機初始化模型方法,說明模型先在大數(shù)據(jù)集上做預訓練,再將訓練好的模型放到數(shù)據(jù)量少的目標領域上進行微調,節(jié)省了大量時間,而且能夠達到更高的分類精度。遷移模型也證明了在小樣本數(shù)據(jù)集中利用遷移學習的方法是可行的。
表2 各種方法分類性能對比
本文采用基于遷移學習的服裝圖像識別分類模型,在DeepFashion部分數(shù)據(jù)集上,將神經(jīng)網(wǎng)絡模型與遷移學習方法相結合,VGG16和Inception_v3的驗證集準確率分別達到94.80%和93.91%,其收斂速度較快,訓練集與驗證集之間未出現(xiàn)過擬合現(xiàn)象。實驗結果表明,用遷移后的神經(jīng)網(wǎng)絡模型進行訓練,收斂速度快,魯棒性和泛化能力都優(yōu)于隨機初始化模型。本文方法在DeepFashion服裝數(shù)據(jù)集上可以有效地對服裝圖像進行分類,在識別精度和時效性上取得了顯著的提高。