王 彪,毋 濤
(西安工程大學(xué) 計算機科學(xué)學(xué)院,陜西 西安 710600)
近些年來,隨著互聯(lián)網(wǎng)經(jīng)濟的快速發(fā)展,電子商業(yè)也進入了蓬勃發(fā)展的階段,消費者對于以紡織面料為原材料的商品,如服裝、鞋等的需求量大大增加。面料生產(chǎn)企業(yè)為了能滿足市場需求,不得不研究生產(chǎn)新的面料,這樣也就導(dǎo)致市場上的面料種類越來越多,從而給面料生產(chǎn)企業(yè)帶來了一個新的問題,即如何從種類繁雜的面料中快速、精準(zhǔn)地檢索到目標(biāo)面料[1]。
傳統(tǒng)的紡織企業(yè)在進行面料檢索時,一般都是采取人工的方式進行。該方式不僅費時費力,檢索結(jié)果還附帶主觀性的影響,不能達到用戶對檢索速度和準(zhǔn)確度的要求[2]。市場上雖然存在成熟的圖像檢索方法和系統(tǒng),但是由于面料圖像的特殊性,并不適用于面料圖像的檢索需求,需要進行較大的改進。
在圖像檢索領(lǐng)域,主要存在兩種技術(shù):基于文本的圖像檢索(Text-Based Image Retrieval,TBIR)和基于內(nèi)容的圖像檢索(Content-Based Image Retrieval,CBIR)[3-6]。TBIR,需要人為地對圖像進行文本標(biāo)注,具有效率低、查找不準(zhǔn)的缺點。CBIR,提取圖像的淺層視覺特征或深層語義特征,結(jié)合相似度度量方法,從數(shù)據(jù)庫中檢索出最為相似的top-k張圖片,這是目前國內(nèi)外研究的熱點[7]。徐佳等人[8]提出一種基于全局和局部相位特征相融合的圖像檢索算法。王妙[9]提出基于深度學(xué)習(xí)的印花織物圖像檢索系統(tǒng)設(shè)計,采用哈希算法的粗檢索和卷積神經(jīng)網(wǎng)絡(luò)的細致檢索相結(jié)合的分級檢索,在提高精度的基礎(chǔ)上進一步提高了速度。Xia等人[10]提出的CNNH通過對相似度矩陣進行分解,得到樣本的哈希碼,再利用卷積神經(jīng)網(wǎng)絡(luò)對哈希碼進行擬合。Lai等人[11]提出DNNH。該方法對網(wǎng)絡(luò)結(jié)構(gòu)做了針對性的設(shè)計:用部分連接取代全連接,引入分段量化函數(shù)。Zhang等人[12]提出的DRSCH用加權(quán)的漢明距離代替普通的漢明距離,這種方法可以提高計算距離的效率和精度,但是時間復(fù)雜度也會增加。Lin等人[13]在AlexNet的F7和F8之間加入一個全連接層,基于由粗到細的策略,利用學(xué)習(xí)到的類哈希二進制碼和F7層特征,實現(xiàn)圖片檢索。該方法降低了特征匹配的計算量,加速了檢索速度,但是不能保證哈希碼相似的圖像在語義上也相似,因此檢索精度不高。何彬等人[1]提出了一種基于InceptionV3遷移學(xué)習(xí)的面料圖像特征提取算法。該算法在Inception中加入哈希編碼層,并優(yōu)化了損失函數(shù),將模型輸出的哈希編碼作為面料圖像的特征向量,采用分級檢索的策略進行檢索。該方法雖然在精度和時間上優(yōu)于一般的檢索算法,但是由于采用的暴力檢索策略,在速度上仍有較大的提升空間。劉瑞昊等[7]通過改進LresNet50E-IR網(wǎng)絡(luò)結(jié)構(gòu),將其遷移學(xué)習(xí)到面料檢索上,結(jié)合faiss進行面料圖像檢索可以取得很好的效果。但是算法采用的損失函數(shù)只能限制模型具有較好的分類效果,不能保證相似的面料圖像的特征也相似。
該文主要針對目前面料圖像檢索領(lǐng)域存在的“找料慢”“找料難”等問題[14],通過結(jié)合深度學(xué)習(xí)和faiss向量檢索解決以上問題,為紡織企業(yè)提供高效的面料管理策略。
面料圖像的檢索是以紡織企業(yè)的實際需求為依據(jù),利用卷積神經(jīng)網(wǎng)絡(luò)對面料圖像進行特征學(xué)習(xí)、表示和匹配,從面料數(shù)據(jù)庫中檢索出相似面料圖像。系統(tǒng)分為模型訓(xùn)練、構(gòu)建面料特征數(shù)據(jù)庫和面料檢索3個模塊。模型訓(xùn)練是對VGG16[15]網(wǎng)絡(luò)結(jié)構(gòu)進行微調(diào),同時優(yōu)化損失函數(shù),以企業(yè)提供的面料作為訓(xùn)練數(shù)據(jù)訓(xùn)練模型參數(shù),以表達面料圖像的特征;構(gòu)建面料特征數(shù)據(jù)庫是用訓(xùn)練好的模型提取面料特征,以向量的形式保存下來;面料檢索是將待檢索的面料和數(shù)據(jù)庫中圖像進行相似度匹配,排序輸出檢索結(jié)果。
基于CNN的面料檢索系統(tǒng)框架結(jié)構(gòu)如圖1所示。
圖1 面料檢索整體框架流程
該系統(tǒng)首先以企業(yè)提供的面料為訓(xùn)練集對模型進行訓(xùn)練,得到提取面料特征的模型,對所有的面料圖形進行特征提取,將特征向量保存在本地作為特征向量庫;然后將待檢索的面料送到檢索系統(tǒng)中,提取其特征,以余弦相似度作為特征向量之間相似度的度量,將相似度最高的top-k檢索結(jié)果返回,完成一次檢索過程。
企業(yè)提供真實的面料樣本,通過圖像采集設(shè)備獲得每一張面料的圖像,一共有37 002張,部分面料圖像見圖2。根據(jù)不同紡織機機型,對面料進行批量的歸類,一共分為10類,分別是12E、14E、16E、18E、20E、22E、24E、26E、28E、36E。按照8∶2的比例,將數(shù)據(jù)集劃分為訓(xùn)練集和測試集,其大小分別是29 602和7 400。
圖2 部分面料
在模型訓(xùn)練階段,考慮到檢索情景的多樣性,提高模型的泛化能力,使檢索系統(tǒng)具有較強的魯棒性,對訓(xùn)練集進行隨機水平翻轉(zhuǎn)、隨機顏色抖動等數(shù)據(jù)增強操作。
面料特征的提取是整個面料檢索系統(tǒng)最核心的環(huán)節(jié)。優(yōu)秀的模型提取出的特征向量可以很好的表示圖像,也是后續(xù)進行特征匹配的關(guān)鍵,所以模型選擇至關(guān)重要[7]。
2.2.1 VGG16網(wǎng)絡(luò)結(jié)構(gòu)
VGG網(wǎng)絡(luò)是2014年ImageNet大規(guī)模圖像識別大賽的亞軍,VGG16是其中的一類模型,常用于圖像分類、目標(biāo)檢測和圖像分割等任務(wù),其結(jié)構(gòu)如圖3所示。VGG16一共有16層,包括卷積層、池化層和全連接層。
圖3 VGG16網(wǎng)絡(luò)結(jié)構(gòu)
VGG16在卷積層采用3×3的小卷積核,減少了參數(shù)量,同時加快了模型的訓(xùn)練速度。在每個卷積層之后使用ReLU激活函數(shù)對特征圖進行非線性映射以提高模型的表征能力。
池化層的池化窗口大小為2×2,步長為2,在不減少特征圖數(shù)量的前提下,縮小了特征圖的尺寸,壓縮了參數(shù)量。
網(wǎng)絡(luò)最后是3層全連接層,融合了卷積層提取的局部特征,表達了輸入圖像的全局特征。
2.2.2 改進VGG16
雖然使用3×3的卷積核減少了參數(shù)量,但是模型還是很復(fù)雜,有可能會出現(xiàn)過擬合的問題;在檢索過程中計算兩個面料的特征向量的相似度時,由于特征向量維度過高,帶來較大的計算量;交叉熵損失函數(shù)是用來分類的損失函數(shù),只能保證模型能夠?qū)D像進行正確的分類,不能讓模型學(xué)習(xí)相似的面料圖像的特征向量也相似。本面料檢索系統(tǒng)以VGG16為基礎(chǔ)網(wǎng)絡(luò),遷移學(xué)習(xí)其網(wǎng)絡(luò)結(jié)構(gòu),對其做出以下改進:為了避免模型發(fā)生過擬合,提高模型的泛化能力,在卷積層之后,激活層之前加入BN層;為了減少檢索過程中向量相似度計算的計算量,修改classifier部分的layer3的輸出神經(jīng)元數(shù)量為128個;為了使模型學(xué)習(xí)到相似面料圖像的特征向量也相似,對損失函數(shù)進行優(yōu)化:在原來分類損失函數(shù)的基礎(chǔ)上加入相似度損失函數(shù)similarity。要計算相似度損失函數(shù),首先要構(gòu)建兩個相似度矩陣A和B,然后再計算A和B對應(yīng)位置元素差的平方和的均值。A和B,以及相似度損失函數(shù)的計算公式見式(1)、(3)、(4)。
(1)
式中,aij表示第i個特征向量xi和第j個特征向量xj的余弦相似度,計算公式見式(2)。
(2)
(3)
式中,bij僅有0和1兩種取值。0表示向量xi和向量xj不屬于同一種類別,即不相似;1表示兩個特征向量屬于同一種類別,即相似。
(4)
式中,n表示特征向量的數(shù)目。
準(zhǔn)備數(shù)據(jù)集、選擇模型和構(gòu)建損失函數(shù)這些前期工作做好后,下一步是訓(xùn)練模型。訓(xùn)練參數(shù)設(shè)置見表1。
表1 模型訓(xùn)練參數(shù)
在迭代80個epoch后,訓(xùn)練集和測試集的損失和準(zhǔn)確率都已基本收斂,將此時的網(wǎng)絡(luò)保存到本地作為構(gòu)建特征數(shù)據(jù)庫和檢索時提取面料特征的模型。
faiss是Meta(原Facebook)AI團隊為了解決海量稠密向量的檢索問題,結(jié)合高效相似度檢索和聚類方法,提出的一種開源的相似度檢索庫[16]。例如,從給定的面料圖像庫中檢索出與待檢索的面料圖像相似度最高的前K張圖像,稱為K近鄰檢索[17]。本研究借助faiss向量檢索工具,為每一張面料圖像的特征向量綁定一個唯一的索引,在損失極小的精度的情況下,大大提高了檢索的速度。
為證明文中方法的可行性,與多種圖像檢索算法進行對比。多特征融合方法結(jié)合了圖像的形狀、顏色和紋理3種特征,檢索效果要優(yōu)于單一的特征[18]。Inception_HashOP[1]通過在倒數(shù)第2層加入哈希編碼層并優(yōu)化損失函數(shù),采取分級檢索的策略進行圖像檢索。VGG19[15]相比于VGG16在結(jié)構(gòu)上沒有太大的區(qū)別,只是比VGG16多了三層卷積層。
要比較這幾種算法的性能,首先要確定統(tǒng)一的評價指標(biāo)。該文采用圖像檢索領(lǐng)域常用的平均查準(zhǔn)率(mAP)和檢索一張面料平均消耗的時間T作為算法性能的評估指標(biāo)。
查準(zhǔn)率(Precision)是指一張面料圖像經(jīng)過檢索,檢索結(jié)果列表中與該圖像相似的數(shù)量在檢索結(jié)果列表中所占的比例[19]。Precision的計算公式見式(5)。
(5)
式中,TP是指檢索到的相關(guān)面料,FP是指檢索到的不相關(guān)面料。
平均查準(zhǔn)率(Average Precision,AP)表示一張面料圖像經(jīng)過檢索之后,檢索結(jié)果列表中,每個召回率點上的查準(zhǔn)率的均值。計算公式見式(6)。
(6)
式中,ri是指第i召回點,R表示檢索結(jié)果中與檢索面料相似的個數(shù),P(ri)表示第i個召回點的查準(zhǔn)率。
平均查準(zhǔn)率均值(mAP)是多張查詢面料的平均查準(zhǔn)率的均值[20]。計算公式見式(7)。
(7)
式中,APi表示第i個查詢面料的平均查準(zhǔn)率,n表示查詢面料的個數(shù)。
模型訓(xùn)練是在服務(wù)器上進行。服務(wù)器CPU(E5-2678 v3)運行內(nèi)存122 GB,GPU(RTX3090)顯存為24 GB,使用Pytorch深度學(xué)習(xí)框架。
從測試集中隨機抽取100張面料圖像,其余作為構(gòu)建特征數(shù)據(jù)庫的面料圖像。當(dāng)輸入一張要查詢面料圖像,經(jīng)過改進的vgg16模型提取查詢面料圖像128維的特征向量,計算其與特征數(shù)據(jù)庫中的每一個面料的特征向量的余弦相似度,按相似度從高到低排序輸出,然后根據(jù)輸出結(jié)果計算平均查準(zhǔn)率均值mAP。具體流程見圖4。
圖4 實驗流程
表2展示了各種算法在mAP和檢索時間上的對比??梢钥闯鲈撐奶岢龅姆椒o論是在平均查找率均值方面,還是在檢索速度上都具有巨大的優(yōu)勢。其中,雖然Inception_HashOP和文中方法在mAP上相差不多,但是由于其在特征向量相似度計算時采取的是暴力遍歷的方法,所以其檢索速度遠遠低于文中方法;VGG19由于提取的特征向量維度較高,所以檢索速度最低。
表2 不同算法對比
綜上,提出的研究方法在企業(yè)面料數(shù)據(jù)集上同時具備檢索速度快和檢索精度高的特點,具有良好的檢索性能。
面料圖像檢索系統(tǒng)基于web技術(shù),主要由四個模塊組成,分別是前端模塊、后端模塊、算法模塊和數(shù)據(jù)庫模塊。如圖5所示。其中前端模塊主要負責(zé)面料圖像的上傳、接受/處理請求和展示面料圖像檢索的結(jié)果,后端模塊主要負責(zé)整個面料圖像檢索系統(tǒng)的圖像數(shù)據(jù)的輸入與輸出,算法模塊主要負責(zé)對查詢的面料圖像的檢索,面料圖像特征數(shù)據(jù)庫保存在MySql數(shù)據(jù)庫中,數(shù)據(jù)庫模塊主要由Redis構(gòu)成,主要負責(zé)存儲面料圖像及其相對應(yīng)的id,便于前端模塊的檢索結(jié)果的展示。檢索流程為:第1步,用戶通過前端頁面將待檢索的面料圖像上傳至前端;第2步,前端將面料圖像傳輸至后端;第3步,由后端對面料圖像進行相關(guān)處理,將其輸入至算法模塊中;第4步,算法模塊將檢索結(jié)果的面料圖像id返回至后端模塊;第5步,后端將算法模塊返回的檢索結(jié)果id輸入數(shù)據(jù)庫模塊;第6步,數(shù)據(jù)庫將圖片路由返回給后端;第7步,后端將圖片路由和id返回給前端;第8步,前端模塊接收后端模塊返回的面料圖像檢索結(jié)果id和相對應(yīng)的圖片路由后,顯示給用戶。
圖5 系統(tǒng)框架
在面料檢索的檢索頁面中,點擊上傳按鈕上傳要查詢的面料圖像,點擊檢索按鈕,經(jīng)過系統(tǒng)檢索后,根據(jù)輸入的檢索數(shù)量N,系統(tǒng)的前端頁面展示出N張最相似的面料的圖像、id以及和查詢面料的相似度。檢索結(jié)果如圖6所示。
圖6 檢索結(jié)果
該文提出一種基于卷積神經(jīng)網(wǎng)絡(luò)的面料檢索系統(tǒng),解決了企業(yè)面料檢索速度慢、精度低的難題。通過微調(diào)VGG16網(wǎng)絡(luò)結(jié)構(gòu),遷移學(xué)習(xí)到面料數(shù)據(jù)集上,利用CNN強大的表征能力,同時借助向量檢索工具faiss進行特征向量檢索,使得檢索系統(tǒng)具有很好的性能。系統(tǒng)在面料圖像上的mAP可達到0.892,檢索時間僅為0.012秒,均優(yōu)于以往的算法。該方法存在的缺點是,模型訓(xùn)練時間耗時長,當(dāng)面料數(shù)據(jù)集更新時需要重新訓(xùn)練模型。因此,接下來可在現(xiàn)研究基礎(chǔ)上進一步優(yōu)化網(wǎng)絡(luò),降低模型訓(xùn)練的時間,提高檢索系統(tǒng)的實用性。