施鴻源,宋井寬,全成斌,趙有健
1(清華大學 計算機科學與技術系,北京 100084)
2(電子科技大學 未來媒體中心,成都 611731)
隨著互聯網上數據不斷膨脹式地增長,如何準確且快速地分析海量數據,并在其中提取出想要的信息,成了一項十分具有挑戰性的任務.在這些數據中,圖像與視頻數據又占據了絕大部分.因為視頻檢索問題能轉化為圖像檢索問題,所以如何解決圖像檢索問題成了計算機視覺領域中一個重要的研究方向.
傳統圖像檢索領域里的關鍵技術分為基于文本的圖像檢索技術(Text-based Image Retrieval,簡稱為TBIR技術)和基于內容的圖像檢索技術(Content-based Image Retrieval,簡稱CBIR技術),近幾年在深度學習發展與GPU計算能力逐漸提高的情況下,CBIR技術慢慢變成了圖像檢索領域的主流技術.
在數據集比較小的時候,CBIR可以通過某種特征提取方法將圖片的像素特征直接提取出來,直接計算查詢圖像與數據集中圖像之間的特征距離,并且按照距離的遠近返回圖像查詢結果.這種方式的缺點是存儲空間較大和速度較慢.為了解決在大數據時代下CBIR速度較慢與存儲空間較大這兩大問題,基于深度學習的哈希圖像檢索方法已經成為解決以上兩個缺點的有效方法.
為了解決上述問題,本文提出了強化生成對抗哈希方法,該方法利用最新的生成對抗網絡與最近鄰相似度矩陣構造來實現無監督的深度學習,并在本文的模型中,提出了一個具有2層結構的判別器,分別用來識別(圖像,哈希碼)聯合組與圖像,主要用于加強訓練生成器與判別器,而編碼器的訓練引入了最近鄰損失用于平衡以完成生成對抗網絡中的極大極小博弈.
最后本文在常用的數據集CIFAR-10與NUS-WIDE上進行了實驗,圖片檢索效果比其他最新的無監督哈希算法相比在準確率上得到了提高.
深度哈希方法根據是否依賴數據標簽可以分為:無監督哈希算法、半監督哈希算法與有監督哈希算法.有監督與半監督哈希算法因為數據有標簽,所以在準確性上相比無監督哈希算法有所提升,但是由于有標簽數據的匱乏與標注標簽的大量人力消耗,無監督哈希算法的應用場景顯而易見是更多的.其中近年來最具代表性無監督哈希方法的有譜哈希[1]、局部敏感哈希[2]與最近鄰敏感哈希[3]等.
由文獻[4,5]中可知,生成對抗網絡是近年來在無監督學習領域中應用最為廣泛的網絡之一,可以用來生成虛假的圖片、超分辨率圖片、完成語義分割任務、進行圖片壓縮等.
而在BGAN[6]中,研究人員首次將生成對抗網絡應用到圖像檢索中,利用生成圖像來輔助網絡完成無監督學習,但是其依舊存在著精準度不高的缺點.
本文針對以往算法的缺點,提出了一種適用于圖像檢索問題的具有雙層判別器的生成對抗網絡.并在此基礎上提出了強化生成對抗哈希方法,并在本部分中會詳細介紹.
本文的網絡結構如圖1所示,主要分為3個部分:編碼器網絡、判別器網絡和生成器網絡.編碼器網絡的作用是將圖像轉化為哈希碼;生成器網絡的作用是將隨機生成的哈希碼生成虛假的圖像;判別器網絡的作用是判斷其輸入的信息是真是假.

圖1 網絡流程示意圖
在這3個網絡之外,本文還對編碼器網絡進行了一定優化,將圖片通過ResNet[7]提取出深層特征之后,建立特征的最近鄰矩陣,并利用最近鄰矩陣來幫助編碼器更好的學習到語義相似度高的哈希碼.
在圖1之中,Ls、LA、La代表著網絡中的3個損失函數,其中Ls負責利用最近鄰矩陣來幫助訓練更強的編碼器,而LA與La則負責利用聯合組信息幫助訓練更強的判別器,其中3個損失函數的詳細信息下文中會介紹.
3.1.1 編碼器網絡
本文設計的編碼器網絡采用了基于VGG-F[8]的網絡結構,并在該網絡結構的最后一層后面加上了一個哈希層,哈希層的作用是限制編碼器網絡最后的輸出是一個近似哈希碼,并將生成的近似哈希碼與真實的圖像合稱為編碼器聯合組.
在以往的深度哈希方法中,往往是使用sign函數來作為哈希層的激活函數如公式(1)所示:
(1)
但是sign函數不是一個平滑的函數,容易發生“梯度消失”[9]的情況,使編碼器網絡無法有效地利用向后傳播算法更新參數,從而無法學習到高語義相關性的哈希碼.于是本文找到了一個與sign函數近似的函數tanh函數,如公式(2)所示:
(2)
公式(3)表達了tanh函數與sign函數之間的關系:
(3)
本文在網絡的最后一層哈希層中用公式(2)來學習哈希碼,并且加入超參數λ,逐漸增大λ取值來在保證約束編碼器網絡最后輸出是哈希碼的同時,可以通過向后傳播算法來更新參數.
3.1.2 生成器網絡
生成器網絡的輸入是一個隨機的近似哈希碼,通過生成器網絡,最后的輸出是一張虛假的圖像,來幫助判別器網絡的訓練.由文獻[10]中可知,DCGAN[11]使得生成的圖片更加高清,于是在本文中采用了與DCGAN中的生成器網絡類似的生成器網絡.
在這里生成器與一般的生成對抗網絡中的生成器區別是:利用卷積層代替了原生成器中的池化層,并且將生成器中所有的全連接層去除,這樣可以大大減少參數的數量,并且采用了BN層(Batch Normalization)[12]來幫助網絡進行收斂.
3.1.3 判別器網絡
對抗器網絡的輸入是編碼器聯合組與生成器聯合組,最后的輸出是一個在0與1之間的預測值,最后輸出越接近1,則代表該聯合組越大概率是真實的聯合組;反之若輸出越接近0,則代表該聯合組越大概率是虛假的聯合組.
判別器網絡由3個網絡模塊組成,分別是:圖像特征判別模塊組、哈希碼判別模塊組與聯合判別模塊組.
圖像模塊組和哈希碼模塊組的輸入分別就是圖像和哈希碼,他們的作用是將圖像與哈希碼映射到潛在表征中,然后再將這兩個模塊組的輸出拼接起來,輸入到聯合判別模塊組中,結構如表1所示.

表1 判別器網絡結構
在表1中,哈希碼判別模塊與聯合判別模塊因其網絡中全部是由全連接層組成的,并沒有卷積層,所以沒有步長數據.
本文的目標函數分為兩個部分:判別器損失函數LD與最近鄰的損失函數LS.并將目標函數定義如公式(4)所示:
L=LD+λLS
(4)
其中λ是一個超參數,用來平衡判別器損失函數LD與最近鄰的損失函數LS之間的權重.損失函數LD與LS詳細計算流程將在下文中給出.
3.2.1 最近鄰損失函數
最近鄰損失函數的主要目的是對編碼器網絡進行約束,使相似的圖像可以在經過編碼器網絡之后在哈希空間中距離較短,即編碼器網絡能生成盡可能有效的哈希碼.
為了達到以上的目的,首先本文要構造近似最近鄰矩陣S,在最近鄰矩陣S中,若兩張圖像相似,則sij=1;若兩張圖像不相似,則sij=-1.研究[13]表明,經過預處理的深層神經網絡提取的圖像深度特征包含著豐富的語義信息,并且受到[6]的啟發,本文使用了一種新穎的構造最近鄰方法.
本文使用ResNet-152[7]來提取圖像的深度特征,然后計算每個圖像與其他所有圖像的余弦距離,并取前K1個距離最近的圖像,其中K1是一個超參數,可以自行調整.若一個圖像與K1個圖像的距離明顯小于與其他圖像的距離,本文認為這K1個圖像是這個圖像的最近鄰,即在語義上是相似的,而其他圖像在語義上是不相似的.即最初的最近鄰矩陣如公式(5)所示:
(5)
其中K1-NN表示以特征距離排序,xi是xj的前K1個最近鄰.
若圖片xi與圖片xj相似,則它們的最近鄰也應該相似,也就是說它們應該擁有更多的共同最近鄰,基于該思想,第2個相似度矩陣如公式(6)所示:
(6)
其中K2-NN表示以共同最近鄰數目排序,xi是xj的前K2個最近鄰.
最后,結合公式(5)與公式(6)這兩個相似度矩陣來得到一個最終的語義相似度矩陣如公式(7)所示:
(7)
在得到相似度矩陣之后,本文就可以直接得出最近鄰損失函數:
(8)
其中b代表著圖像的哈希碼,K代表哈希碼的長度,因為如果使用漢明距離來作為直接的損失函數,難以通過向后傳播來對網絡中的參數進行優化,于是本文使用公式(8)來作為最近鄰損失.

3.2.2 判別器損失函數
判別器損失函數分為兩個部分:一部分是用來約束生成數據的分布與原數據分布一樣,本文將這部分稱為對抗損失;另一部分是用來約束整體損失,本文將這部分稱為聯合損失.
對抗損失的目的是約束生成器生成更加清晰與富有語義的圖像,在這里本文使用[14]中的損失函數:
(9)

(10)

LD=La+LA
(11)
網絡具體傳播過程是先從圖像庫里通過ResNet-152來提取圖像的深層特征并且獲得相似度矩陣,同時圖像通過編碼器網絡中的VGG網絡與哈希層的公式(2)來獲得哈希碼Bi如公式(12)所示:
Bi=E(Ii;θ)
(12)
公式(12)中E代表編碼器(Encoder),θ表示編碼器中的參數,I表示圖像.
隨機生成一個哈希碼,并將哈希碼Br輸入生成器(Generator),獲得重構圖像如公式(13)所示:
Ir=G(Br;μ)
(13)
公式(13)中μ代表生成器中的參數.
最后將生成器聯合組和編碼器聯合組一起輸入到判別器中,讓判別器來計算聯合組是否為真實聯合組的概率如公式(14)所示:
P=D((I,B);δ)
(14)
公式(14)中δ代表判別器中的參數,P代表概率.公式(12)-公式(14)表示了參數學習中的前向傳播過程.
在本文設計的深層網絡中,δ、μ、θ是需要學習的參數,數據先通過深層網絡計算本文的判別器損失函數LD與最近鄰損失函數LS,然后通過向后傳播來更新參數并學習網絡,參數更新過程如公式(15)-公式(17)所示:
δ←δ-k?δ(LD)
(15)
μ←μ-k?μ(LD+LS)
(16)
θ←θ-k?θ(LD)
(17)
這里k是一個超參數,代表著學習速率,學習速率隨著網絡的訓練次數不斷降低,當網絡訓練收斂時,代表網絡已經學習完成,此時停止訓練.
本文方法的實驗環境是:CPU為Intel Xeon E5-2620 V4@2.2GHz,內存為128GB DDR4 2400,GPU為NVIDIA TITAN Xp,12G顯存.
本文采用了CIFAR-10數據集與NUS-WIDE數據集:
CIFAR-10數據集一共有10個類別的圖像,共有60000張圖片,所有圖片均為32×32像素的彩色圖像,每一類分別有6000張圖像.在測試過程中,本文將其中50000張圖像作為本文的訓練集,其中每類圖像有5000張,而另外10000張圖像作為測測試集,其中每類圖像有1000張.
NUS-WIDE數據集由大約270000張圖像構成,其中每張圖像都具有由人工標注的標簽,總共有81種不同的標簽,本文將其中10個標簽保留下來.在這10個標簽里,每個類別隨機挑選出1000張圖像作為訓練集;并在訓練集之外,在標簽里隨機挑選出100張圖像作為本文的測試集.
本文使用了mAP(Mean Average Precision)來作為評價標準,mAP是圖像檢索常用的一個標準,如果對于一次查詢,返回R個圖像,則其AP計算方法如公式(18)所示:
(18)
其中N表示總共查詢的個數,P(r)代表對第r個查詢的精度,δ(r)表示第r個查詢是否與圖像相關,即是否帶有相應的標簽,如果其中帶有相應的標簽,則本文令δ(r)=1;反之,則令δ(r)=0.而mAP就是多次AP計算之后的平均值.
因為本文的算法是無監督的,所以本文與4種基于無監督的淺層哈希方法(ITQ、DSH、SpH與SGH)和兩種最新的無監督深度哈希算法(DeepBit[15]和BGAN[6])進行了比較.
為了證明本文的算法準確率并不是單純依賴于深度網絡表征能力的提升,本文將數據集經過深度網絡提取特征來對淺層無監督哈希方法進行實驗,在這里本文將數據集通過VGG-F來提取特征,并且將最后一層FC7層特征作為淺層哈希學習的方法.
本文與其他哈希算法的對比結果如表2所示.

表2 本文的方法與其他方法進行對比
在表2中,最好的實驗結果用加粗表示.從表2中可以看出在兩個數據集上,本文的方法在CIFAR-10上提升更大.具體來說,本文的方法在CIFAR-10上與最新的方法(BGAN)對比時,在16和32哈希長度上mAP提升了9.8%和6.9%,而在NUS-WIDE上,本文的方法在16和32哈希長度上mAP分別提升了7.8%和9.9%.
本文方法在CIFAR-10上進行了網絡訓練時間與檢索時間測試,結果如表3所示.

表3 本文的方法效率對比
從表3中可知,我們的方法在提高了準確率的同時,在訓練時間與檢索時間上都比較快,相對于Deepbit與BGAN來說,我們的方法參數與網絡更為復雜,所以在網絡訓練時間上會稍慢一點,但是檢索速度還是非常高效的.
可以發現本文在保留了不需要標簽進行深度學習訓練優點的同時,準確率相比其他的無監督哈希方法有所提升.
隨著哈希碼長度的增加,所有哈希方法準確率也在提升,特別是在基于深度學習的無監督哈希方法中表現更為明顯.其可能的原因是隨著哈希碼長度的增加,哈希碼所能保存的語義信息也更多,在通過哈希層轉化為哈希碼后,損失的圖像信息更少.
同時本文也發現淺層哈希方法如果使用深層網絡提取出來的特征,他們的性能也有明顯的增加.由此可知,深層神經網絡在提取圖像特征時,有著明顯的作用.
深度學習已經在圖像識別,語音視頻處理等領域中占據了重要的地位.而在圖像檢索中,深度學習往往因為需要大量人工標注的數據而在應用場景上受到局限,于是在本文中提出了一種無監督深度哈希的圖像檢索方法,可以不依賴人工標注,并且在時間和儲存空間上相比較于其他的有監督深度學習方法有所改進.
本文結合最新的生成對抗網絡,提出了一個用于圖像檢索的無監督深度哈希模型.模型使用了兩層判別器結構,在使用生成對抗網絡的交叉熵損失函數的同時,為了更好地利用編碼器聯合組與生成器聯合組信息,加入了聯合組損失函數.為了避免擁有兩個損失函數生成器過于強大,影響生成對抗網絡的極大極小博弈,本文引入了最近鄰矩陣構造來約束編碼器的編碼生成,同時利用最近鄰損失函數來幫助編碼器進行訓練.
雖然本文的方法相對其他無監督哈希方法在數據集上取得了最好的效果,但是本文的工作依舊存在許多問題:比如本文的方法在檢索簡單圖片時效果比較好,而在檢索帶有背景信息的圖片時,效果相對于傳統的淺層哈希方法來說,效果提升并沒有那么明顯.
在后續的工作中,本文可能會更加關注將傳統的淺層哈希方法思路加入本文的神經網絡構造中,來獲得更好的算法性能提升.