張 怡 ,侯 玨,2,劉 正,2,3
(1.浙江理工大學 服裝學院,浙江 杭州 310018;2.浙江省服裝工程技術研究中心,浙江 杭州 310018;3.服裝數字化技術浙江省工程實驗室,浙江 杭州 310018)
近年來,服裝款式造型設計趨向多樣化、個性化,對于經營者而言,服裝產品的展示顯得尤為重要。但是,目前大多數電商平臺對于服裝的細節要素展示并未做詳細分類,導致消費者在檢索某個類別的服裝時,會涌現出大量信息而無法進行細致的篩選,難以找到心儀的款式[1-2]。服裝細節要素特征通常存在于特定的部件區域處[3],如衣服的領部、袖口、門襟等部件,由于一件服裝包含多個部件且整張服裝圖像中部件的占比面積較小,需要搭建同時實現部件定位與分類的算法。
相較于傳統識別方法,深度學習[4]具有自動特征提取、識別效率和精度高的特點[5],現有的深度學習目標檢測算法大致分為2類:一階段檢測算法,典型代表是YOLO[6]、SSD[7]及其衍生模型[8];二階段檢測算法,典型代表是R-CNN系列[9-11]。相較于一階段方法,二階段方法對圖像質量要求低,但檢測精度高且對小目標的檢測效果較好[12]。目前已有學者將深度學習應用于服裝屬性識別,XIANG等采用改進RCNN框架的方法來識別襯衫的領、袖等屬性[13];劉正東等提出基于尺寸分割和單次多盒檢測(SSD)的西裝領增強檢測算法[14];尹光燦等通過人工截取領型區域并微調AlexNet卷積神經網絡模型的超參數,實現服裝領型的識別[15];張艷清等通過擴大衣領的框選范圍,探討數據集標注對Faster R-CNN識別連衣裙衣領的影響[16];SUN等提出了一種基于Faster R-CNN和多任務學習的服裝屬性識別方法[17]。上述研究對提高服裝屬性的識別率作出了一定貢獻,但未特別關注小目標部件細節特征的識別,且未考慮收集到的各類別樣本數量不均衡的問題。外觀細節特征的差異所帶來的視覺感受不同,對服裝風格的塑造也有一定的影響,為了獲得服裝部件的細節特征信息,需要對圖像進行多尺度識別,現有模型如GoogleNet[18]、SSD[7]、FPN[19]等均采用多尺度技術來提高識別效果,但該技術會增加網絡負擔,降低模型效率。
本文以襯衫領部為研究對象,根據領部的細節構成要素對基礎領型進一步劃分,提出了一種循環結構的Faster R-CNN網絡模型,實現襯衫領部細節特征的識別分類。針對類別間樣本數量不均衡問題,采用權重懲罰方法有效提高了模型的檢測精度。襯衫領部的精確細分有利于縮小檢索范圍,能夠更好地滿足消費者的需求,并且可根據消費者的喜好提高服裝設計和生產的針對性。
REN等提出了Faster R-CNN[11],該網絡由主干特征提取網絡、區域建議網絡(RPN)、回歸分類網絡3部分組成,采用卷積神經網絡生成候選框[20],減少了內存消耗,大幅度提升了檢測精度與速度[21]。
本文提出了一種以Faster R-CNN為基礎的具有環路的網絡結構,循環利用網絡組件對圖像進行二級細節特征的識別,將其命名為“循環Faster R-CNN”,網絡結構如圖1所示,其中包含一級識別和二級識別2部分。

圖 1 循環Faster R-CNN網絡結構Fig.1 Recurrent Faster R-CNN network structure
圖1中,一階段RPN結構如圖1左下方黑色虛線框內所示,其包含2個分支:分支1把特征圖分割成多個小區域,識別出前景與背景區域;分支2用于獲取前景區域的大致坐標。在此基礎上通過區域建議層Proposal篩選掉偏移量過大及相互重疊的候選框,此時獲得建議框,利用建議框在特征圖上截取,得到的不同特征層反映原圖中的不同位置,截取到的內容傳入二階段Fast R-CNN中,如圖1右下方紅色虛線框內所示,ROI Pooling層將截取到的不同大小的特征層區域轉化為固定尺寸,通過全連接層映射到一個特征向量,利用回歸分類網絡判斷截取到的圖片中是否包含目標,并對建議框進一步調整,最終獲得更精確的目標識別框和分類結果。
二級識別是在一級識別的基礎上對領部的細節特征進行識別,為了在不增加網絡負擔的同時提高細節特征的識別效果,將一級識別網絡識別的領部邊界框截取,再次喂入主干網絡Resnet50,提取并學習領部的細節特征,最后連接全連接層,實現襯衫領部的二級識別,如圖1正上方藍色虛線框內所示。
采用Faster R-CNN作為一級識別網絡,其中主干特征提取網絡選擇文獻[22]中的Resnet50層結構。Resnet50層結構中,每個殘差結構包含 3個卷積層,該網絡一共包含1+3×(3+4+6+3)=49個卷積層和1個全連接層,作為主干特征提取網絡時去除其中的全連接層,只留下卷積層,輸出下采樣后的特征圖。獲得的特征圖有2個應用,一個輸入到RPN中,另一個是和ROI Pooling結合使用。
本文可視化了Resnet50在訓練領部圖像過程中的特征圖,輸入的原始圖像見圖2(a),由于只有卷積層包含訓練參數,圖2(b)~(f)展示了Resnet50不同層學到的前12張特征圖。

(a) 輸入的原始圖像

(b) conv1

(c) conv2_x

(d) conv3_x

(e) conv4_x

(f) conv5_x圖 2 Resnet50不同層輸出的特征圖Fig.2 Feature maps output from different layers of the Resnet50
圖2中,淺層的卷積層主要學習圖像的紋理和角點信息,隨著網絡的加深,學到的信息越來越復雜和抽象化,結果顯示網絡中的卷積核均可提取到有效特征信息。
Faster R-CNN網絡的損失函數包含分類損失和回歸損失2部分,表示為
(1)
式(1)等號右側前半部分為分類損失,后半部分為回歸損失。分類過程采用交叉熵損失函數,可表示為
(2)
回歸采用smoothL1函數,可表示為
(3)
(4)

本文所提出模型的一級識別損失函數同式(1)。由于二級識別任務是對領部區域進行更細致的類別劃分,因此,損失函數只包含分類損失,計算公式同式(2)。
從天貓、唯品會等電商平臺搜集1 375張平面擺放的襯衫圖像作為樣本集,裁剪去除圖像中雜物、文字說明等信息,圖3所示為樣本集中各類襯衫領型示例。

圖 3 各類襯衫領型示例Fig.3 Examples of various shirt collar types
為提高模型的魯棒性與抗干擾性,對裁剪好的圖片進行批量旋轉,旋轉角度依次為順時針 0°、90°、180°、270°,將原本1 375張襯衫圖像擴充為原來的4倍,即5 500張圖像。運用數據集標注工具 LabelImg以領部為邊界對樣本圖像進行準確標注,形成包含圖像名稱、尺寸、讀取路徑、標記框標簽和坐標的標注文件,用于模型訓練過程中讀取數據。
衣領按照領線和領子的組合方式,可分為有領和無領2類[23]。有領是指在領線上裝有各種不同形式的領子,無領是指只有領線而無領子的領型。一級類別為常見的襯衫領型,其中有領領型包含翻立領、翻領、立領、飄帶領,無領領型包含圓領、V領、方領,采用標簽collar1~collar7表示各一級類別。
由于同一領型可以采用不同的結構形式進行裝配制作,所呈現出的外觀細節特征不同,在視覺感觀上也有所差別,將一級類別中包含的領型按照其組成結構以及裝配元素進行分析歸納,從而形成更精細化的二級類別,采用標簽craft1~craft13表示各二級類別,具體的劃分方式如下:翻立領是由領座和領面2部分經工藝裝配相接而成,結構相對固定單一,標簽為craft1,樣本數量為1 200;翻領可分為連翻領和平翻領,連翻領的領座和領面是一體的,領子縫制于衣身上自然翻折形成領座和領面2部分,標簽為craft2,樣本數量為360,而平翻領只有領面而無領座支撐,領子平攤在衣身上標簽為craft3,樣本數量為360;立領類別的劃分中,常規立領是只含有領座結構的領型,標簽為craft4,樣本數量為440,帶花邊立領是在領座的基礎上添加花邊裝飾元素,標簽為craft5,樣本數量為360;飄帶領是由立領延伸形成的帶有飄帶裝飾的領子,標簽為craft6,樣本數量為400;圓領類別中,常規圓領是指領口形狀為圓形且不含其他元素的基礎領型,標簽為craft7,樣本數量為360,帶花邊圓領是在常規圓領的基礎上增加了花邊裝飾元素,標簽為craft8,樣本數量為320;抽褶圓領是指領口形狀為圓形且含有褶皺元素的領型,標簽為craft9,樣本數量為320;V領和方領的分類方式類似圓領,分為常規V領、帶花邊V領、常規方領、帶花邊方領,標簽分別為craft10、craft11、craft12、craft13,樣本數量分別為320、360、340、360。同屬于一個一級類別下的二級子類別間領型差異較小,需要提取領部的細節特征進行識別分類。
對所收集到的數據集分析顯示,在眾多襯衫領型當中,翻立領樣本占比最高,比例約為21.82%,其他類別的樣本數量相對較少。各類別圖像數量不一致將造成模型的識別精度降低,為解決類別間樣本不均衡問題,通常采用的解決方法有數據擴充和權重懲罰。前者采用圖像變換和添加擾動的方法擴充數量少的類別樣本,需要增加樣本處理的時間;后者對損失函數進行權重賦值,使得樣本數量少的類別獲得更大的損失權重,模型在迭代更新的過程中能夠專注于減少少數類的誤差。
本文采用權重懲罰法,設定了3組類權重。類權重1分別賦予各類別與其各自樣本量成反比的類權重,使得類權重達到平衡狀態[24],表達式為
wj=Nt/(M×Nj)
(5)
式中:j表示類;wj為每個類的權重;M為類別總數;Nj為每個類的樣本數量;Nt為樣本總數。
類權重2和3只針對性地降低最多類的權重,使模型關注于其他類別的檢測,迭代過程中的參數主要根據其他類別的損失進行優化。類權重2中最多類的權重根據collar2~collar7樣本平均數與collar1樣本數之比得到;類權重3中最多類的權重根據collar4和collar6樣本平均數與collar1樣本數之比得到。各類別對應的類權重如表1所示。

表1 類權重設定Tab.1 Class weight setting
本文網絡模型的搭建和訓練均通過Python3.7軟件和Pytorch框架實現,系統環境為Windows10的64位操作系統,硬件設備參數為32 GiB內存、Intel i7-10700K處理器和RTX 3090顯卡。
在一級識別網絡中,設定(訓練集+驗證集)與測試集的比例為9∶1,訓練集與驗證集的比例也為9∶1,將數據集按上述比例進行隨機劃分。參數設置:MaxEpochs為100,凍結訓練Epochs為50。初始學習率為0.000 1, 更新學習率的乘法因子數值為0.95。進行二級識別時,將截取后的領部圖像按9∶1的比例隨機劃分為訓練集和測試集,再次輸入主干網絡Resnet50,訓練迭代次數為50。
本文采用平均精度 (average precision,AP)、mAP等目標檢測常用指標進行模型性能的評價。AP為PR曲線下的面積,用于衡量訓練出的模型在每個類別上的檢測精度。mAP即平均AP值,衡量訓練出的模型在所有類別上的檢測精度,是目標檢測中一個最為重要的指標。
同時,本文采用混淆矩陣、準確率、精確率、召回率和F1分數評判分類模型的優劣。
3.3.1 一級識別網絡訓練過程與結果分析
一級識別網絡訓練過程中各部分的損失值隨訓練迭代次數的變化曲線如圖4所示,rpn_cls和rpn_loc分別代表RPN訓練階段的分類和回歸損失,roi_cls和roi_loc分別代表Fast R-CNN訓練階段的分類和回歸損失,Train Loss代表訓練集總損失,Valid Loss代表驗證集總損失。

圖 4 一級識別網絡訓練損失Fig.4 First-level recognition network training loss
從圖4可以看出,在總體訓練過程中,RPN階段的分類和回歸損失訓練始終很小,保持在0.06以下,而Fast R-CNN階段的分類和回歸損失相比于RPN大很多,這是由于RPN階段是對目標區域進行粗略的篩選,而在Fast R-CNN階段再進行精細的調整。30個訓練迭代次數后,損失值的波動速度降低,最后趨于穩定,最終訓練集和驗證集的總損失分別為0.340 3和0.329 6,模型收斂效果較好。
將測試集輸入訓練好的網絡進行性能測試,圖5顯示了模型在一級類別上的AP值。

圖 5 一級識別結果Fig.5 First-level recognition results
從圖5可以看出,一級識別網絡在所有類別上都具有較高的AP值,通過計算可知mAP約96.23%,模型對于翻立領(collar1)和翻領(collar2)的檢測精度最好,AP分別為99.92%和99.25%,這是由于這2類領型都帶有領面,特征較明顯,易于識別。模型對于其他領型的檢測精度依次降低,其中方領(collar7)的領角呈方形,形狀特征較具有辨識度,AP約98.57%,而立領(collar3)雖然含有領座,但仍然具有圓領(collar5)的形狀特征,可能被識別錯誤,由于翻立領,翻領,飄帶領的內領形狀可能呈V型,若V領(collar6)帶有貼邊或裝飾,會產生多個預測框,且collar4和collar6的樣本數量較少,使得這兩類檢測精度最低。
3.3.2 類權重對一級識別結果的影響
各個類權重方案在同一測試集下的檢測精度如圖6所示。

圖 6 各類權重一級識別結果Fig.6 First-level recognition results of various weights
從圖6可以看出,類權重改變對mAP有不同程度的提高,類權重3對于模型精度的提升效果最好,mAP約98.79%,這是由于類權重3根據特定少類別(樣本量少且AP較低)與最多類的樣本比例去賦予最多類更小的權重,降低了模型對最多類的關注度,并且類權重3的訓練損失最低,訓練集和驗證集的總損失分別為0.307 4和0.291 0,模型的收斂程度最高,因此將樣本數量占比最高類加權系數來控制權重,能夠有效提升模型的檢測精度。
3.3.3 二級識別結果分析
將測試集輸入訓練好的二級識別網絡,圖7是二級分類結果的混淆矩陣,橫軸表示真實標簽,縱軸表示分類結果。

圖 7 二級分類結果混淆矩陣Fig.7 Confusion matrix for secondary classification results
從圖7可以看出,預測值在主對角線上分布密集,表示絕大多數樣本都被正確地分類,在550張測試圖片中,只有16張圖片分類錯誤,準確率達到了97.09%,最終模型在測試集上每個類別的精確率、召回率、F1分數的平均值分別為96.74%、96.89%、96.70%。由于截取后的圖像只包含領部區域,能夠突出目標,模型對于領部二級細節特征的識別分類效果較理想。
將循環Faster R-CNN的一級識別網絡與一階段檢測算法YOLOv3在襯衫領部的二級類別上分別進行訓練和測試,檢測精度如圖8所示。

圖 8 二級類別檢測精度對比Fig.8 Secondary category detection accuracy comparison
從圖8可以看出,一級識別網絡對于二級類別的mAP約92.17%,相比于一級類別的檢測精度降低了約4.06%,一級識別網絡不適合直接用于領部二級細節特征的識別分類。而YOLOv3在所有類別上的檢測效果均不及一級識別網絡,且mAP下降約4.97%。圖9為測試集中二級類別檢測結果示例。

(a) 一級識別網絡

(b) YOLOv3圖 9 二級類別檢測結果示例Fig.9 Examples of secondary category detection results
從圖9可以看出,YOLOv3網絡存在預測區域不準確和漏檢的情況,檢測效果相對較差,原因是YOLO網絡對小目標不夠敏感,容易漏檢,不適用于襯衫領部識別。
本文以襯衫領部為研究對象,提出了一種基于循環Faster R-CNN的襯衫領型精確識別方法,將襯衫領部根據常見領型以及細節構成要素劃分為兩級類別,先利用一級識別網絡Faster R-CNN實現襯衫領部的自動識別與截取,再循環利用該網絡中的主干特征提取網絡,連接全連接層,完成領部二級分類。為提升少樣本類別的檢測精度,解決襯衫領型類別間樣本不均衡問題,采用權重懲罰方法設定類權重,改進后網絡的mAP由96.23%提高到98.79%。在一級識別網絡識別到領部時將其邊界框進行截取,截取后的圖像只包含領部區域,能夠突出目標,二級網絡的分類準確率為97.09%,模型具有較好的分類性能。實驗結果顯示,相比于YOLOv3算法本文網絡更適用于襯衫領部細節特征的識別,模型具有一定的泛化能力,可以將其擴展到服裝其他部件的精確識別。