唐浩漾, 孫梓巍, 王 婧, 錢 萌
(西安郵電大學 自動化學院, 陜西 西安 710121)
網上購買服飾產品已成為人們日常生活消費方式之一,服飾圖像的分類和識別技術也在不斷發展。傳統的服飾圖像識別方法往往是設計特征提取算子對圖像特征進行提取[1-2],如文獻[1]利用局部二值模式(local binary patterns,LBP)和顏色直方圖方法提取服飾圖片的紋理和顏色特征,將圖像劃分成多個局部區域并添加位置信息。文獻[2]對服飾圖片進行分割后,利用圖像的尺度不變特征變換(scale invariant feature transform, SIFT)提取服飾圖片的局部特征,如紋理和顏色特征,利用支持向量機(support vector machine, SVM)分類器分類。這些識別與分類方法需要人為設置某種特征來訓練分類器,分類器的好壞取決于人為設置的特征是否合理,該方法不具有客觀性[3]。
深度學習技術能夠較好地解決圖像特征提取的問題[4],基于深度神經網絡(deep neural network, DNN)和卷積神經網絡(convolutional neural network, CNN)的方法已被廣泛地應用于圖像識別中[5-7]。文獻[8]將預訓練的模型進行微調后,獲得類哈希的圖像特征表示,再通過層級深度搜索進行圖像分類。文獻[9]通過深度神經網絡,利用余弦相似度進行跨場景的服飾圖片識別。但是,這些方法需要通過試探性的實驗搭建網絡模型,且需要更新模型中大量參數才能使模型達到最優[3]。通過遷移學習的方式可以有效地解決新模型的搭建和參數調整的問題[10-12],文獻[10]提出了一種基于遷移學習的圖像識別方法,從源數據集上對卷積神經網絡進行預訓練,然后,將卷積層參數遷移至目標數據集后再訓練。這種方式能夠有效地遷移卷積低層特征的提取能力至目標數據集,卻忽略了高層卷積層的語義性[13]。
本文擬提出一種基于視覺幾何組19(visual geometry group-19, VGG-19)混合遷移學習模型的服飾圖片識別算法,利用卷積神經網絡特征提取能力,將源數據上的VGG-19模型卷積層參數遷移至目標數據模型,再通過稀疏自動編碼器(sparse auto encoder, SAE)無監督學習得到數據特征的簡明表達,最后,使用softmax分類器對服飾圖片進行分類。
使用VGG-19卷積神經網絡為預處理模型。相比于傳統的卷積神經網絡,VGG-19在網絡深度上進行了提升,采用多個卷積層與非線性激活層的交替結構,比單一卷積層結構能夠更好地提取出圖像特征。
VGG-19的網絡結構,如圖1所示。

圖1 VGG-19的網絡結構
如圖1所示,VGG-19主要由5段卷積,5個下采樣層以及3個全連接層組成,每段卷積內有2至3個卷積層,其中卷積核大小均為3×3,卷積步長為1。
使用maxpooling進行下采樣,修正線性單元(rectified linear unit,ReLU)為激活函數。3個全連接層的節點個數分別為4 096、 4 096、 1 000。輸入圖像大小為224×224,網絡最后一層為1個softmax回歸分類器,對輸入的圖片用概率進行分類。
卷積神經網絡中用卷積層模擬視覺通路的特性,通過不同的卷積核對圖片進行卷積操作以得到不同特征的響應。設網絡中第l層第j個特征圖[6]

為了增加整個網絡的非線性映射能力,需要向網絡中加入激活函數,VGG-19網絡中使用ReLU作為激活函數,能夠有效的改善深層網絡在反向傳播時梯度飽和的問題,激活函數[6]
f(x)=max(0,x)。
激活函數圖像,如圖2所示。

圖2 ReLU激活函數
下采樣層主要用來提升網絡對圖像的抗畸變能力,同時保留樣本的主要特征并減少參數個數。VGG-19網絡中采用最大池化(maxpooling)作為下采樣函數,即選取改圖像區域中最大的值作為該區域池化后的值。下采樣層的表達式為[6]
網絡在連續堆疊卷積層、下采樣層之后,一般連續有多個全連接層。全連接層將卷積層輸出的二維特征圖轉化成一維向量,再根據此向量利用softmax回歸分類器實現最終的分類。
采用ImageNet數據集[14]作為源數據集,該數據集數據量豐富,訓練得到的模型泛化能力強,能夠從中提取出豐富多樣的邊緣特征、紋理特征和局部細節特征,可通過遷移學習識別服飾圖片。
混合遷移學習模型主要由卷積層、下采樣層、稀疏自動編碼器和softmax分類器構成,如圖3 所示。

圖3 混合遷移學習模型示意圖
如圖3所示,卷積部分參數為遷移得到的VGG-19預訓練的參數,將卷積層最終輸出的512個特征圖串聯為一個大小為512×3×3的特征向量輸入到SAE中。SAE的第一層網絡共有3 072個神經元,為了起到數據壓縮的作用,隱含層為1 500個神經元,最后一層為3 072個神經元。如果需要對5種不同類別的服飾進行分類,則softmax為5個神經元。
對VGG-19網絡進行預訓練,即可得到遷移的卷積層參數,此方式能避免大量參數調整。

假設源訓練集中共有m個樣本,單個輸入樣本為(x(i),y(i)),x(i)為n維向量,y(i)為樣本真實標簽,網絡模型的整體代價函數為
其中,λ為權值衰減系數,nl為網絡總層數,sl為網絡第l層節點數,hw,b(x(i))表示網絡前向傳播時得到的輸出值。
(1)
考慮到網絡隱藏層中不能直接使用誤差函數進行計算,因此,需要借助網絡殘差實現反向逐層傳遞[6],反向逐層傳遞表達式為
(2)

(3)
經過多次迭代,當代價函數值最小時,就完成了源數據集上的預訓練,再將得到的卷積層參數遷移至服飾圖片數據集上。
在參數遷移完成后,由于ImageNet數據集和目標服飾數據集存在一定差異,導致遷移參數的新模型的特征識別力受到影響。所以在特征圖輸出后再通過稀疏自動編碼器進行重訓練,稀疏自動編碼器不僅全連接了所有特征圖的特征,還能將這些特征進行無監督學習,獲得更好的高層語義性。
稀疏自動編碼器通過無監督的方式進行學習,使輸出的特征盡可能等于輸入的特征。為了保證隱含層的稀疏性,獲得比原始服飾圖片數據更好的特征描述,在代價函數J(W,b)中添加一個稀疏性懲罰項,則代價函數[15]變為
(4)


當代價函數建立后,需要將SAE結合softmax分類器實現對服飾圖像的分類。在訓練softmax分類器的同時,繼續將訓練殘差反向往前傳輸,使用BP算法進行有監督學習調整SAE網絡和softmax的參數。根據式(3),得出稀疏自動編碼器的更新量為

為了使新模型的卷積層能夠更好地提取出服飾圖片特征,避免過擬合現象的發生,需要對網絡中卷積層參數進行微調。
本文采取逐段凍結的方式進行微調,首先凍結某層參數,則網絡殘差反向傳播時只傳播到該層的前一層,更新后面幾層的參數,該層參數不更新。整個模型微調完成后,就可以將服飾圖片輸入至模型進行分類與識別。
實驗采用的計算機配置為I7-7700HQ, 2.8 GHZ,ubuntu16.04操作系統,同時使用NVIDIA Tesla K40顯卡加速訓練。
實驗采用的數據集為DeepFashion數據集[17]中部分服飾圖片,從中選取五類圖片進行識別,分為T恤、外套、裙子、長褲和短褲,各600張共3 000張圖片作為訓練集,另外,額外選取每類200張共1 000張作為驗證集。考慮到圖片大小不同,需先將原始圖片進行歸一化處理,裁剪為224×224大小送進網絡進行訓練。將上述數據集輸入至模型中,學習率設為0.01,迭代步數設為10 000步,使用TensorFlow作為網絡訓練框架,批大小設為50。
分別凍結5段卷積時,網絡在訓練集和驗證集錯誤率的情況,如圖4所示。

圖4 卷積層微調錯誤率
圖4展示了分別凍結5段卷積時,網絡在訓練集和驗證集錯誤率的情況。當凍結Conv1層時,對后面4段卷積都進行參數更新,可以看出訓練集的錯誤率較低,而驗證集的錯誤率偏高。這是因為服飾圖片數據量遠小于ImageNet數據集,網絡發生了過擬合的現象。當凍結Conv3層時,驗證集錯誤率最低,表明參數更新至本層時較為合適,可避免過擬合的現象發生。
對Conv3層進行凍結時,經過10 000步迭代訓練后,模型在驗證集上識別率與代價函數值的變化情況,如圖5和圖6所示。

圖5 代價函數值-迭代步數曲線

圖6 識別率-迭代步數曲線
圖5和圖6分別展示了對Conv3層進行凍結時經過10 000步迭代訓練后,模型在驗證集上識別率與代價函數值的變化情況。可以看出隨著迭代步數的更新,在前1 000步時,代價函數的數值下降很快,識別率快速提升,這是由于網絡進行參數遷移后,參數不用經過多次迭代而能快速滿足新模型的性能需求。在8 000步之后,數據的識別率與代價函數值趨于穩定。經過參數的不斷更新,最終測試數據集的識別率達到97.2%。5類服飾的識別結果,如表1所示。

表1 5類服飾圖像識別結果
表1為5類服飾的識別結果,可以看出將T恤誤識別為外套有4個樣本,而并沒有誤識別為下裝類(長褲、短褲)。同樣,在對短褲進行識別時,有4個樣本被誤識別為長褲,并沒有誤識別為上裝類(T恤、外套)。說明該模型對有較大特征差異的數據集可以進行識別。
將本文方法與文獻[10]方法的卷積層特征提取進行對比,結果如圖7所示。

(a) 文獻[10]模型卷積層特征提取

(b) 本文模型卷積層特征提取
圖7展示了部分外套和裙子的卷積特征圖,可以明顯看出,這兩種方式在低層時都主要提取的是圖片的邊緣、紋理、形狀等特征。但是通過高層卷積特征圖可以發現,本文方法的SAE重訓練分類比文獻[10]方法所提取的特征更加細微,說明添加稀疏自動編碼器能夠給出比原始服飾圖像數據更好的特征描述,可以提取出潛在的服飾圖片信息。
在模型識別性能方面,本文方法與基于SITF-SVM的服飾圖片方法[2]、層級深度搜索服飾圖片分類方法[8]、通過深度神經網絡并利用余弦相似度進行跨場景識別方法[9]和參數遷移后接全連接層的識別方法[10]進行對比,結果如表2所示。

表2 各類方法識別性能對比
從表2可以看出,文獻[2]方法在訓練時間和驗證時間上有很大的優勢,但是對于識別的效果卻不理想,在驗證集上精度只有24.5%,這是由于傳統的機器學習方法在圖像特征提取時極大依賴于先驗知識,而且對數據依賴性很高,需要大量的數據對模型進行訓練。
文獻[8]方法和文獻[9]方法較于文獻[2]方法在識別精度上有了明顯提升,驗證集上精度分別達到了58.5%和60.5%。主要是因為使用了深度模型來代替了人工特征提取的方法,但是,這兩種模型依然需要大量數據進行訓練才能保證模型的泛化能力。
文獻[10]方法相對于文獻[2,8-9]方法,能夠有效地提升識別精度,但其識別精度低于本文方法。本文方法比文獻[10]的精度高3.7%,原因在于,文獻[10]中參數遷移后直接連接了全連接層,而本文方法則通過SAE進行了無監督學習的重訓練,獲得了高層語義性的特征描述,也導致了本文方法測試時間略長。
本文提出了一種基于VGG-19混合遷移學習模型的服飾圖片識別方法。通過遷移學習和稀疏自動編碼器無監督學習結合的方式能夠解決遷移過程中數據集差異而帶來的特征提取能力降低的問題。實驗結果表明,在提取服飾圖像特征時,本文方法獲得了更好的服飾圖片細節特征,對T恤、外套、裙子、長褲、短褲5類服飾識別率達到了97.2%。性能對比實驗證明了本文服飾圖片識別的精度在訓練集和測試集上均較高。