廖榮凡, 沈希忠
(上海應用技術大學 電氣與電子工程學院, 上海 201418)
在網絡信息技術日益發(fā)達的背景下,網絡圖像資源迅速增長,如何實現(xiàn)快速有效的檢索成為了亟待解決的問題。當前基于內容的圖像檢索(content-based image retrieval, CBIR)成為研究的熱點之一?;趫D像內容的檢索技術流程是通過提取圖像紋理、形狀和色彩分布等特征,計算待檢索圖像與已經構建好的圖像數(shù)據庫中各個圖像的距離,返回與待檢索圖像最接近的圖像。檢索中最具有挑戰(zhàn)性的問題是如何將圖像像素層面的信息與個人理解的圖像語義聯(lián)系起來[1]。
深度卷積神經網絡在圖像分類、圖像語義分割和目標檢測等計算機視覺領域表現(xiàn)優(yōu)異,對圖像底層和中層特征有很好的表達能力。相對于人工選擇圖像特征表達圖片內容的方法,例如SIFT[2]、HOG[3],卷積神經網絡學習到的高維圖像特征可以更好地表達圖像信息,但也增加了計算復雜度,尤其是在大數(shù)據背景下,訓練1個大型深度卷積神經網絡使其收斂到較高的精度,然后用于圖像檢索任務,往往需要很大的計算開銷,同時對于檢索本身而言高維度的特征向量也較低了檢索的效率。
Krizhevsky等[4]使用其提出的Alex-Net網絡的第7層(全連接層)輸出作為圖像的特征向量,用于圖像檢索,在ImageNet數(shù)據集[5]上取得了很好的表現(xiàn)。但是其輸出的特征向量高達 4 096 維,檢索大量 4 096 維的數(shù)據,判斷2個向量的相似度,其計算速度是一個值得優(yōu)化的問題。Babenko等[6]使用主成分分析(PCA)壓縮特征向量的維度,實現(xiàn)數(shù)據降維,明顯地加快了檢索速度,但是比較2個矩陣的相似度依然不是一個高效的運算。文獻[7-10]提出使用近似最近鄰(approximate nearest neighbor,ANN)算法加速運算,如局部敏感哈希(locality sensitive hash,LSH),將高維度的特征數(shù)據映射到低維度的二值空間中,形成二值編碼后,比較它們的漢明距離可以進一步提高檢索速度[11]。
在Alex-Net網絡之后涌現(xiàn)出了一系列表現(xiàn)優(yōu)異同時也更加復雜的卷積網絡,如VGGNet[12]、Inception[13]和Xception[14]等,這些網絡雖然提高了圖像檢索的精度但因為巨大的計算開銷同時也增加了網絡訓練的難度。
本文設計的檢索方法提供了一種簡潔有效的圖像檢索框架。在計算資源有限的情況下,利用遷移學習方式[4]使用VGG16深度卷積神經網絡在ImageNet數(shù)據集上訓練好的模型完成圖像檢索任務,并使用LSH算法進一步提升檢索速度。
圖1 檢索圖片F(xiàn)ig.1 Retrieve image
通過遷移學習方式使用VGG16深度卷積神經網絡[12]在ImageNet數(shù)據集上訓練好的模型,先采集由其全連接層輸出的高維圖像特征,再經局部敏感哈希處理保存圖像的二值化特征編碼建立圖像的特征數(shù)據集,最后將待檢索圖片輸入到網絡中得到圖像的特征編碼和數(shù)據庫中的特征數(shù)據集進行比較返回最相近的圖像。
卷積神經網絡(convolutional neural network, CNN)是一種專門用來處理具有類似網格結構數(shù)據的神經網絡,如時間序列數(shù)據和圖像數(shù)據[15],具有很好的特征提取能力,可以層次化提取圖像的像素特征完成高精度的圖像分類。
VGGNet由牛津大學開發(fā)。VGG16網絡[12]包括13個卷積層、5個池化層和3個全連接層。它的輸入為224×224×3(pixel)的RGB圖像,整個網絡只使用3×3的卷積核,卷積步長為1,而池化層均采用2×2的最大池化,由全連接層實現(xiàn)對ImageNet數(shù)據集的分類。
卷積神經網絡全連接層的輸出包含輸入圖像的視覺特征,可以看成為輸入圖像的特定編碼,具有相似編碼的圖像也具有相似的圖像特征[16-17]。使用VGG16網絡在ImageNet數(shù)據集上訓練好的模型,分離網絡的圖像分類層(softmax layer)使用其全連接層的輸出作為圖像檢索的特征編碼,建立檢索圖像數(shù)據集的特征索引(見圖1)。
設圖像數(shù)據集中有N張圖片,數(shù)據集中第i(0≤i≤N)張圖片的特征編碼為vi∈Rm,待檢索圖片特征為vq∈Rm,其中m為特征的維度。2張圖片間的距離定義為
li=‖vi-vq‖q
(1)
在圖片搜索時,將待檢索圖片輸入神經網絡得到檢索圖片的特征編碼vq后與數(shù)據庫中的各圖像特征vi對比,計算圖像特征之間的距離,如式(1),按距離的大小返回距離最小的前n張圖片。
哈希算法指的是構建一個哈希模型,使用該哈希模型,可以將高維度的圖片特征映射為低維度的哈希編碼。局部敏感哈希(local sensitive Hash)算法主要用來解決高維空間中點的近似最近鄰搜索問題。局部敏感哈希函數(shù)定義:
(2)
式中:r為超平面向量符合高維高斯N(0,1)分布[2];vi∈Rm代表樣本的特征向量。
具體過程如下,給1個樣本特征v∈Rm,將v代入哈希函數(shù)H={h1,h2,…,hk},得到二值編碼的計算過程:
y={h1(v),h2(v),…,hk(v)}
(3)
這個過程也可以表示為:
H:v→{h1(v),h2(v), …,hk(v)}
(4)
得到哈希編碼后,對圖片進行最近鄰搜索,通過計算待檢索圖片的哈希碼與數(shù)據庫中各圖片哈希碼的漢明距離,得到與待檢索圖片特征最相似的結果。
2張圖片的特征向量為vi和vj,它們的哈希編碼分別為yi=[h1(vi),h2(vi), …,hk(vi)]和yj=[h1(vj),h2(vj), …,hk(vj)],則它們的哈希距離定義為:
dH(yi,yj)=‖yi-yj‖1
(5)
在實際計算中,因為哈希碼由0和1構成,因此其哈希距離可以直接通過計算機中的位操作來進行,因此大大提升了計算速度。相較于在原始的特征空間中利用圖片特征進行檢索,利用圖片的哈希編碼進行最近鄰搜索明顯地加快了檢索的速度。
在ImageNet ILSVRC2012_img_val驗證數(shù)據集上檢驗實驗的效果。此數(shù)據集是ILSVRC2012訓練數(shù)據集的驗證數(shù)據集包含 50 000 張不同類型的圖片。實驗先利用VGG16網絡建立數(shù)據集圖片的特征索引,然后進行檢索,驗證實驗的檢索精度,最后使用局部敏感哈希加速檢索速度,提高大規(guī)模圖像數(shù)據檢索的時效性。
使用基于距離排序的準確率測量方法,給出帶查詢圖片q,檢索出數(shù)據庫中距離q最近的前k張圖片,其中第i(0≤i≤k)張圖片的標簽(label)若與圖片q的標簽相同則記val(i)=1,否則記val(i)=0。檢索精度P的計算公式為
(6)
取j張圖片,每張圖片的檢索精度記為pj則模型的平均檢測精度為:
(7)
使用10張驗證集中的圖片(見圖1)。每張圖片檢索時取k=1、5、10,經過多次檢索實驗,上述網絡的檢索精度如表1所示。部分圖片檢索結果如附錄1所示。
表1 圖片檢索精度Tab.1 Image retrieval accuracy
由實驗結果分析可見當k=1時,即對輸入圖像進行匹配時可以完全精準地匹配到數(shù)據集中的對象。當k=5、10時,基于圖像內容的檢索精度分別為0.93和0.83,在準確判斷圖像類別的基礎上還可以依據圖像的像素特征返回相近的圖片。
使用局部敏感哈希算法將圖像的高維特征映射到8維的哈??臻g中建立圖像索引,然后對上述提到的10張標準圖片檢索。在上述相同數(shù)據集上檢索的時間,見表2。其中部分檢索圖像結果如附錄2所示。
表2 使用VGG網絡和VGG+LSH算法檢索的時間開銷Tab.2 Retrieval time using VGG network and VGG+LSH algorithm s
由上述實驗結果可見在大規(guī)模數(shù)據集上使用這種方法可以明顯提高檢索的速度。在本圖像數(shù)據集(50 000 張)中局部敏感哈希算法將檢索速度提升了近3倍。使用上文設定的10張標準檢索圖片,按式(7)計算局部敏感哈希算法檢索圖片的精度。取k=1、5、10,經過多次檢索實驗,上述網絡的檢索精度如表3所示。實驗表明使用VGG16網絡結合局部敏感哈希算法檢索圖像可以在不明顯影響檢索精度的情況下大幅提升檢索速度。
表3 VGG+LSH檢索精度Tab.3 Image retrieval accuracy of VGG+LSH
本文通過使用深度卷積神經網絡的全連接層輸出作為圖像的特征編碼,用于端到端的基于內容的圖像檢索,并使用局部敏感哈希算法加速檢索。實驗表明使用VGG16網絡結合局部敏感哈希算法檢索圖像可以大幅提升檢索速度,同時保持較高的檢索精度。本文設計的圖像檢索方法提供了一種在計算資源有限情況下實現(xiàn)大規(guī)模圖像檢索的輕便框架,可有效完成大規(guī)模數(shù)據的圖像檢索和匹配任務。