李淑霞, 楊俊成,2
(1.河南工業職業技術學院,電子信息工程學院,河南,南陽 473000;2.武漢大學,計算機學院,湖北,武漢 430072)
隨著電子商務的發展,通過網絡購買服裝的用戶越來越多,如果能夠根據服裝圖片對服裝風格進行分類識別,不僅能給予消費者搭配選購的建議還能幫助商家促進銷售。服飾行業作為網絡營銷中規模大、起步早的行業之一,網絡購物占比超過了三成,至今依然在吸引消費者,其需求呈上升趨勢。因此,基于已知服裝圖片進行服裝風格識別具有一定的現實意義[1-2]。針對消費者,可以根據提供的單品圖片對消費者推薦服裝搭配,幫助消費者節省時間和精力;針對購物網站,可以根據提供的圖片,找到相似的服裝、搭配推薦給客戶,從而擴大銷售,達到共贏。
服裝風格是指一個人的服裝在形式和內容方面所展示出來的內在品格,價值取向和藝術特色,是除色彩及圖案外描述服裝的一種重要的中層特征屬性[1]。服裝風格十分繁雜,大致可分為嘻皮、韓版、簡約、前衛、歐美、民族、嘻哈、田園、朋克、OL、Lolita、街頭、華麗、淑女、松散、嚴謹等18類。由于服裝風格的主觀性、發展速度等特點,使得服裝風格分類和識別變得非常復雜。
所以本文研究向用戶提供目標輸入,通過圖像處理[3]和機器學習[4]技術,以期建立服裝圖像和服裝風格之間的映射關系[5],使機器對其進行數字圖像處理,通過構建深度卷積神經網絡,對數據集進行圖片增強,得到更高的分類精度目標圖像風格分析結果。
卷積神經網絡(Convolutional Neural Network,CNN)是深度學習中應用最廣泛的網絡之一,它最早由Yann LeCun[6]提出,并成功應用于手寫數字的識別。卷積神經網絡也是模仿人類大腦的特點,通過構造多層神經網絡,每層神經元的輸出作為下一層神經元的輸入,學習最適合任務的特征組合,具有強魯棒性。卷積神經網絡主要有3個特性:權值共享、局部感受野和池化操作。這些特性有效地降低了網絡的復雜度且減少了參數的數量。權值共享即卷積核上的參數對圖像的任意區域保持不變,如果訓練的一個卷積核在當前窗口提取圖片的顏色特征,則該卷積核滑動到其他窗口時也是提取圖片窗口的顏色特征。不同卷積核的參數不同,從而實現對原始圖片的不同特征提取,獲取的特征圖作為下一層卷積的輸入。局部感受野指卷積核只與圖片局部卷積,因為圖像上相連像素關系緊密,而距離較遠的像素點之間相關性弱。池化操作增強了卷積神經網絡對圖像平移、翻轉等位置變化的不變性,同時減少了模型的計算量。經過一次池化操作,特征圖片的尺寸將縮小,提高了模型的計算效率。通常,一個完整的卷積神經網絡模型包含卷積層、池化層、全連接層和分類器,適用于語音、特別是圖像數據的處理。卷積神經網絡模型可以直接輸入圖片,不再需要人為的定義特征作為輸入,這相比傳統的模式識別方法具有很大的優勢。一方面傳統的特征提取需要人為參與,具有較大主觀性,一些利于圖像識別任務的潛在的特征可能未被定義,精度難以提升。另一方面,由于數據量的急劇增加,傳統的機器學習方法性能提升遇到瓶頸,而深度學習是數據驅動的方法,海量數據能夠使深度學習模型充分地學習數據中的隱藏特征,并隨著數據的更新而更新。
卷積層是卷積神經網絡最重要的結構,具有局部感受野特性,可以減少大量的權值計算。假設輸入圖像為5×5大小,使用的卷積核大小為3×3,滑動步長為1,則通過卷積之后輸出圖像的大小為3×3,該圖像也稱為特征圖(圖1)。

這樣會造成輸入與輸出的尺寸不一致,為了實現更深層的復雜卷積神經網絡模型構建,需要保證特征圖尺寸縮小不能過快,這就是使用填充值(padding)的原因。Valid卷積和Same卷積是常用的兩種卷積類型,Valid卷積指不使用填充,而Same指使用填充來保證輸出特征圖尺寸與輸入特征圖尺寸相同。步長(stride)也是卷積操作需要設置的一個參數,表示卷積核在特征圖上每次卷積移動的像素個數。卷積層的輸入與輸出尺寸可通過式(1)計算,
(1)
其中,w與h指特征圖的寬和高,k為卷積核尺寸,p為填充的像素個數,s為卷積核滑動步長。以圖1為例,卷積層的具體計算式為:
(2)
式中,ai,j為輸出特征圖中第i行第j列的特征值,wm,n為卷積核第m行第n列的權值,b為偏置值,f為激活函數。
一個卷積核對圖像卷積后得到一張新的特征圖,若有多個卷積核,則在卷積后會得到多張特征圖。
池化層在卷積神經網絡結構中的主要作用是對特征圖的降采樣。在圖像分類任務中,模型無需學習目標對象的位置,但是必須保證物體所處的位置對模型最終的識別結果沒有影響。池化層的特點就是能保證平移和旋轉等變換的不變性,增強模型的魯棒性。同時,池化的降采樣過程使特征圖尺寸縮小,減少了模型的計算量,但卻能較好保持高分辨率特征。通常,卷積神經網絡模型中的池化層級聯在卷積層后,常用的池化類型有均值池化(Average pooling)和最大池化(Max pooling)。均值池化指對池化所在窗口上特征圖的所有值取平均,最大池化即取池化窗口所在區域特征值的最大值作為下一層特征圖特征值。
全連接層在模型的最后部分充當分類器的作用,將卷積層與池化層學習的特征拉伸為一列特征向量,經過多層全連接層后使用激活函數輸出得到每個類別的概率。Softmax[7]是多分類任務中常用的激活函數,假設有m個訓練集樣本{((x(1),y(1)),…,(x(m),y(m)))},標簽y(i)∈{1,2,3,…,k}共k類,輸入樣本x對應輸出類別為j的概率為式(3)。
(3)
可見在輸入樣本x條件下預測x的類別為1至k的概率之和為1。
本研究的目標是將圖像輸入網絡模型中,模型就可以對圖像進行一系列操作,將圖像特征提取出來,這樣就可以提取得到圖像的特征,抽象出每種服裝風格對應的屬性,這樣就可以將服裝風格和屬性特征一一對應,將每種風格進行了分類。
針對復雜圖像特征線性不可分的問題,需要在卷積神經網絡結構中加入非線性因素。引入激活函數,可以增加網絡非線性表征能力,更好地解決復雜問題。激活函數一般連接在卷積層后對特征值進行非線性映射,常見的激活函數有Sigmoid[8]、Relu[9]、tanh[10]和PRelu[11]函數。
Sigmoid函數值域范圍為(0,1),tanh值域范圍為(-1,1),其表達式分別為式(4)、式(5)。
(4)
(5)
由于函數Sigmoid和tanh的飽和性,使得在輸入絕對值較大時,容易發生梯度消失現象,導致網絡訓練困難。Relu激活函數的提出,有效地解決了上述兩種激活函數的問題,其定義為式(6)。

(6)
Relu激活函數在輸入為負值時的激活值為0,這在一定程度上增加了網絡的稀疏性,從而加速了訓練。PRelu激活函數是對Relu激活函數的改進版本,區別在于當輸入值為負值時,激活值不再是0,其表達式如式(7):

(7)
其中,a初始值一般設置為0.25,可通過訓練學習調整。近年來,卷積神經網絡中使用Relu激活函數較多,也有研究考慮使用PRelu激活函數,而使用Sigmoid和tanh激活函數較少。
使神經網絡學習獲得高準確率的一個重要措施就是增加數據集的容量,給網絡輸入足夠大的數據量,網絡才可以獲得更高的學習率。因此,本研究采用2種方式來增加文中數據集,利用爬蟲從網絡爬取了20 000+的圖片作為文中所需數據集。
(1)對數據集進行人工標注
從網絡上面爬取的圖片存在很大的誤差,需要人工去除其中錯誤的分類。因此,根據每種服裝風格的特點,對爬取的數據集進行人工篩選,得到正確的分類。正確分類前后效果如圖2所示。

圖2 分類前后對比圖
(2)完善及擴充數據集
本研究的研究對象是服裝,具有高可變性,從不同的角度也會得到不同的屬性特點,因此,為了減少模型學習過程中的錯誤,對同一張圖片進行了多種處理,用Photoshop對圖片進行反轉,改變像素大小等方式,一張圖片就可以得到多個數據集。最終得到了100 000+圖片,形成輸入數據集。
2012年舉辦的ImagNet圖像識別競賽上,Alex Krizhevsky設計的AlexNet卷積網絡模型實現了57.1%的top-1準確率和80.2%的top-5準確率。相比于當時的傳統機器學習算法,其性能具有極大的提升。
AlexNet結構圖如圖3所示,其輸入原始圖片的大小為256×256的彩色三通道圖像,輸入層通過隨機裁剪獲取大小為227×227的增廣數據集。模型由8個卷積層、3個池化層以及3層全連接層構成,隨著層次的增加,特征圖尺寸逐漸縮小,但特征圖數目逐漸增加。全連接層的神經元個數為4 096,對應的值是原始圖片通過卷積和池化得到的特征向量,最后送至Softmax分類器中實現對18類服裝風格的識別。該結構采用Relu激活函數,避免了梯度消失的問題從而使網絡收斂更快。針對網絡可能出現過擬合的問題,本研究提出使用數據增廣、權值衰減以及dropout[6]的正則化方法,來增加模型的泛化能力。

圖3 AlexNet結構圖
本研究將AlexNet的各模塊進行耦合,形成一個完整的網絡。該方法可以對輸入圖片進行像素格式化,按照227×227的格式輸入到模型,然后對每一幅圖像進行卷積池化等一系列操作,通過損失函數,優化算法,定義網絡模型精度,用測試集對參數進行修改等操作,提高訓練參數的準確度。
為了簡化測試環節,本研究前期用兩類數據集進行訓練,用了25 000訓練集,5 000測試集,在電腦上面迭代5次,運行了5個小時,準確率可以達到40%,如圖4所示。

圖4 AlexNet運行
將本研究中的方法用于服裝風格中的百搭和淑女兩個類別進行測試,針對25 000訓練集,5 000測試集,迭代10次,運行了18個小時,準確率可以達到75%,圖5為采用本研究方法處理結果的一組效果圖。

圖5 訓練模型對輸入圖像的預測
輸入未加標簽時圖6給出的圖像,讓模型對圖像進行分析,并將它轉化為數據化表示,然后根據訓練學習的數據和它進行比對,最后將它放入一個歸類。這些圖片是已經打上標簽的,對于預測結果和標簽結果相同的標簽正常顯示,預測結果和標簽結果不一致的標簽用紅色顯示,結果如圖6所示。

圖6 訓練模型對測試集的預測
本研究針對服裝風格識別這一重要領域,用圖像增廣技術對圖像進行擴展來增加訓練集的數據量,采用AlexNet卷積神經網絡進行建模,采用分類精度更高的深度學習網絡,具有較高的可用性,但是服裝風格復雜多樣,對于實際生活中的服裝風格精確識別還需更進一步的深入研究。