高繼強
(湖南工業(yè)大學(xué),湖南 株洲412007)
圖像檢索指的是對目標圖像中的某一物體,從圖像庫中找出包含有該物體的圖像,并且返回所有與之相似的圖像。將輕量級神經(jīng)網(wǎng)絡(luò)應(yīng)用于服裝圖形檢索,屬于深度學(xué)習(xí)在時尚領(lǐng)域內(nèi)的實際應(yīng)用,因為深度學(xué)習(xí)作為機器學(xué)習(xí)領(lǐng)域內(nèi)的一個重要分支,其算法具有強大的自動特征提取能力及高效的特征表達能力。
在計算機視覺領(lǐng)域內(nèi),深度學(xué)習(xí)算法可以實現(xiàn)從低層到高層漸進的特征提取,最終獲得較理想的特征表達,因此深度學(xué)習(xí)具有廣闊的應(yīng)用前景。神經(jīng)網(wǎng)絡(luò)作為深度學(xué)習(xí)領(lǐng)域內(nèi)的高效算法,近年來隨著深度學(xué)習(xí)的火熱也獲得了大規(guī)模應(yīng)用。自2012 年AlexNet以來,各種神經(jīng)網(wǎng)絡(luò)模型層出不窮,如GoogLeNet、ResNet 等。這些神經(jīng)網(wǎng)絡(luò)為了獲得更好的性能,網(wǎng)絡(luò)層數(shù)不斷增加,對于硬件資源的消耗越來越大,對于計算能力的需求也越來越高。雖然網(wǎng)絡(luò)性能得到了提高,但隨之而來的就是效率問題。為了使神經(jīng)網(wǎng)絡(luò)獲得更加廣泛的應(yīng)用,需要設(shè)計出更高效的網(wǎng)絡(luò)模型。
輕量級神經(jīng)網(wǎng)絡(luò)的核心思想并不是傳統(tǒng)的模型壓縮,即在已經(jīng)訓(xùn)練好的模型上進行壓縮,而是設(shè)計出更高效的卷積方式,從而使網(wǎng)絡(luò)攜帶更少的網(wǎng)絡(luò)參數(shù),減少內(nèi)存的消耗,進而可以減少網(wǎng)絡(luò)的計算量,對于計算能力也沒有過高的要求,尤其適合于移動端,嵌入式設(shè)備,配置較低的電腦等場景,這為神經(jīng)網(wǎng)絡(luò)走出學(xué)術(shù)界,邁向工業(yè)界打下了堅實的基礎(chǔ),具有很高的實際意義。
MobileNet 系列網(wǎng)絡(luò)作為典型的輕量級神經(jīng)網(wǎng)絡(luò),以此為基礎(chǔ)搭建神經(jīng)網(wǎng)絡(luò)模型更加便捷與高效。Deep Fashion 服裝圖像數(shù)據(jù)集共50 種類別,約為28 萬張圖片,可以保證神經(jīng)網(wǎng)絡(luò)得到充分的訓(xùn)練,對其進行數(shù)據(jù)增強之后,可以盡量減少欠擬合現(xiàn)象的出現(xiàn)。
基于輕量級神經(jīng)網(wǎng)絡(luò)的服裝圖像檢索的算法流程主要分為三個步驟:
1.1 對Deep Fashion 數(shù)據(jù)集中的圖像進行預(yù)處理。Deep Fashion 數(shù)據(jù)集是香港中文大學(xué)多媒體實驗室發(fā)布的數(shù)據(jù)集,主要圖片來源為網(wǎng)絡(luò)電商購物平臺中的服裝圖片。其中類別預(yù)測中包含28 萬張圖片,分為50 類衣物,每種衣服有不同姿勢的若干張圖片。預(yù)處理中包括數(shù)據(jù)集的劃分,數(shù)據(jù)增強,數(shù)據(jù)歸一化處理,數(shù)據(jù)類型的轉(zhuǎn)化等操作。
1.2 以MobileNet 神經(jīng)網(wǎng)絡(luò)的v2 版本作為基礎(chǔ)來進行模型搭建。模型搭建完畢之后,將步驟一中經(jīng)過預(yù)處理之后的圖片送入神經(jīng)網(wǎng)絡(luò)模型中進行訓(xùn)練,保證網(wǎng)絡(luò)模型得到充分的訓(xùn)練。
1.3 利用劃分出的驗證集進行網(wǎng)絡(luò)功能的測試,得到輸出的結(jié)果。
首先是對數(shù)據(jù)集的劃分,按照8:1:1 的比例劃分成訓(xùn)練集,驗證集和測試集。訓(xùn)練集主要通過學(xué)習(xí)樣本數(shù)據(jù)集,進而匹配一些參數(shù)來建立一個分類器。驗證集主要針對學(xué)習(xí)出來的模型,調(diào)整分類器的參數(shù),驗證集還用來確定網(wǎng)絡(luò)結(jié)構(gòu)或者控制模型復(fù)雜程度的參數(shù)。測試集的作用主要就是測試訓(xùn)練好的模型的分辨能力、泛化能力等。
將數(shù)據(jù)集中的圖片劃分為訓(xùn)練集、驗證集和測試集之后,下一步是制作存放有圖片路徑及其標簽的文本文件,PyTorch 依據(jù)該文本文件上的信息尋找圖片,并讀取圖片數(shù)據(jù)和標簽數(shù)據(jù),再通過Dataset 類讀取數(shù)據(jù)集中的圖片。
在預(yù)處理過程中還需要對圖像進行數(shù)據(jù)增強,主要通過:
transforms.CenterCrop 實 現(xiàn) 中 心 裁 剪; 通 過 transforms.RandomRotation 實現(xiàn)隨機旋轉(zhuǎn);通過transforms.ToTensor 實現(xiàn)數(shù)據(jù)類型的轉(zhuǎn)換;通過transforms.RandomChoice(transforms),從給定的一系列transforms 中選一個進行操作;通過自定義函數(shù)計算出數(shù)據(jù)集的均值和方差,并通過transforms.Normalize()函數(shù)進行數(shù)據(jù)的歸一化。其中進行數(shù)據(jù)歸一化是因為歸一化后會加快梯度下降求最優(yōu)解的速度,還可以提高精度。
本文以MobileNet 神經(jīng)網(wǎng)絡(luò)的v2 版本作為基礎(chǔ)來進行模型搭建。MobileNet 由谷歌團隊提出,v1 版本論文發(fā)表于2017 年的國際計算機視覺與模式識別會議。V2 版本在v1 的基礎(chǔ)上進行了改進,在采用深度可分離卷積的基礎(chǔ)上引入了線性瓶頸結(jié)構(gòu)和反向殘差結(jié)構(gòu)。這使得該網(wǎng)絡(luò)擁有更小的體積,更少的計算量,更高的精度,在輕量級神經(jīng)網(wǎng)絡(luò)中擁有極大的優(yōu)勢。
表1 MobileNet v2 網(wǎng)絡(luò)結(jié)構(gòu)特點
圖1 實驗結(jié)果
線性瓶頸結(jié)構(gòu)是網(wǎng)絡(luò)結(jié)構(gòu)的重要創(chuàng)新點,從Bottleneck 結(jié)構(gòu)演變而來的。Bottleneck 結(jié)構(gòu)首次被提出是在ResNet 網(wǎng)絡(luò)中。該網(wǎng)絡(luò)結(jié)構(gòu)的第一層使用逐點卷積,第二層采用3×3 大小的卷積,使用深度可分離卷積,第三層使用逐點卷積。線性瓶頸結(jié)構(gòu)相對普通的卷積能夠減少參數(shù)數(shù)量,減少卷積計算量,能夠從空間和時間上進行網(wǎng)絡(luò)的優(yōu)化。
MobileNetV2 版本中的殘差結(jié)構(gòu)使用第一層逐點卷積升維并使用Relu6 激活函數(shù),普通的Relu 激活函數(shù)對于大于0 的值不進行處理,但是對于Relu6 而言,當輸入的值大于6 的時候,返回6,它作為非線性激活函數(shù),在低精度計算下具有更強的魯棒性。之后使用深度可分離卷積,同樣使用Relu6 激活函數(shù),再使用逐點卷積降維,降維后使用線性激活函數(shù)。這樣的卷積操作方式更有利于降低計算量。
該網(wǎng)絡(luò)模型中共有17 個Bottleneck 層,每個Bottleneck 包含兩個逐點卷積層和一個深度卷積層,一個標準卷積層,兩個逐點卷積層,整個網(wǎng)絡(luò)模型中一共有54 層可訓(xùn)練參數(shù)層。MobileNetV2 中使用線性瓶頸和反向殘差結(jié)構(gòu)優(yōu)化了網(wǎng)絡(luò),加深了網(wǎng)絡(luò)層次的同時,壓縮了模型的體積,使模型的運算速度更快。
本實驗所用主要硬件參數(shù)為:英偉達rtx2080ti-11G GPU 一塊,英特爾i9-9900k CPU 一顆,DDR4 2400MHz 16G 內(nèi)存兩條。深度學(xué)習(xí)框架采用pytorch,Python 版本為3.7.2。實驗過程中,訓(xùn)練集數(shù)據(jù)量為圖像數(shù)據(jù)集的80%,測試集數(shù)據(jù)量為圖像數(shù)據(jù)集的10%,驗證集數(shù)據(jù)量為圖像數(shù)據(jù)集的10%,選取圖像的方式為隨機抽取,實驗訓(xùn)練次數(shù)為60 次(圖1,表3)。
表3 測試集結(jié)果
本文將輕量級神經(jīng)網(wǎng)絡(luò)應(yīng)用于服裝圖像檢索中,具有一定的實用性。從實驗結(jié)果來看,輕量級神經(jīng)網(wǎng)絡(luò)基本完成了服裝的圖像檢索任務(wù),準確率和召回率都較高。本文使用的神經(jīng)網(wǎng)絡(luò)以盡可能小的網(wǎng)絡(luò)結(jié)構(gòu)更高效地完成了服裝檢索工作,與其他大型的網(wǎng)絡(luò)模型相比,在未降低準確率的前提下完成了檢索工作。在之后的改進中,將著眼于模型的實際應(yīng)用,將其應(yīng)用于移動客戶端等。