楊馥溢 何 嘉
(成都信息工程大學計算機學院 成都 610225)
隨著計算機技術的飛速發展,數字圖像的信息量越來越大,基于文本的圖像檢索已不能滿足人們的需求。因此各種基于內容的圖像檢索算法也因此迅速興起,圖像檢索的關鍵步驟是有效的圖像特征提取和準確的特征匹配。
首先如何彌合底層像素信息和高層語義信息,早期通過手工的方式來提取特征描述符,在歐式空間內計算這些描述符的歐氏距離,然后根據歐氏距離來判定兩張圖片是否相似。手工提取特征不但費時費力而且提取的特征往往是不準確的,仍無法去表示圖像的高層語義。研究表明卷積神經網絡能夠學習豐富的中高層圖像特征,更好地提取底層像素。其次隨著圖像數據量越來越大,如何高效地特征匹配,例如卷積神經網絡第七層的輸出包含豐富的圖像信息,但是維度高達1000維,1000維的浮點數向量與1000維的浮點數向量之間求相似度,運算量較大。此時研究人員提出將高維特征向量壓縮到低維度空間,并且以01二進制的方式表達,這樣在低維空間中計算兩個二進制的漢明距離速度非常快,從而可以在一定程度上緩解時效問題。因此,如何構建出一個有效的圖像二進制描述符成了關鍵。本文提出的一個基于深度學習的方法來學習二進制描述符,用于圖像檢索的研究中。
特征描述符[1]在計算機視覺中起著重要作用,已被廣泛應用于眾多的計算機視覺任務,如圖像匹配、目標識別和圖像檢索[2]等。
1)實值描述符
1999年David G.Lowe提出尺度不變特征變換SIFT[3]算法(Scale-invariant feature transform)來學習的豐富圖像特征,該描述符都有很強的辨別能力,主要彌合了低級像素和高級語義信息之間的差距[4]。但是它們是高維實值描述符,并且通常需要高計算成本。
2)為了降低計算復雜度,提出了幾個輕量級二進制描述符
2010 年 EPFL的 Calonder提出 BRIEF[5](Binary Robust Independent Elementary Features)算法,該算法是對已檢測到的特征點進行描述,它是一種二進制編碼的描述子,事先利用特征點檢測算法得到特征點的位置,再在特征點的中心取鄰域,隨機選取兩個點建立特征描述符。但是BRIEF描述子不具有旋轉不變性與尺度不變性。
2011 年 Ethan Rublee等人提出 ORB[6](Oriented Brife)算法,該算法首先檢測特征點,利用計算中心矩的方法計算角點方向,將該方向作為主方向建立特征描述符。但是效果不明顯。
同年 Stefan Leutenegg提出 BRISK[7](Binary Robust Invariant Scalable Keypoints)算法,采樣模式是均勻采樣模式,即在同一圓上等間隔的進行采樣,同時為了保證尺度不變性,考慮在找極值點時不單單要找原圖像這一個尺度的,而是找多個尺度中的極值點,并把離散的尺度進行擬合以得到特征點真實的尺度。
2012 年 Alexandre Alahi提 出 FREAK[8](Fast Retina Keypoint)算法,采樣模式發生了改變,它采取了更為接近于人眼視網膜接收圖像信息的采樣模型。
上述二進制描述符對排序和匹配非常有效。給定的二進制描述符,可以通過經由XOR按位操作計算二進制描述符之間的漢明距離來快速測量圖像的相似性[9]。由于這些早期的二進制描述符是通過簡單的緊密度比較計算的,它們通常對尺度,旋轉和噪聲敏感是不穩定的。
3)哈希算法學習二進制描述符
局部敏感哈希 LSH[10](Locality-Sensitive Hashing)是把空間中的兩個數據經過一種映射方式,如果這兩個數據在新的空間相鄰的概率就會越大,而不相鄰的數據映射到同一個桶的概率就會越小。
語義哈希SH[11](semantic hashing)是為每個圖像尋找一種二進制編碼,使兩個對象的相似度與其編碼之間的海明距離相關,即相似度高的對象對應的編碼海明距離小,相似度低的對象對應的編碼海明距離大。
譜哈希 SpeH[12](spectral hashing)通過頻譜圖分割生成高效的二進制描述符。
迭代量化 ITQ[13](Iterative Quantization)使用迭代優化策略找到具有最小二值化損失的投影。
4)深度學習哈希
CNNH(Convolution NeuralNetwork Hashing)[14]:首先通過對相似度矩陣(矩陣中的每個元素指示對應的兩個樣本是否相似)進行分解,得到樣本的二值編碼;然后利用CNN對得到的二值編碼進行擬合。
DNNH(Deep Neural Network Hashing)[15]:網絡使用三張圖像構成的三元組進行訓練。在三元組中,其中的第一張圖像和第二張圖像是相似的,而第一張圖像和第三張圖像則是不相似的。基于三元組的損失函數的目標是:在得到的Hamming空間中,相似樣本間的距離小于不相似樣本間的距離。
DSH(Deep Supervised Hashing)[16]:在該文中添加了一個正則項,使網絡的輸出值接近于二值編碼。當網絡的輸出和期望得到的值偏差越大的時候,損失也越大,但是同時,梯度的值保持在-1或+1,來保證訓練過程的穩定性。
VGGNet[17]于 2014 年牛津大學 Visual Geometry Group視覺幾何組組員所提出,在ILSVRC取得了定位第一、分類第二的成績。與AlexNet相比較,VGGNet共16層,其中13層的卷積層,3層的全連接層,網絡結構如表1所示。VGGNet16主要改進后的好處主要有三點:一是3*3的尺寸可以捕獲上下左右和中心的信息;二是兩個3*3的卷積層可以代替5*5,可以減少參數,節省資源;三是卷積層后與非線性激活函數的結合,多個卷積層則有多個非線性激活函數,這樣更能準確的提取出深層圖像特征。當然VGGNET也有一定的缺點,因為網絡層次過深,則參數過多需花費大量的訓練時間,但是隨著GPU并行計算的出現,該問題也能隨之解決。

表1 VGGNet16網絡結構
首先使用VGGNet16網絡用來提取圖像特征,然后用新的全連接層代替深度卷積神經網絡的Softmax分類層,并對該層進行二值化(用0、1表示),得到相應二進制描述符。此時二進制與二進制計算漢明距離可以提高圖像檢索的速度;最后,本文優化了損失函數。第一優化在二值化過程中產生的量化損失,減少量化損失,使量化前和量化后結果最為接近;第二考慮不同的旋轉角度對圖像檢索的影響,減少原圖像和旋轉圖像之間的二進制描述符誤差,捕獲更多不相關的信息,更能實現有效的圖像檢索。深度卷積神經網絡結構圖如圖1所示。

圖1 深度卷積神經網絡結構圖
根據本文描述,所學習到的二進制特征描述符應該滿足兩個基本條件:一是高質量提取圖像特征,二是減少計算花費。因此首先假如共有n個樣本,其中,圖像樣本通過VGGNet16網絡的學習,學習到一組非線性投影參數W=(w1,w2,w3,…wk);其次將輸入圖像量化為二進制向量Bn;最后為了學習一串二進制描述符并應用于圖像檢索中,所學習到的W應滿足如下要求:
1)減少量化損失;
2)減少旋轉前和旋轉后誤差損失。
根據卷積神經網絡前向傳播算法求得fk(X;W)如公式(1)所示。

其中k=12bit、24bit、32bit;
以某樣本X為例,為了得到0、1的二進制字符串,量化過程求得Bn如公式(2)所示。

其中符號函數sign f(X;W)如公式(3)所示。

3.2.1 減少量化損失
本文的方法是將輸入圖像映射成一串二進制串。在量化過程中,為了能更多地保留圖像的原始信息,因此需要減少量化過程中的損失,這樣留下的原始圖像信息就越多。根據公式(2)設計減少量化損失L1(W)如公式(4)所示。

3.2.2 減少旋轉前和旋轉后誤差損失
由于VGGNet16網絡僅僅只考慮了多尺度的研究,但是圖像旋轉后會給檢索帶來一定的困難,因此參考選擇了不同的旋轉角度來提高提取圖像特征的準確率,主要是減少圖像旋轉前后的二進制誤差[18],從而提高檢索效率。隨著增加圖像旋轉度時,估計誤差可能會變大,根據估計誤差,首先使用懲罰因子參數ε來表示對損失的重視程度。懲罰因子最初用于SVM[19]分類中,表示分類與損失之間的權值。因此通過懲罰參數將旋轉后樣本xi分類為 yi類。當懲罰參數較小時,則起不到對旋轉樣本的懲罰作用,隨著增大懲罰因子的值,雖然能實現將旋轉后的樣本點完全正確的分類,但是這樣將會導致過擬合,泛化能力不夠,故選取合適的懲罰參數ε對本實驗很重要。然后根據上述量化過程減小前后旋轉誤差如公式(5)所示。

結合公式(4)和公式(5),提出本文的總體損失函數如公式(6)所示,根據反向傳播和隨機梯度下降算法更新W。

根據本文設計思想,大致算法步驟如表2所示。

表2 算法步驟
基于內容的圖像檢索流程如圖2所示。

圖2 圖像檢索流程圖
CIFAR10由60000張32*32的RGB彩色圖片構成,共10個分類。50000張訓練,10000張測試。這個數據集最大的特點在于識別遷移到了普適物體,部分數據集如圖3所示。

圖3 CIFAR10數據集圖
本文采用開源框架CAFFE,CAFFE的全稱是Convolutional Architecture for Fast Feature Embedding,它是一個開源的深度學習框架,核心語言是C++,支持Python和Matlab接口,既可以在CPU上運行,也可以在GPU上運行。
對圖像提取相應的特征后,特征與特征之間選擇合適的度量算法需要進行相似度匹配。因為本文比較的特征是一串0、1的字符,所以可以選取用漢明距離來計算相似度。對兩個字符x,y進行異或運算,統計結果為1的個數,那么這個數就是漢明距離。漢明距離越大表明差異越大,越不相似。
1)查準率
查準率(Precision)指一次檢索結果中,返回的圖像中的正確圖像占所有檢出的比例,公式如(7)所示。

2)查全率
查全率(Recall)指在一次檢索結果中,返回結果里的正確圖像在檢索系統中所有相關圖像中所占的比例,公式如(8)所示。

3)平均精度均值(mean Average PrecisionmAP)
由于查準率和查全率這兩種評價標準在一定程度上是相互限制的,通常查全率高,則查準率低;查準率高,則查準率低。因此引入了精度均值(Average Precision-AP),用來表示查準率和查全率兩條曲線下的面積,而mAP是多個類別AP的平均值。因此本文選擇平均精度均值來作為衡量標準。
本實驗采用GPU運行,節省運行時間,使用CIFAR10彩色圖像數據集進行實驗,CIFAR10數據集像素為32*32,因為本文網絡考慮到使用VGGNET16,所以將數據進行預處理,首先歸一化為256*256,然后中心剪裁為224*224。采用在ImageNet大規模數據集上訓練得到的預訓練權重來初始化網絡參數,隨后使用隨機梯度下降(Stochastic Gradient Descent,SGD)方法和反向傳播算法根據總體損失函數公式(6)優化W。本實驗網絡中的批處理大小設置為32,旋轉圖像角度如公式(5)中分別為0、±10、±20、±30。根據網絡loss層的參數loss_weight,該參數的主要作用表現為對該層損失的重視程度,越重視則取1,故設置α為1,懲罰參數ε取100。當β=0.1時,返回檢索前top 1000的實驗結果并與其他算法進行比較,各經典算法精確度比較如表3所示。

表3 各算法精確度比較(mAP%)
在不同的旋轉角度下,當旋轉角度θ=[-10,10]時,當旋轉角度θ=[-20,20]時以及當旋轉角度θ=[-30,30]時,各算法精確度比較如圖4所示。

圖4 不同旋轉角度的精確度圖
其中當二進制長度為12bit,不同旋轉角度的分類錯誤率如表4所示。

表4 分類錯誤率比較(%)
首先根據表3可以發現二進制位數越長,精確度越高,并且在VGGNet16網絡下改進損失函數檢索效率有明顯得提高;其次根據圖4可以得到,當圖像旋轉角度在[-20,20]時,圖像檢索效率較好。
在本文中,提出了基于VGGNet16的深度神經網絡模型來學習一串二進制描述符用于圖像檢索中。主要采用改進損失函數的方式來學習“好的”二進制描述符,并在CIFAR10數據集上驗證該實驗是否有效。實驗表明減少量化損失以及考慮旋轉因素可以提高圖像檢索的準確率。同時懲罰參數的取值難以確定,太小起不到懲罰作用;太大則由于誤差的影響會導致錯誤,因此應該再反復得做實驗確定最優的懲罰因子值。