朱淑暢, 李文輝
(1. 吉林工程技術師范學院 藝術與設計學院, 長春 130052;2. 吉林大學 計算機科學與技術學院, 長春 130012)
近年來, 服裝購物推薦、 虛擬試衣等服裝領域相關技術快速興起, 這些技術可根據(jù)用戶的喜好和風格向其推薦適合的服裝款式和搭配. 但這些技術都需要服裝圖片分類作為基礎算法提供支持, 因此提高自動化服裝分類算法精度具有重要意義.
與其他分類任務相同, 早期的服裝分類算法利用傳統(tǒng)方法解決服裝分類問題. Pawening等[1]使用灰度共生矩陣、 局部二值模式和不變矩陣提取服裝圖像特征, 并利用主成分分析法對提取到的特征進行降維, 最后利用支持向量機(SVM)進行服裝圖片分類. Yamazaki[2]使用Gabor濾波器提取服裝圖像的特征, 實現(xiàn)單個服裝圖像的分類. Surakarin等[3]提出了一種基于加速魯棒紋理特征的服裝分類方法, 利用局部二值模式融合特征, 提高了模型的抗干擾能力. 傳統(tǒng)的圖像特征提取方法在理想條件下能起到分類作用, 但隨著服裝款式的增多與數(shù)據(jù)量的增大, 傳統(tǒng)方法難以滿足實際應用的需求.
深度學習因其優(yōu)異的特征提取能力而受到廣泛關注, 給服裝圖像分類任務提供了新的解決方案. Liu等[4]制作并發(fā)布了一個大規(guī)模且具有高樣本標注質量的服裝語義數(shù)據(jù)集DeepFashion, 極大促進了基于深度學習技術的服裝圖像分類任務的發(fā)展; 包青平等[5]提出了一種基于度量學習的服裝分類方法, 并使用三元組損失函數(shù)提升了模型分類性能; 厲智等[6]從信息融合、 損失函數(shù)改進的角度提出了一種基于卷積神經(jīng)網(wǎng)絡(convolutional neural network, CNN)的服裝圖像分類檢索方法; Dong等[7]將VGGNet與空間池化金字塔相結合, 并用于服裝圖像分類任務, 解決了服裝圖像輸入尺度需要固定的問題, 擴大了模型的應用場景; 趙宏偉等[8]通過引入關鍵點注意力機制和通道注意力機制學習服裝關鍵區(qū)域的特性信息; Tan等[9]采用指數(shù)線性單元(ELU)、 ReLU激活函數(shù)和L2正則化改善Xception模型的非線性學習能力和泛化性; 高櫻萍等[10]采用預訓練的VGG16網(wǎng)絡模型, 并在服裝圖像數(shù)據(jù)集上進行遷移學習, 提升了VGG16模型在服裝圖像分類任務中的精度.
由于卷積神經(jīng)網(wǎng)絡擅長提取局部特征信息, 但難以提取全局特征信息, 因此基于CNN的服裝分類算法難以滿足海量多樣的服裝分類需求. 針對該問題, 本文提出一種卷積注意力融合網(wǎng)絡(convolutional attention fusion network, CAFNet), CAFNet結合了CNN和Transformer各自的優(yōu)勢, 既能提取圖像的局部特征, 又能提取圖像的全局特征, 使CAFNet能學習到更多的特征信息. 在數(shù)據(jù)集Fashion-MNIST和DeepFashion上與其他分類方法進行了對比實驗, 實驗結果表明該算法性能優(yōu)異.
深度殘差網(wǎng)絡(deep residual network, ResNet)[11]引入了殘差連接和跳躍連接解決深層網(wǎng)絡訓練中的梯度消失和模型退化問題, 使網(wǎng)絡能更深、 更容易地訓練, 同時保持較高的準確性.
殘差連接是ResNet的關鍵組成部分, 它通過在網(wǎng)絡中引入跨層的直接連接, 使網(wǎng)絡在學習過程中可以更容易地傳遞梯度和信息. 殘差連接允許跳過某些層, 直接將輸入傳遞給后面的層, 從而使網(wǎng)絡可以更直接地學習輸入的殘差(即前后層輸出之差), 而不是直接學習輸入的映射. 這樣的設計有效解決了梯度消失問題, 使網(wǎng)絡可以更深地堆疊層, 并且更容易優(yōu)化和訓練. 跳躍連接是殘差連接的一種形式, 它通過將前面層的輸出直接與后面層的輸入相加, 形成一種“跳躍”的連接. 這種連接方式使信息可以更快速地傳播, 避免了信息在深層網(wǎng)絡中逐層傳遞過程中產生信息損失. 在網(wǎng)絡結構上, ResNet采用層級結構, 由多個殘差塊的堆疊而成. 在ResNet中, 每個殘差塊由2個或3個卷積層組成, 其中包含一個殘差連接. 常見的殘差塊有兩種類型: 基本塊和瓶頸塊, 如圖1所示. 基本塊由兩個3×3的卷積層組成, 而瓶頸塊由一個1×1的卷積層、 一個3×3的卷積層和一個1×1的卷積層組成. 瓶頸塊在減少計算量的同時, 保持了較高的特征表達能力.
圖1 ResNet兩種殘差塊結構示意圖Fig.1 Schematic diagram of two residual block structures in ResNet
綜上, 殘差連接和跳躍連接是ResNet網(wǎng)絡的關鍵組成部分, 通過直接傳遞梯度和信息, 解決了深層網(wǎng)絡中的梯度消失和模型退化問題. 殘差連接允許網(wǎng)絡學習輸入的殘差, 使網(wǎng)絡更容易優(yōu)化和訓練, 而跳躍連接通過直接將前面層的輸出與后面層的輸入相加, 實現(xiàn)了特征的融合和保留, 加快了信息傳播的速度.
近年來, Transformer[12]因其具有更好的并行計算性能和更長的上下文關系建模能力, 在自然語言處理領域取得了顯著的成果和突破, 并逐漸被應用于其他領域(如計算機視覺鄰域). 在傳統(tǒng)的計算機視覺任務中, 如圖像分類、 目標檢測和圖像生成, CNN一直是主流的網(wǎng)絡模型. 但CNN存在一些局限性, 例如對輸入圖像的局部關系建模較強, 而對全局上下文的建模能力有限. 為克服這些限制, 研究人員開始探索將Transformer模型應用于計算機視覺任務.
Vision Transformer(ViT)[13]將Transformer模型應用到圖像分類任務中并取得了較好的效果. ViT模型基于Transformer的架構, 通過將圖像數(shù)據(jù)轉化為序列數(shù)據(jù), 實現(xiàn)了對圖像中像素之間的全局關系進行建模. ViT模型先將圖像分割為一系列固定大小的圖像塊(Patch); 然后將每個圖像塊轉換為向量表示, 并將這些向量輸入Transformer編碼器進行處理, 利用自注意力機制捕捉圖像內部特征和圖像之間的關系, 從而捕捉圖像中的全局上下文信息; 最后經(jīng)過編碼器的輸出并經(jīng)過全局平均池化或其他池化操作, 用于最終的分類或回歸任務. ViT模型結構示意圖如圖2所示.
圖2 ViT模型結構示意圖Fig.2 Schematic diagram of ViT model structure
與傳統(tǒng)的卷積神經(jīng)網(wǎng)絡相比, ViT模型通過Transformer的自注意力機制捕捉全局上下文信息, 而不僅局限于局部感受野. 此外, ViT模型還具有較強的可解釋性, 因為它通過自注意力權重可視化了模型對圖像不同區(qū)域的關注程度. 這些優(yōu)勢使得ViT模型在圖像分類、 目標檢測、 圖像生成等計算機視覺任務中表現(xiàn)出色, 并且逐漸成為一種有競爭力的模型架構.
研究表明, 圖像像素之間的長距離關系對計算機視覺任務至關重要. 但傳統(tǒng)的卷積神經(jīng)網(wǎng)絡在局部特征提取方面具有優(yōu)勢, 卻很難捕獲全局特征信息. 而ViT模型利用自注意力機制和多層感知機結構可有效提取全局特征信息. 為充分發(fā)揮CNN和ViT各自的優(yōu)勢, 本文提出一種卷積注意力融合網(wǎng)絡CAFNet. CAFNet采用并行結構, 由一個CNN分支和一個Transformer分支組成, 分別遵循ResNet32和ViT模型的設計. 由于CNN和Transformer分支提取的特征存在差異, 無法直接融合. 因此, 本文設計一個特征融合模塊消除它們之間的差異, 并將兩種風格的特征進行融合. 特征融合模塊由一個卷積核大小為1×1的卷積層、 平均池化層和正則化層三部分組成. CAFNet由卷積殘差模塊、 自注意力模塊、 特征融合模塊和全連接層構成, 其中特征融合模塊作為卷積殘差模塊和自注意力模塊之間的橋梁, 用于消除它們之間的特征差異. CAFNet的總體結構如圖3所示.
圖3 CAFNet整體結構示意圖Fig.3 Schematic diagram of overall structure of CAFNet
當輸入圖像到CAFNet時, 同時經(jīng)過CNN分支和Transformer分支的處理. Transformer分支與ViT模型結構類似, 需要使用Patch Embedding模塊先將圖像分割成一系列固定大小的圖像塊, 然后將每個圖像塊轉換為向量表示, 以便輸入到自注意力模塊進行上下文特征提取. 在CAFNet中, 特征提取過程包括殘差塊和自注意力模塊的輸出同時輸入特征融合模塊進行特征融合. 融合后的特征圖再作為輸入傳遞給下一個殘差塊和自注意力模塊, 最終將最后一層特征融合模塊輸出的特征輸入全連接層進行分類. 在優(yōu)化過程中, CAFNet使用交叉熵損失(cross-entropy loss, CE-loss)作為損失函數(shù)進行訓練. CAFNet中的特征融合模塊具有連接CNN分支和Transformer分支特征信息的橋梁作用. 這種結構充分結合了CNN和Transformer的優(yōu)勢, 能最大程度地保留局部特征和全局表示的表征能力, 使CAFNet具有強大的特征學習能力, 能滿足當前服裝分類任務的需求.
為驗證本文方法的有效性, 分別在Fashion-MNIST[14]和DeepFashion[4]兩個服裝分類數(shù)據(jù)集上進行實驗驗證. 數(shù)據(jù)集Fashion-MNIST涵蓋了半袖、 褲子和裙子等10種類別的共70 000張商品的正面圖片, 其中包含60 000張訓練集圖片和10 000張測試集圖片, 每張圖片都是一個大小為28×28的灰度圖像. 該數(shù)據(jù)集示例如圖4所示. 數(shù)據(jù)集DeepFashion是一個大規(guī)模的時尚服裝圖像數(shù)據(jù)集, 每張圖片是大小為224×224的彩色圖像, 用于服裝分類、 檢索和生成任務. 該數(shù)據(jù)集包含超過289 222張來自不同時尚場景的圖像, 涵蓋了各種服裝類別、 風格和姿勢. 這些圖像經(jīng)過了精確的標注, 包括服裝類別、 屬性、 邊界框和關鍵點等信息. 該數(shù)據(jù)集中的服裝類別包括上衣、 裙子、 褲子、 鞋子等, 屬性標注則涵蓋了顏色、 紋理、 款式等多方面, 數(shù)據(jù)集示例如圖5所示.
圖4 Fashion-MNIST服裝分類數(shù)據(jù)集示例Fig.4 Example of Fashion-MNIST clothing classification dataset
本文實驗模型使用Python作為程序設計語言在深度學習框架Pytorch上實現(xiàn), 并使用Pytorch官方的數(shù)據(jù)增強方法對訓練集進行在線數(shù)據(jù)增強. 在數(shù)據(jù)集Fashion-MNIST和DeepFashion上均使用隨機梯度下降(stochastic gradient descent, SGD)優(yōu)化器優(yōu)化網(wǎng)絡參數(shù). 在數(shù)據(jù)集Fashion-MNIST上模型迭代訓練的總次數(shù)為10, 初始學習率為0.01, 批量大小為64, 權重衰減為0.000 5, 動量為0.9. 在數(shù)據(jù)集DeepFashion上, 模型的初始學習率為0.1, 批量大小為128, 權重衰減為0.000 5, 動量為0.9, 每個模型迭代訓練的總次數(shù)為100次, 且在模型訓練過程中學習率會隨著訓練次數(shù)的變化而變化, 具體變化為在訓練的第30,60和90次時將學習率乘以0.1. 本文所有實驗均在NVIDIA Geforce RTX 3090上實現(xiàn).
為驗證本文方法的有效性, 分別在小型數(shù)據(jù)集Fashion-MNIST和大型數(shù)據(jù)集DeepFashion上進行實驗驗證. 在所有實驗中本文方法CAFNet都是由一個ResNet32分支和一個Transformer分支組成. 首先在數(shù)據(jù)集Fashion-MNIST上與其他主流網(wǎng)絡進行對比實驗, 實驗結果列于表1.
表1 在數(shù)據(jù)集Fashion-MNIST上CAFNet與其他模型分類的準確率對比Table 1 Comparison of classification accuracy of CAFNet with other models on Fashion-MNIST dataset %
由表1可見, CAFNet在小型數(shù)據(jù)集Fashion-MNIST上性能優(yōu)異. CAFNet在top1,top3,top5指標上都取得了最優(yōu)的準確率. 其中top1準確率比AlexNet和ResNet32分別提高了1.78%,0.35%; top3準確率分別提高了0.26%,0.15%; top5準確率分別提高了0.11%,0.04%. 由于數(shù)據(jù)集Fashion-MNIST是一個小型數(shù)據(jù)集, 模型易出現(xiàn)過擬合的現(xiàn)象, CAFNet相比于其他網(wǎng)絡模型性能提升較小. 因此, 為進一步驗證CAFNet的有效性, 本文在大型數(shù)據(jù)集DeepFashion上進行對比實驗, 實驗結果列于表2.
表2 在數(shù)據(jù)集DeepFashion上CAFNet與其他模型分類的準確率對比Table 2 Comparison of classification accuracy of CAFNet with other models on DeepFashion dataset %
由表2可見, CAFNet相比于AlexNet和VGGNet這類沒有殘差塊的網(wǎng)絡結構具有強大的性能優(yōu)勢. 與ResNet20相比, CAFNet在top1,top3,top5準確率分別提高了9.3%,6.1%,4.3%. CAFNet在與較深層的ResNet50相比同樣表現(xiàn)出優(yōu)勢, 在top1,top3,top5準確率分別提高了0.7%,0.6%,0.6%. 實驗結果證明, 本文方法在數(shù)據(jù)集DeepFashion服裝圖像分類任務中具有良好的特征提取能力.
此外, 本文還進行了消融實驗驗證CAFNet的有效性. CAFNet與基線ResNet32的消融實驗結果列于表3.
表3 CAFNet與基線ResNet32分類的準確率對比Table 3 Comparison of classification accuracy between CAFNet and baseline ResNet32 %
CAFNet是以ResNet32為主干網(wǎng)絡添加自注意力模塊和特征融合模塊構成的, 由表3可見, CAFNet在top1,top3,top5準確率相比于ResNet32分別提高了6.9%,2.5%,2.9%. 上述實驗結果有效證明了融合卷積運算提取的局部特征和自注意力機制提取的全局特征能增強網(wǎng)絡的表征學習能力.
綜上所述, 針對傳統(tǒng)基于卷積神經(jīng)網(wǎng)絡的服裝分類算法無法滿足海量多樣服裝分類需求的問題, 提出一種卷積注意力融合的服裝分類網(wǎng)絡. 該網(wǎng)絡采用并行結構, 包含一個ResNet分支和一個Transformer分支, 充分利用卷積運算提取的局部特征和自注意力機制提取的全局特征, 以增強網(wǎng)絡的表征學習能力, 從而提高服裝分類算法的性能和泛化能力. 為驗證該方法的有效性, 在數(shù)據(jù)集Fashion-MNIST和DeepFashion上進行了對比實驗. 結果表明: 在數(shù)據(jù)集Fashion-MNIST上, 該方法取得了93.58%的準確率; 在數(shù)據(jù)集DeepFashion上, 該方法取得了71.1%的準確率; 該方法優(yōu)于其他對比方法的實驗結果.