魏 雄,樂鴻飛,余錦露
(武漢紡織大學 計算機與人工智能學院,湖北 武漢 430200)
隨著服裝電子商務的快速發(fā)展,互聯(lián)網(wǎng)上的服裝圖像數(shù)量急劇增長,對海量服裝圖像進行自動化準確檢索有助于提高顧客購買意愿。目前服裝圖像檢索方法主要分為基于文本的檢索和基于內(nèi)容的檢索兩種[1]。國內(nèi)電商平臺主要使用基于文本的圖像檢索,但這種方法過于依賴對圖像的文本標注,且在語言表達習慣的限制下,其檢索結果與顧客需求可能大相徑庭。因此,基于內(nèi)容的跨域服裝圖像檢索技術具有很大研究意義。
跨域服裝檢索是指待檢索圖像和圖像檢索庫來自兩個異構域,分別為用戶域和商店域。用戶域由用戶拍攝的照片組成,這些照片可能會因照明條件、相機質(zhì)量、角度和焦距而有所不同;商店域由專業(yè)人士在相同工作室使用同一設備拍攝的同一風格的照片組成??缬蚍b檢索任務主要有以下兩個難點:①服裝圖像可變性極大。同一件服裝在拍攝角度、光線、對象不同時所得圖像會有很大不同,用戶域的查詢圖像多在復雜環(huán)境下拍攝,包含多個對象,服裝經(jīng)常被遮擋或裁剪,而大多數(shù)商店的圖片背景是單色,光線良好,服裝單品完全可見;②類內(nèi)方差大、類間方差小。這是服裝圖像的一個固有特性[2]。
圖像表征在服裝檢索任務中起到核心作用,用于對圖像內(nèi)容進行編碼,并衡量其相似性。隨著深度學習技術的發(fā)展,智能提取表征的方法取得很大進展[3-5],手工特征提取已逐步廢棄?;谏疃葘W習的服裝檢索方法中,兩種類型的圖像表征被廣泛使用:一種是全局特征作為高級語義圖像簽名;另一種是局部特征,包含特定圖像區(qū)域的幾何判別信息。目前,跨域服裝圖像檢索方法缺少對局部特征的利用,一些利用局部特征的方法先通過高查全率的全局特征檢索候選對象,然后利用局部特征重新排序,進一步提高精度,然而這樣提高了計算代價和檢索時間[6]。更重要的是,兩個階段均不可避免地存在錯誤,這可能導致錯誤積累,成為進一步提高檢索性能的瓶頸。因此,將局部特征與全局特征集成為一個緊湊的表征,在端到端檢索中相互促進,可以避免錯誤積累,該方法成為目前研究熱點。
對圖像特征提取的好壞直接影響跨域服裝圖像檢索算法的性能。傳統(tǒng)特征提取方法包括方向梯度直方圖(Histogram of Oriented Gradient,HOG)、局部二值模式(Local binary patterns,LBP)、顏色直方圖等。例如,Liu 等[7]提出首個跨域服裝檢索方法,通過定位30 個人體關鍵區(qū)域縮小人體姿勢的差異,然后通過對這些區(qū)域提取HOG 和LBP 等手工特征進行檢索。然而,傳統(tǒng)算法在跨域服裝檢索準確度方面表現(xiàn)欠佳。
近年來,深度神經(jīng)網(wǎng)絡在服裝檢索領域廣泛應用,將該領域的發(fā)展推向了一個新的階段。例如,Luo 等[8]提出一種端到端的深度多任務跨域哈希算法,與傳統(tǒng)方法學習離散屬性特征不同,該方法考慮屬性之間的順序相關性,并為屬性序列激活空間注意力;同時使用哈希散列組件替代傳統(tǒng)連接的特征向量,避免低效的查詢處理和不必要的存儲浪費。然而面對細分種類繁多的服裝圖像時,該方法能學習的順序屬性有限;Kuang 等[9]提出基于相似金字塔的圖推理網(wǎng)絡,通過在多個尺度上使用全局和局部表示來學習查詢圖像與庫之間的相似性。其中相似度金字塔采用相似度圖表示,圖中的每個節(jié)點為對應的兩個服裝區(qū)域在相同尺度下的相似度,連接兩個節(jié)點的每條邊是它們的歸一化相似度,查詢圖像與圖庫圖像之間的最終相似度可以通過在這個圖上進行推理來實現(xiàn);Mikolaj 等[10]分析了人的再識別研究領域與服裝檢索研究領域的相似性和差異性,然后考察了行人再識別模型的可轉移性,將調(diào)整后的模型應用于跨域服裝檢索,取得顯著的檢索效果,為跨域服裝檢索引入了強有力的基線;劉玉杰等[11]將空間語義注意力模塊加入到分類網(wǎng)絡VGG16 模型中,對卷積層特征賦予可學習的權重,以增強重要特征、抑制不重要特征;同時引入短鏈接模塊,整合整幅圖像的深層語義特征以獲得更具魯棒性的特征描述子,解決服裝部位不對齊導致的重要信息丟失問題。然而,該方法分類精度不佳,在使用分類損失約束的情況下檢索準確率較低。
對局部特征與全局表示進行聯(lián)合學習可以提高檢索效果。例如,Song等[12]提出一種融合局部與全局建模的框架,該框架在利用Transformer 進行全局特征提取的基礎上設計了一個由多頭窗口注意和空間注意組成的局部分支,基于窗口的注意模式模擬了局部重疊區(qū)域內(nèi)的不同視覺模式,而基于空間的注意模式模仿了重要性抽樣策略,最后通過交叉注意模塊將分層的局部與全局特征結合起來;Sarlin 等[13]提出一種聯(lián)合估計局部和全局特征的卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)——HFNet,其以固定的非學習方式解碼關鍵點和局部描述符,并將其與轉置卷積得到的全局特征聚集成一個緊湊的描述符,這樣能快速高效地處理大規(guī)模圖像。然而,即使該方法使用了多任務蒸餾來提高準確率,檢索精度仍較低;Cao 等[14]提出基于ResNet的可以聯(lián)合提取局部和全局圖像特征的DELG(Deep Local and Global features)模型,其利用廣義平均池產(chǎn)生全局特征,利用基于注意的關鍵點檢測產(chǎn)生局部特征。然而,該模型雖然使用了端到端的框架,在執(zhí)行上還是分為兩階段,較為繁瑣。
本文在CNN 的基礎上引入一種深度正交局部與全局特征融合模塊[6],通過一個局部分支和一個全局分支分別學習兩類特征,并由一個正交融合模塊將其結合起來,聚合為一個緊湊描述符。通過正交融合可以提取最關鍵的局部信息,消除全局信息中的冗余分量,從而使局部與全局分量相互增強,產(chǎn)生具有目標導向訓練的最終代表描述子。本文貢獻如下:①設計了基于全局和局部特征融合的跨域服裝檢索方法,能融合低層局部特征與高層全局特征,使用相互增強的融合特征進行檢索;②在DeepFashion數(shù)據(jù)集上進行了廣泛的實驗分析。結果表明,該方法能有效提高檢索準確率,并縮短了檢索時間。
圖1 為融合全局與局部特征的服裝圖像檢索網(wǎng)絡框架。對于輸入圖像,首先使用骨干CNN 提取特征,使用全局和局部特征融合模塊獲取全局特征與局部特征互相增強的融合表示;然后使用全局平均池化的方法得到全局特征向量,分別計算三元損失、中心損失和質(zhì)心損失;最后對全局特征向量進行歸一化,得到圖像嵌入。該圖像嵌入在訓練期間作為全連層的輸入用于計算分類損失,并結合之前得到的3 種損失計算聯(lián)合損失以約束聚類任務。在檢索階段,該圖像嵌入用于計算相似距離,并基于該距離使用質(zhì)心損失方法進行檢索。
Fig.1 Framework for clothing image retrieval network integrating global and local features圖1 融合全局與局部特征的服裝圖像檢索網(wǎng)絡框架
2.1.1 全局與局部分支
局部特征分支的兩個主要部分為多重空洞卷積(Atrous Spatial Pyramid Pooling,ASPP)[15]和自注意力模塊。前者模擬特征金字塔,用于處理不同圖像實例之間的分辨率變化;后者用于建模局部特征的重要性。ASPP 包含3 個空洞率分別為6、12、18 的空洞卷積層,不同空洞率可以獲得不同的感受野,因此本文模型可以在同一時間獲得具有不同感受野的特征圖,完成多尺度信息捕獲。對3 個不同空洞卷積提取的特征和全局平均池化分支進行級聯(lián)操作得到一個特征矩陣,再經(jīng)過一個1×1 卷積層降維后作為ASPP 輸出。ASPP 輸出的特征映射被提交到自我注意模塊,用于進一步建模每個局部特征點的重要性。首先使用1×1的卷積—批處理層對ASPP 輸入進行處理;然后分成兩個分支,一支對特征進行L2 正則化,另一支經(jīng)過Relu 激活函數(shù)和1×1 卷積層后進行SoftPlus 操作,對每個特征點計算注意力分數(shù),將該注意力分數(shù)與L2 正則化后的特征相乘計算出來的最終結果作為該圖像的局部特征fl。
全局分支對第4 層卷積層后得到的特征進行Gem 池化[16]后得到最后輸入到正交融合部分的全局輸出fg。對于f∈RC×W×H(C 為通道數(shù))的張量而言,Gem 池化可表示為:
式中:pC為可學習參數(shù),當pC=1 時Gem 池化等同于均值池化;當pC>1 時,Gem 池化關注顯著特征點;當pC→∞時,Gem 池化等同于全局池化。根據(jù)DELG[14]中的設置,本文將其初始值設置為3.0。
2.1.2 特征融合
特征融合過程圖2 所示。具體步驟為以局部特征fl和全局特征fg作為輸入,計算出fl在fg上的正交分量,并將該正交分量與全局特征聚合成一個聯(lián)合表示。
Fig.2 Feature fusion process圖2 特征融合過程
Fig.3 Orthographic projection process圖3 正交投影過程
在訓練階段使用一個由4 個部分組成的損失函數(shù):①在原始嵌入上計算的三元組損失;②中心損失作為輔助損失;③在批量歸一化嵌入上使用全連接層計算的分類損失;④使用查詢向量和批類質(zhì)心計算的質(zhì)心損失。因此,總目標優(yōu)化函數(shù)表示為:
式中:δ1為可學習參數(shù),表示損失函數(shù)所占權重,初始設置為5e-4。
以上聚合表示對異常值更穩(wěn)健,能確保更穩(wěn)定的特征。在檢索階段使用質(zhì)心表示,每個圖像不需要像三元組損失一樣計算輸入圖像與批類每一個圖像的距離,大大減少了檢索時間和存儲需求。
2.2.1 中心損失
在目前基于深度學習的實例檢索方案中,三元損失是應用最廣泛的方法之一。計算公式為:
式中:A為輸出圖像,P為正例圖像,N為負例圖像,Ac為三元組損失的邊際。三元組損失只考慮了A與P、N之間的差值,忽略了它們的絕對值。例如,當f(A)-f(P)=0.4,f(A)-f (N)=0.6,ac=0.4 時,三元組損失為0.2;而f(A)-f(P)=1.6,f(A)-f (N)=1.4時,三元組損失也為0.2,但此時輸入圖像與正類的距離大于負類距離。三元損失由兩個在正負類中分別隨機抽取的圖像計算,即使三元損失很小,也很難確保整個訓練數(shù)據(jù)集中正類的距離大于負類距離。為彌補三元組缺失的缺點,在訓練中引入中心損失[18],同時學習每個類別深度特征的一個中心,并根據(jù)深度特征與其相應類別中心之間的距離進行懲罰。中心損失函數(shù)表示為:
式中:yj為輸入的第j 個圖像標簽;cyj表示深度特征的yj類中心;B為輸入圖像的批大小。
2.2.2 質(zhì)心損失
除了聚類效果不佳,三元損失還具有以下缺點[19-21]:①三元損失主要通過硬負采樣創(chuàng)建訓練批圖像,但可能會導致糟糕的局部極小值;②硬負采樣計算成本高,需要計算批內(nèi)所有樣本之間的距離;③容易出現(xiàn)異常值和噪聲標簽。為減小三元損失硬負采樣帶來的影響,在訓練和檢索階段引入質(zhì)心損失,見圖4。圖中的距離指測量樣本與代表一個類的質(zhì)心之間的距離;質(zhì)心為批中每一類所有圖像表示的聚合。質(zhì)心方法可使每個圖像只用計算一次嵌入,解決了計算成本和存儲問題。
Fig.4 Centroid loss圖4 質(zhì)心損失
三元組損失是比較圖像與正負圖像之間的距離,而質(zhì)心損失是測量圖像A 與兩個類別中心Cp和Cn之間的距離。質(zhì)心損失計算公式為:
式中:Cp為與輸入圖像同一類的質(zhì)心,Cn為與輸入圖像不同類的質(zhì)心。
本文在包含80 萬張圖像的DeepFashion 數(shù)據(jù)集[21]上進行實驗,其由4 個子集組成。選擇其中的Consumer-toshop 服裝檢索子集,包含33 881 種商品,共 239 557 張圖片。
跨域服裝檢索方法通常采用均值平均精度(Mean Average Precision,MAP)作為檢索結果位置信息的評價標準。計算公式為:
式中:Q為檢索數(shù)據(jù)庫中的服裝圖像數(shù)量;AP為平均查詢正確率,是一次查詢結果查準率與查全率曲線下的面積。
Top-k 準確率為跨域服裝檢索中最常用的評價指標。計算公式為:
式中:q為待查詢圖像,Q為查詢庫中所有圖像的數(shù)量。如果根據(jù)相似度距離檢索出的前k 個圖像中至少有一個與q匹配,那么h(q,k)=1,否則h(q,k)=0。
使用PyTorch Lighting 框架實現(xiàn)代碼,在Google Colab中使用Ubuntu18 系統(tǒng)、26g 內(nèi)存和P100 顯卡進行實驗。使用47 434 張查詢圖像驗證本文方法的檢索效果。使用 ResNet50-IBN-A 作為預訓練網(wǎng)絡,Stride=1,ResNet 最后一層輸出維度為2 048,批大小為12,中心損失加權系數(shù)為5e-4,所有其他損失權重為1。使用基礎學習率為1e-4的Adam 優(yōu)化器,同時使用學習率調(diào)度器,在第40、70 個epoch后學習率降低10倍,模型訓練120個epoch。
使用 ResNet50-IBN-A 作為預訓練網(wǎng)絡,Stride=1,ResNet 最后一層輸出維度為2 048,批大小為12,中心損失加權系數(shù)為5e-4,所有其他損失權重為1。使用基礎學習率為1e-4的Adam 優(yōu)化器,同時使用學習率調(diào)度器,在第40、70個epoch 后學習率降低10倍,模型訓練120個epoch。
在檢索階段,使用批歸一化向量后的圖像嵌入計算相似度距離,距離度量為余弦相似度。比較本文方法與GRNRT[9]、CTL-S-50[10]、VGG16-atten[11]、GSN[22]模型的top-k 檢索準確率,結果見圖5??梢钥闯?,本文方法比對照方法表現(xiàn)出色。這是由于將全局特征與局部特征融合起來能有效彌補特征表達的不足,提高檢索準確性,且本文方法僅使用圖像級標簽進行訓練,無需復雜注釋。
Fig.5 Comparison of top-k retrieval accuracy of different models圖5 不同模型top-k檢索準確率比較
表1 為本文方法和實例檢索方法在DeepFashion 測試集上所需時間和空間比較。前文中的VGG16-atten、GRNRT 均屬于實例檢索的范疇??梢钥闯?,在檢索階段使用質(zhì)心方法大大減少了所需圖片數(shù)量,檢索速度有較大提升。這是由于每個類通常有若干個圖像,而一個質(zhì)心可以表示每一類的一整組圖像。
Table 1 Comparison of time and space required by the proposed method and the example retrieval method表1 本文方法和實例檢索方法所需時間和空間比較
圖6 為DeepFashion 數(shù)據(jù)集上的部分檢索結果,由在320×320 圖像上訓練的最佳模型產(chǎn)生。左邊第一列圖像為查詢圖像,其右側圖像為相似度遞減的top-5 檢索結果,帶邊框的檢索圖像為與查詢圖像匹配正確的結果。檢索是在整個圖庫數(shù)據(jù)集上執(zhí)行的,沒有對查詢項類別進行修剪。
Fig.6 top-5 search results圖6 top-5檢索結果
本文提出一種基于特征融合的跨域服裝檢索方法,其在傳統(tǒng)CNN 的基礎上嵌入全局和局部特征正交融合模塊,在端到端的框架中將多重空洞卷積和自注意力機制得到的重要局部特征與全局特征融合,以獲得互相增強且更具判別力的圖像表征,彌補對于局部特征利用不足的缺陷。同時,在訓練和檢索階段均使用質(zhì)心損失,大大減少了檢索過程的計算量,加快了檢索速度。實驗表明,與其他常用跨域服裝檢索方法相比,本文方法在準確性指標上有一定提升。雖然使用質(zhì)心損失、中心損失、三元損失和交叉熵分類損失聯(lián)合的損失函數(shù)進行訓練能取得較好效果,但這些損失函數(shù)的目標并不一致,有些甚至差距較大,如三元損失和分類損失。過于復雜的損失函數(shù)可能是準確率繼續(xù)提高的瓶頸之一,后續(xù)可考慮對損失函數(shù)進行改造,使用具有協(xié)同效應的損失函數(shù)聯(lián)合訓練。