庹 武,郭 鑫,張啟澤,劉永亮,杜 聰,魏新橋
(中原工學院 服裝學院,河南 鄭州 451191)
伴隨著服裝電子商務的迅速發(fā)展,服裝的款式和類別也在日益增加。電商平臺為了方便服裝的管理進而縮小用戶檢索時間和檢索范圍,需要對每個商品進行歸類,貼上相應的標簽。但是面對日益增長的服裝圖像數(shù)據(jù),采用人工標注和分類的方式不僅耗時耗力而且效率低,且人工分類也容易受到個體主觀差異性的影響[1]。因此,亟需研究關(guān)于服裝可視化分類問題,來提高識別準確率。
近年來,國內(nèi)外諸多學者對紡織服裝領(lǐng)域中圖像處理技術(shù)進行了廣泛而深入的研究。早期階段多使用傳統(tǒng)機器學習方法,諸如邏輯回歸、支持向量機和感知機等,然而這些常用于處理線性模型。隨著深度學習的興起,在處理大規(guī)模數(shù)據(jù)時,相較傳統(tǒng)機器學習方法,深度學習模型更能發(fā)揮優(yōu)勢[2]。其中尹光燦等[3]提出了一種基于AlexNet卷積神經(jīng)網(wǎng)絡的服裝領(lǐng)型識別與分類方法,經(jīng)過數(shù)據(jù)增強后的分類準確率達到了98.67%,是解決服裝領(lǐng)型識別分類困難問題的有效方法,但由于其數(shù)據(jù)集選取的是去除背景的白底圖片,并不適用于真實出現(xiàn)的所有場景。真實場景中,除了服裝信息之外不可避免的會包含部分背景信息而且擺放和穿著狀態(tài)的不同也會直接影響識別效果。陳巧紅等[4]基于Xception基礎(chǔ)網(wǎng)絡結(jié)構(gòu),融合SE-Net注意力機制模塊增強有用特征通道,運用多尺度的深度可分離卷積來提升模型特征元素的種類,提出了一種多尺度SE-Xception模型,在ACS服裝數(shù)據(jù)集上訓練,與其他常用模型相比具有更高的魯棒性。王鑫等[5]提出使用遷移學習的思想運用于不同服裝識別任務中,使用最大均值差異損失和權(quán)重約束損失函數(shù)的遷移學習方法有效增強了目標域服裝的識別訓練精度,提升了2個百分點。吳歡等[6]提出一種基于CaffeNet卷積神經(jīng)網(wǎng)絡模型來提取女褲輪廓信息,實現(xiàn)包括小腳褲、直筒褲、闊腿褲、吊襠褲和喇叭褲5種女褲廓形分類。但其數(shù)據(jù)集挑選的只是白色干凈背景并且平整擺放的女褲圖像,并不適用于電商平臺中模特穿著效果圖的女褲廓形分類。
針對目前所存在的問題,研究多為上裝、下裝款式分類,還沒有較為完善的服裝關(guān)鍵部位的分類方法。各大電商APP中以圖搜圖技術(shù)主要根據(jù)服裝整體輪廓、色彩、紋理等推薦出同種款式,該技術(shù)適用于檢索目標明確的查詢要求,但傳入服裝單個部位的圖片就會產(chǎn)生極大的誤差,甚至推薦出其它不相關(guān)商品。因此,為實現(xiàn)服裝袖型的可視化分類,本文提出一種融合通道注意力機制的SE-Inception v3模型進行遷移學習訓練的袖型識別與分類方法,最終實現(xiàn)了以袖型為例的服裝單個部位的識別與分類,為解決用戶快速篩選和個性化推薦的需求提供了有力支撐。
結(jié)合電商平臺常見的款式按照不同形態(tài)的服裝袖子,選取以泡泡袖、插肩袖、蝙蝠袖、襯衫袖、落肩袖、藕型袖、羊腿袖、燈籠袖8類為主的服裝袖型作為分類樣本。采集時確保圖片中袖子部位沒有被其它物體大幅遮擋。收集來自淘寶、天貓等各大電商平臺對應服裝袖型圖片,每種類型200張,共計1 600張,袖型樣本均為JPG格式。
因各大電商平臺服裝圖片多為模特穿著效果圖,為了還原真實穿著場景,袖子圖片選用模特穿著狀態(tài)和平鋪展示狀態(tài)2種形式,包含不同角度拍攝的圖片,并且保留了原始背景。每個款式的外部輪廓包含大量的特征信息,整個數(shù)據(jù)集中袖子的紋理和色彩也各有差異,這些作為主要的判別途徑。為避免服裝其它部位對袖型分類的干擾,凸顯有效特征區(qū)域,采用圖片裁剪的方式裁剪出圖中袖子部分。截取時盡量減小圖片間尺寸差距,這樣采集的圖像作為數(shù)據(jù)集,會使訓練出的模型更具魯棒性。裁剪的依據(jù)主要是能夠呈現(xiàn)出不同袖型的整體輪廓,保證裁剪區(qū)域中袖子整體完全包含在圖像內(nèi)。使用Labelimg軟件進行標記,對收集好的服裝穿著效果圖在袖子部位打標簽,生成.xml文件,遍歷所有的目標框,獲取坐標后利用python-opencv庫對標簽位置坐標進行批量處理,裁剪出圖片中的袖子部分,8類袖型樣本實例如圖1所示。
圖1 8類袖型樣本實例Fig.1 8 Examples of sleeve-type samples.(a)Puff sleeve; (b)Raglan sleeve; (c)Off shoulder sleeve; (d)Bat sleeve; (e)Lotus shaped sleeve; (f)Shirt sleeve; (g)Leg-of-mutton sleeve; (h)Lantern sleeve
為防止因數(shù)據(jù)集過小而導致模型過擬合問題,采用數(shù)據(jù)增強的方式來擴充數(shù)據(jù)集。常用的數(shù)據(jù)增強方式有水平翻轉(zhuǎn)、垂直翻轉(zhuǎn)、增加噪聲、圖像變暗或變亮、隨機色調(diào)、隨機飽和度和隨機對比度等。
本文使用Opencv庫對原始圖片數(shù)據(jù)集的彩色3通道圖像進行色彩上的調(diào)整,隨機調(diào)整部分圖像的飽和度和對比度、降低部分圖像的亮度、隨機旋轉(zhuǎn)20°、添加椒鹽噪聲和高斯噪聲,來模擬圖片存在噪聲和角度不正的情況。每種類型增廣至400張,共擴充數(shù)據(jù)集數(shù)量至3 200張。添加高斯噪聲樣本實例如圖2所示,添加椒鹽噪聲樣本實例如圖3所示。
圖2 添加高斯噪聲樣本實例Fig.2 Add Gaussian noise sample instance
圖3 添加椒鹽噪聲樣本實例Fig.3 Add pretzel noise sample instance
根據(jù)Inception v3模型輸入要求,把經(jīng)數(shù)據(jù)增強后的3 200張圖像集中進行resize處理,統(tǒng)一調(diào)整為299像素×299像素,使不同大小的圖像在同一層具有相同的感受野,較好地匹配模型輸入。采用Opencv庫中cv2.resize()的雙線性插值方式,該插值方式充分地利用了源圖中待采樣點周圍的4個直接鄰點的像素值,來共同決定目標圖中采樣點的像素值。首先根據(jù)長邊和目標尺寸計算出縮放比例,再將圖片按比例進行縮放處理,計算出需要填充的像素長度后使用cv2.copyMakeBorder()方法對短邊進行全0填充。Resize處理樣本實例如圖4所示。采用增加padding的處理方式可以保證圖像在不失真、不變形的情況下,更好地匹配模型的輸入輸出,確保袖型特征的有效提取。
圖4 Resize處理樣本實例Fig.4 Resize handles sample examples
作為各種應用類型的骨干網(wǎng)絡,圖像識別和分類的網(wǎng)絡架構(gòu)有很多,從AlexNet[7]開始,到VGG[8]、GoogLeNet[9],再到ResNet[10]、DenseNet[11]等。隨著模型的結(jié)構(gòu)和方法不斷地改進,分類精確度也逐步提高,模型也逐漸趨于穩(wěn)定。本文采用Tensorflow深度學習框架,選取了GoogLeNet的Inception v3模型作為網(wǎng)絡訓練主干模型,Inception v3模型結(jié)構(gòu)如表1所示。
表1 Inception v3模型結(jié)構(gòu)Tab.1 Structure of the Inception v3 model
該模型主要引入了分解的思想,基于GoogLeNet的核心基本單元Inception結(jié)構(gòu)塊來搭建網(wǎng)絡模型。Inception結(jié)構(gòu)塊如圖5所示,卷積和池化同步進行,來減少服裝袖型圖像特征的丟失。模塊A將5×5卷積分離成2個3×3卷積,卷積分解后模型在訓練過程中不僅減少了參數(shù),還降低了計算量,同時提高了網(wǎng)絡對多尺度的適應性,有助于多種尺寸服裝袖型圖像的特征提取。模塊B在中度大小的feature map上使用非對稱卷積從深度展開,用1×n卷積拼接一個n×1卷積替換n×n卷積來減少參數(shù)和計算量,從而提升服裝袖型圖像在特征提取時的計算效率。模塊C使用非對稱卷積從寬度展開,增加維度信息,提升模型的感知力[12]。Inception每個結(jié)構(gòu)塊包含4個分支,卷積連接器會將每個分支送入的特征數(shù)據(jù)按照深度方向拼接,并行處理最終形成Inception結(jié)構(gòu)塊的輸出[13]。
圖5 Inception結(jié)構(gòu)塊Fig.5 Inception structural block
引入通道注意力機制,將SE(Squeeze-Excitation)模塊[14]添加到Inception特征提取模塊之后,使模型選擇性地關(guān)注重點目標區(qū)域。其核心是通過2個全連接層和激活函數(shù)實現(xiàn)參數(shù)值轉(zhuǎn)化為權(quán)重的操作,并進行權(quán)重的自我學習。用得到的權(quán)重矩陣衡量區(qū)域的重要性程度,對原始特征進行重構(gòu),得到新的特征圖。本文通過融合通道注意力機制SE-NET和原始Inception結(jié)構(gòu)的特征學習過程,把權(quán)重參數(shù)匯聚至需要重點關(guān)注的袖子部位,抑制背景等無關(guān)特征的影響,從而提升對不同袖型的識別精確度。SE結(jié)構(gòu)示意圖如圖6所示,主要分為以下3個操作完成特征重構(gòu)。
圖6 Sequeeze-Excitation結(jié)構(gòu)示意圖Fig.6 Schematic representation of the Sequeeze-Excitation structure
①Squeeze(Fsq)操作:Inception模塊的輸出U作為SE模塊的輸入,讓其經(jīng)過Fsq做1次Squeeze變換,先執(zhí)行全局平均池化,如式(1)所示,將每個通道上空間信息(H,W)壓縮到對應通道中,變?yōu)?個實數(shù)值,此時1個像素值表示1個通道,最終維度變?yōu)?×1×c,使其擁有全局感受野。
(1)
式中:H為二維矩陣高度;W為二維矩陣寬度;c為通道特征數(shù),i和j表示該特征圖橫縱坐標點分別為i和j的值,其中U∈RH×W×c。
②Excitation(Fex)操作:將第1步得到的zc送入由2個全連接層組成的Bottleneck結(jié)構(gòu)中,去構(gòu)建全局特征通道間的相關(guān)性,增加模塊的非線性能力和擬合能力,為每個特征通道生成1個權(quán)重值Sc,來代表特征通道的重要程度,圖中用不同顏色表征不同權(quán)重。
Sc= Fex(zc,W)=σ(W2δ(W1zc))
(2)
式中:δ為激活函數(shù)Relu;σ指代sigmoid函數(shù);W1和W2對應2個全連接操作,其中S∈R1×1×c。
③Scale(Fscale)操作:利用上一步得到的歸一化權(quán)重值Sc加權(quán)到原始輸入U的每個通道特征上,即逐個通道乘以相對應的權(quán)重系數(shù),完成特征圖的重校準。
U′=Fscale(U,Sc)=Sc×U
(3)
式中:Sc為權(quán)重值;U為SE模塊的輸入值,其中U′∈R1×1×c。
在實際圖片分類任務中,并不一定有大量的樣本數(shù)據(jù),但數(shù)據(jù)往往又是最重要的那一部分,如果從頭訓練一個模型,泛化能力并不一定好。在這種情況下,遷移學習就成了理想選擇,可以先利用大批量現(xiàn)存數(shù)據(jù)進行模型訓練,提取到圖像的淺層特征,使其具備特征提取能力,然后遷移運用到另外一個目標領(lǐng)域。通過改變這個模型語義層面的參數(shù),從而更快速地得到一個較高的識別準確率[15]。
本文中所使用的遷移學習訓練是把在ImageNet大型數(shù)據(jù)集中訓練出的特征參數(shù)應用于服裝袖型分類任務中,創(chuàng)建一個新的全連接層(FC)和softmax層,對改進的部分進行重新訓練,以一個較快的速度和精度完成模型的訓練和分類任務。其中基于SE-Inception v3袖型識別簡化模型與重訓圖如圖7所示。
圖7 基于SE-Inception v3袖型識別簡化模型與重訓圖Fig.7 A simplified model and retraining diagram based on SE-Inception v3 sleeve type identification
分類模型輸出層中常用作分類的激勵函數(shù)有sigmoid和softmax函數(shù),但sigmoid函數(shù)常用來處理二分類問題,因sigmoid函數(shù)會將神經(jīng)元的輸出值壓縮到(0,1)之間,使得參數(shù)更新時連乘結(jié)果越來越小,造成梯度消失的現(xiàn)象。針對本文多分類問題,softmax函數(shù)可以很好地將輸出值以概率的形式輸出。對前向傳播的輸出結(jié)果Zi采用softmax激勵函數(shù)去線性化,來計算結(jié)果屬于某一類型的概率,處理結(jié)果用式(4)表示:
(4)
式中:Zi表示該網(wǎng)絡前向傳播的第i個輸出值;yi代表經(jīng)softmax處理的第i個概率輸出值。
損失函數(shù)是用來量化預測值和真實值之間的差距。常用的損失函數(shù)有MSE均方損失和Cross Entropy交叉熵損失。均方損失常用于回歸任務中,求出的是實際值和預測值差值平方和的均值。本文使用交叉熵損失函數(shù)來表征2個概率分布之間的距離,其具有受異常點干擾小、魯棒性好的特點,可以很好地度量2個概率分布之間的差異。因使用Tensorflow深度學習框架,交叉熵損失函數(shù)選用了tf.nn.softmax_cross_entropy_with_logits_v2()函數(shù)。帶入經(jīng)softmax函數(shù)處理后的交叉熵損失函數(shù)用式(5)表示:
(5)
最終得到的交叉熵越小,表明訓練模型與數(shù)據(jù)真實分布越接近,分類的效果越好。最后需要使用優(yōu)化算法將損失函數(shù)最小化。在高維模型中,調(diào)整學習率是很復雜的,學習率太大會使模型發(fā)散,學習率太小會使得參數(shù)收斂緩慢。為避免梯度下降算法每次訓練都使用全部樣本而造成計算冗余,且服裝袖型樣本較少,使用自適應學習率的Mini-Gradient Descent小樣本隨機梯度下降算法作為本文模型的優(yōu)化器來處理梯度計算和參數(shù)更新2個操作。
實驗計算機配置參數(shù):操作系統(tǒng)為Ubuntu 18.04,運算平臺為CUDA11.2,GPU為NVIDIA RTX 3090 24GB,數(shù)量為4個。CPU為Intel至強金牌6230處理器,20核心,L3 Cache,主頻2.10 GHz,數(shù)量為2個。訓練使用python語言,采用Tensorflow 2.0深度學習框架。
通過調(diào)節(jié)模型的超參數(shù):訓練迭代epoch設(shè)置為120,學習率設(shè)置為0.001 25,batchsize數(shù)量為8。
針對數(shù)據(jù)增強后的3 200張袖型樣本,采用8∶2的比例劃分訓練集和測試集,2 560(8×400×0.8)張作為訓練集,640(8×400×0.2)張作為測試集。通過數(shù)據(jù)增強的方法來豐富訓練數(shù)據(jù)的分布,一方面可以很好地提高模型泛化能力,另一方面,所增加的噪聲數(shù)據(jù)可以提升模型的魯棒性。在基于遷移學習的Inception v3模型上訓練過后,比較未經(jīng)數(shù)據(jù)增強和增強后二者測試集的準確率和召回率的改變程度,每種類型測試集樣本識別結(jié)果如表2所示。從表2可以看出,測試染數(shù)據(jù)增強后,準確率相較于原始數(shù)據(jù)集有顯著提升,平均識別精確度從92.01%提升到了94.23%。
表2 測試集樣本識別結(jié)果Tab.2 Test set sample identification results %
進一步分析模型誤判數(shù)據(jù)可知,復雜背景干擾、圖片拍攝角度多樣和手臂擺放姿勢不同對識別會有一定影響,是造成類型判別錯誤的主要原因,可以通過增加相應數(shù)據(jù)集的方式提升模型對以上問題的學習判別能力。
基于遷移學習的Inception v3模型輸入圖片參數(shù)對比如表3所示,分析實驗數(shù)據(jù)可知,直接使用resize放縮圖片尺寸到指定大小,會使得長寬比例較大的袖型圖因發(fā)生形變而造成紋理、邊緣特征的丟失,降低了識別準確率。在模型結(jié)構(gòu)不變時,使用resize加上padding縮放圖片,隨著尺寸的增加,由于可以識別到更多的細節(jié)特征,從而具有更高的識別精度,但是在尺寸增大到一定程度時,準確率的提升會趨于飽和,并且相比于小分辨率圖像其計算時間更長。綜合計算時間和效率,選取299×299的尺寸作為模型輸入是較為合適的。
表3 模型輸入圖片參數(shù)對比Tab.3 Model input picture parameter comparison
為了驗證本文改進方法的有效性,對經(jīng)數(shù)據(jù)增強后的數(shù)據(jù)集在相同參數(shù)的設(shè)置下做對比實驗,分別比較Inception v3從零開始訓練、基于Inception v3遷移學習訓練、基于改進的SE-Inception v3遷移學習訓練的準確率。袖型分類的準確率曲線如圖8所示,從圖中可以看出,遷移學習訓練比模型從零開始訓練的收斂速度更快、準確率更高。因其使用了預先訓練的權(quán)重參數(shù)來初始化,所以具有較高的起始精度,使得模型的初始性能更高。在訓練結(jié)束時,從曲線中可以看出,基于遷移學習訓練的模型收斂更好,具有較高的逼近精度。融合SE通道注意力網(wǎng)絡模型的準確率也比原始Inception v3網(wǎng)絡模型的準確率提升了1.15%。
圖8 袖型分類的準確率曲線Fig.8 Accuracy curve of sleeve-type classification
基于SE-Inception v3遷移學習訓練loss曲線如圖9所示,可以看出訓練集損失和測試集損失都是隨著迭代在不斷下降,網(wǎng)絡正常學習,沒有出現(xiàn)過擬合和欠擬合現(xiàn)象。
圖9 基于SE-Inception v3遷移學習訓練loss曲線Fig.9 Loss curve based on SE-Inception v3 migration learning training
對于相同數(shù)據(jù),經(jīng)數(shù)據(jù)增強后分別使用Resnet50、MobileNet V2、DarkNet 53、DenseNet 121與Inception v3、SE-Inception v3模型進行仿真實驗,6個模型訓練準確率對比如表4所示。分析實驗數(shù)據(jù)可得:基于遷移學習融合SE通道注意力機制的Inception v3模型的準確率更高、魯棒性更強,對服裝袖型進行分類識別效果最佳。
表4 不同模型平均分類準確率對比Tab.4 Comparison of average classification accuracy of different models
本文提出一種基于改進的SE-Inception v3卷積神經(jīng)網(wǎng)絡模型進行遷移學習訓練的服裝袖型識別與分類方法。首先對收集的圖片樣本進行預處理和數(shù)據(jù)增廣操作;其次在Inception模塊后嵌入通道注意力機制SE-NET,修改模型后層網(wǎng)絡,送入建立的服裝袖型圖像數(shù)據(jù)集,進行遷移學習和卷積、池化等特征提取操作訓練處理;最后通過調(diào)節(jié)網(wǎng)絡模型超參數(shù),得到了較高的分類精確度。實驗結(jié)果表明:
①通過數(shù)據(jù)增強的方法可以很好地提高模型泛化能力和準確性,基于遷移學習的Inception v3模型訓練,在數(shù)據(jù)增強前后平均識別精確度由92.01%提升到了94.23%。
②加入SE通道注意力機制有利于增強網(wǎng)絡識別精度,與在原始Inception v3模型上訓練相比提升了1.15個百分點。
③經(jīng)6種模型對比分析,改進的SE-Inception v3卷積神經(jīng)網(wǎng)絡模型具有優(yōu)良的服裝袖型款式識別能力,對于提升服裝關(guān)鍵部位可視化分類具有較高的應用價值。