張萌巖,何儒漢
(武漢紡織大學(xué) 湖北省服裝信息化工程技術(shù)研究中心,湖北 武漢 430200)
近年來,服裝電商的快速發(fā)展積累了海量服裝圖像,如何理解、區(qū)分和識別不同的服裝圖像并從中獲取有價值的信息,成為目前研究的熱點.服飾屬性標(biāo)簽識別作為服飾圖像檢索、標(biāo)簽導(dǎo)航等應(yīng)用的基礎(chǔ),具有重大的研究意義.為了更好地對服裝商品圖像進行屬性標(biāo)簽的標(biāo)注,常用方法是:(1)手工標(biāo)注,即為服裝屬性設(shè)置相關(guān)的標(biāo)簽,基于人工設(shè)計的視覺特征實現(xiàn)服裝圖像的標(biāo)簽屬性識別;(2)傳統(tǒng)的自動標(biāo)注,即借助數(shù)字圖像處理、模式識別的方法,基于底層的視覺特征進行服裝的標(biāo)簽屬性分類.人工標(biāo)注方法費時費力、易出現(xiàn)主觀性偏差,不適應(yīng)當(dāng)前大數(shù)據(jù)時代的發(fā)展要求.傳統(tǒng)的自動標(biāo)注方法在如何克服服裝標(biāo)簽屬性識別本身的表達上具有多義性和不確定性;同時,服裝圖像包含較多的細(xì)分類和視覺變化,包括款式、光照、形變、拍攝角度、背景影響等,其特殊性令其自動標(biāo)注和識別更具挑戰(zhàn)性,使得依賴人工設(shè)計特征的傳統(tǒng)自動標(biāo)注方法愈加難以滿足實際服裝圖像屬性識別的需要.
深度學(xué)習(xí)[1,2]近年來在學(xué)術(shù)界和工業(yè)界掀起了熱潮,是機器學(xué)習(xí)領(lǐng)域最令人矚目的方向,目前已誕生很多優(yōu)秀的算法.研究者們把深度學(xué)習(xí)和服裝圖像處理結(jié)合起來,取得了不錯的成果.香港中文大學(xué)的Liu等人[3]收集了一個大規(guī)模且語義標(biāo)注全面的服裝數(shù)據(jù)集DeepFashion,提出了FashionNet,融合了大類、屬性、服裝ID以及關(guān)鍵點四種監(jiān)督信息來進行服裝特征學(xué)習(xí).厲智等人[4]提出基于深度卷積神經(jīng)網(wǎng)絡(luò)的改進服裝圖像分類檢索算法,采用深度卷積神經(jīng)網(wǎng)絡(luò)從數(shù)據(jù)庫中自動學(xué)習(xí)服裝的類別特征并建立哈希索引,實現(xiàn)服裝圖像的快速索引.這些相關(guān)研究工作都使用深度卷積神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)服裝標(biāo)簽屬性識別,為了獲得更好的結(jié)果,卷積神經(jīng)網(wǎng)絡(luò)的改進常通過增加用于提取特征的卷積層的數(shù)量來提升模型的識別能力.但是深度卷積網(wǎng)絡(luò)存在以下兩個問題:(1)卷積網(wǎng)絡(luò)深度過深,在訓(xùn)練網(wǎng)絡(luò)中會出現(xiàn)梯度消失、梯度爆炸等現(xiàn)象,致使訓(xùn)練困難[5].(2)隨著網(wǎng)絡(luò)模型結(jié)構(gòu)變得復(fù)雜,網(wǎng)絡(luò)模型的參數(shù)變多,雖然提升了準(zhǔn)確率,但是隨之帶來的是更大的計算量和更高的內(nèi)存需求,這會極大地影響模型對輸入圖像的處理速度,難以達到實時處理圖像的要求.
因此,借鑒深度殘差神經(jīng)網(wǎng)絡(luò)[6]在解決深層網(wǎng)絡(luò)訓(xùn)練時梯度消失問題的優(yōu)勢,本文設(shè)計了一種改進的殘差神經(jīng)網(wǎng)絡(luò),即Res-FashionAINet,來實現(xiàn)服裝圖像的標(biāo)簽屬性識別,取得較好的效果.該方法具有實現(xiàn)簡單、靈活、準(zhǔn)確率高、速度較快的優(yōu)點,較好地平衡了識別準(zhǔn)確率和運行速度,在服裝屬性識別問題上具有一定優(yōu)勢.
2015年,MSRA的Kaiming He的殘差網(wǎng)絡(luò)將深度網(wǎng)絡(luò)的層深拓展到了152層,并在ImageNet競賽中以絕對優(yōu)勢取得了多個項目的冠軍.后來,Kaiming He將深度加到1000多層,同時也因該項工作獲得了2016 CVPR的最佳論文獎[6].因此,本文提出的模型是在殘差卷積神經(jīng)網(wǎng)絡(luò)模型的基礎(chǔ)上進行改進的,用于識別服裝圖像的標(biāo)簽屬性.
圖1 殘差塊的建立Figure.1 Residual learning: a building block
在訓(xùn)練深度網(wǎng)絡(luò)中,盡管已經(jīng)有了ReLU等一系列手段加深網(wǎng)絡(luò),但仍會出現(xiàn)梯度爆炸、彌散的問題.單純的疊加layer,深層網(wǎng)絡(luò)的效果反而會變差,以至于造成網(wǎng)絡(luò)退化引起更大的誤差.所以ResNet深度殘差網(wǎng)絡(luò)ResNet的出現(xiàn)為訓(xùn)練更深的網(wǎng)絡(luò)提供了方法,主要特色是跨層連接.ResNet對每層輸入做一個reference,學(xué)習(xí)形成殘差函數(shù).這種殘差函數(shù)更容易優(yōu)化,能使網(wǎng)絡(luò)層數(shù)大大加深.假設(shè)殘差為F(x)=H(x)-x,那么現(xiàn)在不直接學(xué)習(xí)H(x) 而是去學(xué)習(xí)F(x)+x,即將H(x)映射為F(x)+x,那么網(wǎng)絡(luò)的映射F(x)趨向于F(x)=0.擬合殘差即把網(wǎng)絡(luò)按照圖1的跨層連接搭起來,殘差塊的結(jié)構(gòu)如圖1所示.
殘差塊中有二層,其中σ代表非線性函數(shù)ReLU,如下表達式:
F=W2σ(W1x)
(1)
然后通過一個shortcut,和第2個ReLU,獲得輸出y,如下表達式:
y=F(x,{Wi})+x
(2)
當(dāng)需要對輸入和輸出維數(shù)進行變化時(如改變通道數(shù)目),可以在shortcut時對x做一個線性變換WS,如下表達式:
y=F(x,{Wi})+WSx
(3)
殘差塊往往需要兩層以上,單單一層的殘差塊并不能起到提升作用.
本文設(shè)計了一個用于服裝圖像標(biāo)簽屬性識別的神經(jīng)網(wǎng)絡(luò)模型Res-FashionAINet,基本結(jié)構(gòu)如圖2所示.本模型主要使用卷積模板,并穿插恒等模板,在模型尾部增加了Dropout層避免過擬合,同時也增加了全連接層增強輸出特征的表達能力.通過該模型提取服裝圖像的特征,繼而識別出服裝圖像的標(biāo)簽屬性.模型從網(wǎng)絡(luò)低層開始逐層學(xué)習(xí)服裝圖像特征的分布,并在網(wǎng)絡(luò)的全連接層將特征圖抽象為多維的特征向量,最終將特征向量輸入分類器預(yù)測標(biāo)簽對應(yīng)每個類別的概率,概率最高的被視為該圖像的識別結(jié)果.
在Res-FashionAINet模型中,輸入299×299的圖片,通道為3;經(jīng)過第一個Identity Block輸出74×74×256的卷積結(jié)果;經(jīng)過第二個Identity Block輸出37×37×512的卷積結(jié)果;經(jīng)過第三個Identity Block輸出19×19×1024的卷積結(jié)果;經(jīng)過第四個Identity Block輸出10×10×2048的卷積結(jié)果;Conv Block不會改變圖像的大小,它的作用是為了改變feature vector的dimension;然后加入Dropout層,每次訓(xùn)練迭代時隨機去掉部分神經(jīng)元,以避免過擬合;建立隱藏層,共有1024個神經(jīng)元;最后增加一個輸出層,共n個神經(jīng)元(對應(yīng)每種服裝圖像屬性的n個類別)并且使用softmax激活函數(shù)進行轉(zhuǎn)換,Softmax可以將神經(jīng)元的輸出轉(zhuǎn)換為每一個圖像類別的概率.
相比傳統(tǒng)的特征提取方法,Res-FashionAINet能夠獲取更深層次的信息特征,這些特征信息大大增加了服裝標(biāo)簽屬性識別的準(zhǔn)確率和速率.
圖2 Res-FashionAINet網(wǎng)絡(luò)結(jié)構(gòu)圖Figure.2 Res-FashionAINe Network structure
Res-FashionAINet中采用了類似ResNet 的模塊化結(jié)構(gòu),每個模塊由多個層和一個捷徑(shortcut)連接組成,shortcut將該模塊的輸入和輸出連接到了一起.然后在元素層面上執(zhí)行加法(add)運算,如果輸入和輸出的大小不同,則使用零填充或投射(通過 1×1 卷積)來得到匹配的大小.同時Res-FashionAINet中包含了類似ResNet中的兩類模塊,如圖3所示,一個是恒等模塊,其輸入和輸出的維數(shù)相同,可串聯(lián)多個;另一個是卷積模塊,輸入和輸出的維數(shù)不同,故不能連續(xù)串聯(lián),其作用可以改變特征向量的維數(shù).
圖3 恒等模塊(左)和卷積模塊(右)Figure.3 Identity Block(Left) and Conv Block(Right)
同時,本文將兩個3×3的卷積層替換為1×1 + 3×3 + 1×1,如圖4所示.新結(jié)構(gòu)中3×3的卷積層首先在一個降維1×1卷積層下減少了計算,然后在另一個1×1的卷積層做了還原,既能保持精度又能減少計算量.
圖4 殘差塊的優(yōu)化Figure.4 Optimization of Residual block
依據(jù)上述網(wǎng)絡(luò)模型,本文設(shè)計了基于Res-FashionAINet的服裝標(biāo)簽屬性識別模型,對服裝圖像屬性進行識別分類,具體流程圖如圖5所示,具體步驟為:
(1)本實驗使用FashionAI數(shù)據(jù)集中8種不同服裝的圖片數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),每種服裝的訓(xùn)練數(shù)據(jù)大約一萬張圖片;
(2)對獲取的數(shù)據(jù)集進行整理:讀取每張圖片的路徑和標(biāo)簽,將圖片按照對應(yīng)的標(biāo)簽放入train_valid目錄下對應(yīng)的類別目錄中,然后前90%的數(shù)據(jù)用來做訓(xùn)練,剩下的用來做驗證;
(3)定義訓(xùn)練集和驗證集的圖片增廣函數(shù),對訓(xùn)練數(shù)據(jù)進行擴充;
(4)數(shù)據(jù)準(zhǔn)備完畢后,為分別從屬于8個類別的圖片設(shè)計模型,將它們準(zhǔn)確分類,可認(rèn)為不同屬性的服飾從屬于不同的類別,在實驗中不斷調(diào)整參數(shù)進行對比,從而選出最佳參數(shù);
(5)定義輔助函數(shù):Mean Average Precision平均準(zhǔn)確率均值,對實驗的性能進行評估;
(6)訓(xùn)練結(jié)束后,讀取測試集圖片的路徑,根據(jù)訓(xùn)練好的模型對數(shù)據(jù)進行預(yù)測,并判斷預(yù)測的類型是否準(zhǔn)確.
圖5 服裝標(biāo)簽屬性識別算法流程圖Figure.5 Algorithm Flowchart
本文實驗采用的是FashionAI數(shù)據(jù)集,該數(shù)據(jù)集作為大規(guī)模高質(zhì)量時尚數(shù)據(jù)集,包含8種屬性維度共計114805張圖像,其圖像分類層次結(jié)構(gòu)如圖6所示,其中包括頸線設(shè)計、領(lǐng)子設(shè)計、脖頸設(shè)計、翻領(lǐng)設(shè)計、袖長、衣長、裙長和褲長共計8種屬性.本文期望數(shù)據(jù)是類似ImageNet的格式組織的,即每一類圖片都統(tǒng)一放在一個目錄下,故將所有整理后的數(shù)據(jù)放進train_valid目錄[7],具體的目錄結(jié)構(gòu)如圖7所示.數(shù)據(jù)標(biāo)簽是若干個n和一個y組成的字符串,字母y出現(xiàn)的位置即圖片對應(yīng)的類型.
圖6 FashionAI數(shù)據(jù)集特征圖Figure.6 FashionAI Dataset feature map
圖7 訓(xùn)練集目錄結(jié)構(gòu)圖 Figure.7 Test Dataset directory structure map
圖8 屬性值遮擋示意圖Figure.8 Attribute value Blocking Schematic
該數(shù)據(jù)集中的數(shù)據(jù)具有這些特性:(1)互斥:一個屬性維度下,屬性值之間是互斥的,不能同時成立.(2)獨立:一個圖像中,不同屬性維度下的屬性值可同時存在,它們之間相互獨立.(3)每個屬性維度下都有一個屬性值叫“不存在”.這個表示當(dāng)前屬性維度在該圖像所展示的視角下,是被定義過的,但是該屬性在圖中并沒有出現(xiàn)或者被遮擋看不見.如圖8包含了上身、下身視角,但是衣長被裙擺遮住,衣長維度的屬性值是“不存在”.
通過扭曲、翻轉(zhuǎn)、縮放、顏色空間變換等方法對訓(xùn)練圖片做一系列變化,可產(chǎn)生相似但又有不同的訓(xùn)練樣本,既能增大圖片訓(xùn)練集規(guī)模又可以模擬不同拍攝條件下的統(tǒng)一場景,達到加強訓(xùn)練的效果.例如對圖片進行不同的裁剪使得感興趣的物體出現(xiàn)在不同的位置中,使模型減小對物體出現(xiàn)位置的依賴性;通過調(diào)整圖像亮度、色彩來降低模型對色彩的敏感度[8].本文通過Rotation、Horizontal Flip、Shift函數(shù)對訓(xùn)練集進行數(shù)據(jù)擴充,如圖9所示.
圖9 數(shù)據(jù)擴充圖Figure.9 Data expansion diagram
本實驗平臺包括:PC機、Intel Core i7處理器、8G服務(wù)器、11GB顯卡GTX1080、Ubuntu操作系統(tǒng)、64位操作系統(tǒng).服裝標(biāo)簽屬性識別性能指標(biāo)采用平均準(zhǔn)確率均值(Mean Average Precision,MAP),其定義如下:
(1)每條數(shù)據(jù)計算出AttrValueProbs中的最大概率以及對應(yīng)的標(biāo)簽,分別記為MaxAttrValueProb和MaxAttrValue.每個屬性維度,分別初始化評測計數(shù)器:
BLOCK_COUNT = 0 (不輸出的個數(shù))
(4)
PRED_COUNT = 0 (預(yù)測輸出的個數(shù))
(5)
PRED_CORRECT_COUNT = 0 (預(yù)測正確的個數(shù))
(6)
設(shè)定GT_COUNT為該屬性維度下所有相關(guān)數(shù)據(jù)的總條數(shù).
(2)給定模型輸出閾值(ProbThreshold),分析與該屬性維度相關(guān)的每條數(shù)據(jù)的預(yù)測結(jié)果:
當(dāng)MaxAttrValueProb < ProbThreshold,模型不輸出:BLOCK_COUNT++;
當(dāng)MaxAttrValueProb >= ProbThreshold:
MaxAttrValue對應(yīng)的標(biāo)注位是‘y’時,記為正確:PRED_COUNT++,PRED_CORRECT_COUNT++;
MaxAttrValue對應(yīng)的標(biāo)注位是‘m’時,不記入準(zhǔn)確率評測:無操作;
MaxAttrValue對應(yīng)的標(biāo)注位是‘n’時,記為錯誤:PRED_COUNT++.
(3)遍歷使BLOCK_COUNT落在[0,GT_COUNT)里所有可能的閾值ProbThreshold,分別計算,并統(tǒng)計它們的平均值,記為AP:
準(zhǔn)確率(P):PRED_CORRECT_COUNT / PRED_COUNT
(4)綜合所有的屬性維度計算得到的AP,統(tǒng)計它們的平均值,得出mAP.
(7)
使用本文的Res-FashionAINet深度學(xué)習(xí)網(wǎng)絡(luò)模型對訓(xùn)練集進行訓(xùn)練,設(shè)置40次循環(huán)訓(xùn)練,學(xué)習(xí)率(learning rate,lr)為1e-4,批訓(xùn)練數(shù)據(jù)batch size為64,預(yù)測出測試集中每張圖片對應(yīng)的屬性值(AttrValues).識別效果如表2所示,可以看到基于Res-FashionAINet模型和圖片擴增可以提高圖片識別的準(zhǔn)確率,最終識別準(zhǔn)確率可以達到91.8%.殘差網(wǎng)絡(luò)的確解決了網(wǎng)絡(luò)退化的問題,在測試集上,都證明了更深的網(wǎng)絡(luò)錯誤率越小.
在實際應(yīng)用中,不僅需要考慮模型的準(zhǔn)確率,更要考慮訓(xùn)練數(shù)據(jù)的耗時問題.由表2可看出,Densenet201準(zhǔn)確率高,但是耗時較長.模型處理圖像的速度主要是由網(wǎng)絡(luò)的參數(shù)個數(shù)及計算方式?jīng)Q定,Densenet網(wǎng)絡(luò)層數(shù)較深,參數(shù)過多,會降低模型的計算速度.
表1 多種模型在FashionAI數(shù)據(jù)集上的性能對比表(表中time指每次迭代的平均耗時 )
由表2可知,比較DenseNet和ResNet模型訓(xùn)練數(shù)據(jù)的準(zhǔn)確率,以及處理圖像的速度,DenseNet準(zhǔn)確率最高,但由于網(wǎng)絡(luò)層數(shù)較多,耗時過長.其次便是不同層數(shù)的ResNet模型,在準(zhǔn)確率和速度上,本文提出的Res-FashionAINet網(wǎng)絡(luò)模型均優(yōu)于其他模型,該實驗結(jié)果說明本文對網(wǎng)絡(luò)結(jié)構(gòu)的改進是可行的.
為檢驗?zāi)P驮诟鲗傩灾械膽?yīng)用能力,將模型對各屬性的訓(xùn)練結(jié)果進行對比,如表3所示,可展示模型在各種屬性訓(xùn)練集和驗證集的準(zhǔn)確率、mAP、誤差loss以及計算速度.
表2 Res-FashionAINet模型訓(xùn)練各種屬性的統(tǒng)計表
根據(jù)訓(xùn)練集中Annotations存放需要模型計算的屬性維度信息,對測試集的圖像維度進行預(yù)測,輸出各個屬性值的預(yù)測概率,將“?”替換成計算出來的各個標(biāo)簽的預(yù)測概率值(分?jǐn)?shù)),并取最大的預(yù)測概率(分?jǐn)?shù))的屬性值作為預(yù)測結(jié)果,數(shù)據(jù)預(yù)測得出的結(jié)果展示為csv格式文件,具體如下表4(僅列舉10個).
表3 訓(xùn)練集預(yù)測表(ImagesName指存放的jpeg編碼的圖像數(shù)據(jù)文件名)
由圖10可知不同殘差網(wǎng)絡(luò)預(yù)測的服裝標(biāo)簽都是正確的,層數(shù)越高、參數(shù)越大,預(yù)測的概率也就越高,但是本文提出的Res-FashionAINet網(wǎng)絡(luò)模型的準(zhǔn)確率優(yōu)于其他殘差網(wǎng)絡(luò).
圖10 圖像網(wǎng)絡(luò)預(yù)測圖(示例為裙子,屬性標(biāo)簽為nnnynn,即Midi) Figure.10 Image network prediction
隨著訓(xùn)練迭代次數(shù)的增加,數(shù)據(jù)訓(xùn)練的準(zhǔn)確率也會提升;在不同學(xué)習(xí)率中,提升的情況會有所不同.
針對服裝標(biāo)簽屬性識別的研究,本文設(shè)計了一個名為Res-FashionAINet的深度學(xué)習(xí)網(wǎng)絡(luò)模型,并以此為基礎(chǔ)構(gòu)建了服裝標(biāo)簽屬性識別方法,有效提高服裝標(biāo)簽識別的準(zhǔn)確率,同時擁有較快的圖像處理速度.該方法在FashionAI數(shù)據(jù)集中與傳統(tǒng)的識別方法進行比較分析.結(jié)果表明,該模型與其他模型相比具有一定優(yōu)越性.在后期的研究和實驗工作中,還需進一步解決一些問題:(1)進行識別的服裝種類需要繼續(xù)進行增加和細(xì)分;(2)服裝標(biāo)簽屬性識別算法的泛化能力需要提升,盡可能地去除外界干擾.