【大規模圖像檢索的利器】Deep哈希算法介紹

原文:http://mp.weixin.qq.com/s?__biz=MzI1NTE4NTUwOQ==&mid=2650324858&idx=1&sn=7a473d8d48aeef07fd972a667771668a&scene=23&srcid=0620hnQ6EUAkSrZl4jqEQss0#rd

前言

????????在最近鄰搜索(nearest neighbor search)問題中,給定一個查詢(query),目標是要找到空間中離它最近的點。這里所說的空間可以是任意的空間,比如特征空間,或者語義空間。具體來說,在圖像檢索這個問題中,每張圖像對應空間中的一個點,而所謂的“近”既可以是外觀上的近(看著像),也可以是語義上的近(同類)。以下圖為例,當我把左側的圖像扔給兩個不同的搜索引擎后,得到的返回結果就對應上面的兩種情況。


????事實上,如果不對效果做什么要求的話,想要實現上面這樣的功能其實并不難。最直接的方法就是用一種特征來表示每張圖像(比如AlexNet中fc7層的輸出),然后通過計算查詢圖像(上圖左)和數據庫中圖像在特征空間中的歐式距離,并按照距離從小到大的順序,返回數據庫中的圖像。
????上面這種方法雖然看上去簡單粗暴,但是卻不失為一種有效的做法。但是,隨著互聯網上的圖像越來越多,這種方法的短板也體現得淋漓盡致——存儲空間消耗大,檢索速度慢。具體來說,如果使用上面提到的AlexNet中fc7層的輸出來表示每張圖像,那么表示一百萬張圖像就需要大約15GB的存儲空間(單精度浮點數),而計算查詢圖像和數據庫中每張圖像的距離,則需要8192次加法操作和4096次乘法操作,遍歷完所有的一百萬張圖像再返回結果的話,恐怕用戶早就等得不耐煩了??紤]到現在互聯網上的數據規模動輒就是上億的級別,這種方法就顯得更不靠譜了。????????為了解決上面方法對存儲空間和檢索時間的不切實際的要求,近年來近似最近鄰搜索(approximate nearest neighbor search)技術發展迅猛,因為其對空間和時間的需求大幅降低,而且能夠得到不錯的檢索結果,因此成為了一種實用的替代方案。在這其中,哈希(hashing)作為一種代表性方法,近年來受到了廣泛的關注。本文首先對哈希算法的發展歷程進行簡單的介紹,然后按照相關性,對近年來的一些主要的深度哈希算法進行介紹,最后對現有深度哈希方法進行簡單的總結。

發展歷程

????????在哈希算法中,通常的目標是將樣本表示成一串固定長度的二值編碼(通常使用0/1或-1/+1表示其中的每個bit),使得相似的樣本具有相似的二值碼(使用Hamming距離度量二值碼之間的相似性)。在最初的工作中,作者提出在特征空間中隨機選擇一些超平面對空間進行劃分,根據樣本點落在超平面的哪一側來決定每個bit的取值。這類方法雖然有嚴格的理論證明保證其效果,但是在實際操作中通常需要比較多的bit才能得到令人滿意的檢索效果。
????在之后的工作中,為了得到編碼長度更短、檢索效果更好的二值碼,人們進行了很多嘗試,包括構建不同的目標函數、采用不同的優化方法、利用圖像的標簽信息、使用非線性模型等。隨著研究的深入,利用二值編碼進行檢索的性能也逐步提升。????????與常見的機器學習算法不同,哈希方法的目標是得到二值編碼,所以優化過程中經常會遇到離散取值的約束,因此通常來說無法使用基于梯度的方法對目標函數進行優化。為了簡化問題,通常的做法是改用一個更寬松的約束,比如不再要求“二值碼”是二值的,而是只要在一個規定的范圍中即可。優化結束后,再對松弛過的“二值碼”進行量化,得到最終的真二值碼,深度哈希算法通常也采用這種做法。

深度哈希算法


????最早的基于深度學習的哈希算法應該是2009年由Hinton研究組提出的Semantic Hashing方法[1]。對于這個方法來說,深度模型只是提供了一定的非線性表示能力,而網絡的輸入仍是手工設計的特征,和現在通常意義上的深度學習算法還是有一定的區別,因此本文中不作具體介紹。在這之后,基于Semantic Hashing出現了一些改進,但是也都沒有掀起什么大的風浪,在此一筆帶過。
????時間來到2014年,受到CNN強大學習能力的鼓舞,中山大學的潘炎老師研究組和顏水成老師合作,在美國人工智能協會年會(AAAI 2014)上發表的論文提出了一種名為CNNH(Convolutional Neural Network Hashing)的方法[2],把基于CNN的深度哈希算法推到了前臺。CNNH的做法如下圖所示,首先通過對相似度矩陣(矩陣中的每個元素指示對應的兩個樣本是否相似)進行分解,得到樣本的二值編碼;然后,利用CNN對得到的二值編碼進行擬合。擬合的過程相當于一個多標簽預測問題,作者使用了交叉熵損失來達到這個目的,這一步對應圖中最右側紅色節點。此外,作者還提出加入分類的損失函數來進一步提升性能(softmax,對應圖中最右側黑色節點)。


????盡管實驗中CNNH相比傳統的基于手工設計特征的方法取得了顯著的性能提升,但是這個方法仍然不是端到端的方法,學到的圖像表示不能反作用于二值編碼的更新,因此并不能完全發揮出深度學習的能力。為了更好地挖掘深度模型的潛力,在這之后,出現了不少改進方法。
????2015年計算機視覺與模式識別會議(CVPR 2015)中,一下子出現了四篇基于深度學習的哈希算法。在這四篇文章之中,其中一篇文章(在此不對這篇文章做詳細介紹,有興趣的同學可以參考[3])使用手工設計特征作為輸入之外,其余的三篇均為完全的端到端模型。下面具體介紹一下這三篇文章。
????第一篇文章[4]與上面介紹的CNNH一樣,同樣是來自中山大學的潘炎老師研究組和顏水成老師。因為這篇文章中使用了一個比CNNH中的網絡深得多的Network in Network的網絡結構,因此被簡稱為NINH(NIN Hashing)或DNNH(Deep Neural Network Hashing)。這篇文章的做法如下圖所示。網絡使用三張圖像構成的三元組進行訓練。在三元組中,其中的第一張圖像和第二張圖像是相似的,而第一張圖像和第三張圖像則是不相似的。基于三元組的損失函數的目標是:在得到的Hamming空間中,相似樣本間的距離小于不相似樣本間的距離(下圖右上)。值得一提的是,這項工作為了適配哈希學習這個任務,在網絡結構上做了一些有針對性的設計,包括:????(1)為了減小二值碼不同bit之間的冗余性,作者提出使用部分連接層代替全連接層,每個部分負責學習一個bit,各部分之間無連接(下圖左slice layers);????(2)為了避免二值碼學習中的離散取值約束,像大多數哈希方法一樣,作者使用sigmoid激活函數將離散約束松弛為范圍約束({0,1}→(0,1)),同時為了保持學到的特征空間和Hamming空間相似,引入了分段量化函數(下圖右下)。以上這兩部分合在一起,構成了圖中的divide-and-encode模塊。該方法可以端到端的訓練,學到的圖像表示可以反作用于二值碼,因此相比于CNNH,性能有所提升。


????第二篇文章[5]來自中科院自動化研究所的譚鐵牛老師的研究組,和DNNH相比沒有在網絡結構上下太大功夫,而是更多地關注了損失函數這一塊。文章中使用了類似于DeepID2的網絡結構,如下圖所示?;仡^來看圖像檢索這個任務,任務的目的無非就是把數據庫中的圖像,按照和查詢圖像的相關性由大到小的順序,依次返回?;谶@個思想,這篇文章中提出直接讓網絡學習這個排序,因此該方法稱為DSRH(Deep Semantic Ranking Hashing)。事實上,這種做法相當于直接對最終的評測指標進行優化,相當于開啟了上帝模式。但是實際中上帝模式并不是那么容易開的,直接優化排序并不容易,因此作者使用了一個凸上界作為替代,進行優化。


????第三篇文章[6]來自臺北中央研究院的陳祝嵩研究組,出現在當年的CVPR workshop中,其中使用了一種比較直接的方法來學習二值編碼,該方法名為DLBHC(Deep Learning of Binary Hash Codes),方法流程如下圖所示。其核心點為:在預訓練好的網絡倒數第二層和最終的任務層中間,插入一個新的全連接層,這個層使用sigmoid激活函數來提供范圍約束,節點數即為目標二值碼的碼長。通過端到端的finetune,可以將語義信息嵌入到這個新加入的全連接層輸出之中。雖然這么做得到的二值碼中包含語義信息,但是由于在訓練過程中沒有顯式地考慮樣本點之間的相對位置關系,并不能保證Hamming距離近的點在語義上也相近,因此和最終的檢索任務還是有些偏離。


????同年,由中山大學林倞老師、哈爾濱工業大學左旺孟老師和香港理工大學張磊老師等人合作的文章發表在當年的Transactions on Image Processing (TIP 2015)中[7],作者提出了一種使用加權Hamming距離代替標準Hamming距離的哈希方法DRSCH(Deep Regularized Similarity Comparison Hashing),如下圖所示。該方法同樣使用基于三元組的損失,同時使用圖像對(image pair)之間的相似性作為正則項,希望得到的網絡能夠同時保持三元組確定的關系和圖像對確定的關系(實驗表明這兩者雖然看上去是在描述一樣的東西,但是這種做法確實能取得一定的效果提升)。在網絡學習的過程中,加權Hamming距離的權值也作為參數進行更新,從而得到與網絡匹配的權值。雖然這篇文章中使用的加權Hamming距離的時間復雜度要略大于標準Hamming距離,但是也帶來了額外的好處:一方面,可以以很高的效率計算更加精確的距離;另一方面,可以通過權值來選擇bit,從而得到不同碼長的二值碼,而不必像之前的方法一樣每換一個碼長就重新訓練一個模型。此外,和DNNH相似,這篇文章的作者也設計了一種操作來保證學到的空間接近于Hamming空間,其形式類似于雙曲正切函數(tanh)。

????????以上四篇文章中的框架,可以代表大多數深度哈希文章的做法,可以總結為:深度模型學習圖像表示 + sigmoid/tanh函數限制輸出范圍 + 不同的損失函數 + (可選)有針對性的網絡結構。這四個部件合在一起,組合出了很多種不同的方法,在此就不再詳細介紹這些衍生方法了。????????上述框架中,問題比較大的一個地方在于sigmoid/tanh的使用。由于這類激活函數具有飽和的性質,越是當輸出接近期望的值的時候(0/1或-1/+1),梯度就越小,網絡訓練也就越困難。因此,最近的一些工作開始關注sigmoid/tanh的替代品。例如,我們發表在CVPR 2016的工作DSH(Deep Supervised Hashing)[8]中,使用了如下圖所示的一個正則項,來對網絡的輸出進行約束,使之接近二值編碼。當網絡的輸出和期望得到的值偏差越大的時候,損失也越大,但是同時,梯度的值保持在-1或+1,來保證訓練過程的穩定性。此外,類似的正則思想在清華大學的Haiyi Zhu博士等人發表在AAAI 2016和李武軍老師研究團隊發表在2016年國際人工智能聯合會議(IJCAI 2016)的兩篇工作中也有體現[9,10]。和側重于設計損失函數的方法相比,這類方法的關注點在于量化部分,而這在傳統哈希方法中也是一個重要的研究方向。


????以上介紹的深度哈希方法在生成二值碼的時候,只需要將圖像送入訓練好的網絡,并將網絡輸出進行量化。值得一提的是,由于傳統哈希方法需要同時使用多種特征才能達到和深度哈希方法可比的性能,提取特征的時間嚴重拖慢了傳統方法在實際應用中的編碼速度,因此深度哈希方法在編碼速度上甚至有時會優于傳統方法。
????需要指出,目前很多深度哈希算法在對比同類方法的時候,用的都是對比方法原文中的網絡結構,而自己卻用更深、更復雜的結構。在我看來,這種對比并不能很好地反映方法本身的好壞,更合適地對比方法應該是大家使用基本一致的結構進行對比。

其他應用

????????上面介紹的方法解決的都是以圖搜圖的問題,在其他的一些應用方面,深度哈希算法也有用武之地。下面我舉兩個例子進行說明。
????第一個應用是跨模態檢索。一個最常見的例子是:在搜索引擎中輸入一些關鍵詞,找相關的圖像。通常來說,關鍵詞(文本)和圖像并不在同一個空間中,因此無法直接比較。在2016年年初,李武軍老師帶領的研究團隊在arXiv上發布了一篇文章,其中介紹了一種跨模態深度哈希算法DCMH(Deep Cross-Modal Hashing)[11]。這篇文章中,作者利用一個兩路的深度模型將兩種不同模態的數據(文章中是文本和圖像)變換到一個公共空間,并要求相似的樣本在這個公共空間中相互靠近,如下圖所示。通過同時對圖像和圖像、圖像和文本、文本和文本這幾種不同類型的樣本對施加這個約束,可以保證兩種模態樣本的對齊。如此一來,即可實現在公共空間中的跨模態檢索。


????另一種應用是以文本搜文本,即給定一段查詢文本,找到和這段文本相似的其他文本。作為一個經典問題,在IJCAI 2015上,來自中科院自動化研究所的許家銘博士等人提出了一種基于卷積網絡的解法[12],如下圖所示。該方法首先將文本中的每個單詞表示成一個詞向量,將文本轉化為一個寬度等于句子長度,高度等于1,通道數等于詞向量維度的張量。之后通過對文本進行卷積、pooling等一系列操作,得到一組中間表示,并對這組中間表示進行一系列操作得到二值碼。這個方法中詞向量的提取并不能和最終的任務連在一起,因此不能算是完全的端到端模型。作為利用CNN進行文本哈希算法的初步探索工作,這篇文章為深度哈希算法的更廣闊應用開啟了一扇新的大門。


????以上兩個應用作為深度哈希算法在不同領域上的具體實現,都根據手頭的問題對模型進行了相應的修改,以適應對應的任務,而這種靈活性,也正是深度學習的一大優勢。

結語


????基于深度學習的哈希算法,憑借其強大的特征學習能力,一出現就迅速超越了基于手工設計特征的傳統哈希方法。但是,目前的研究還遠沒有到盡頭,更適合這一任務的網絡結構、優化算法等都還有待進一步探索。目前來看,傳統方法非但沒有過時,反而可以在新的深度哈希算法研究中提供一些指導,進一步提升深度哈希算法的能力。

參考文獻

[1] Ruslan Salakhutdinov, Geoffrey Hinton. Semantic Hashing. IJAR 2009.[2] Rongkai Xia, Yan Pan, Hanjiang Lai, Cong Liu, Shuicheng Yan. Supervised Hashing for Image Retrieval via Image Representation Learning. AAAI 2014.[3] Venice Erin Liong, Jiwen Lu, Gang Wang, Pierre Moulin, Jie Zhou. Deep Hashing for Compact Binary Codes Learning. CVPR 2015.[4] Hanjiang Lai, Yan Pan, Ye Liu, Shuicheng Yan. Simultaneous Feature Learning and Hash Coding with Deep Neural Networks. CVPR 2015.[5] Fang Zhao, Yongzhen Huang, Liang Wang, Tieniu Tan. Deep Semantic Ranking Based Hashing for Multi-Label Image Retrieval. CVPR 2015.[6] Kevin Lin, Huei-Fang Yang, Jen-Hao Hsiao, Chu-Song Chen. Deep Learning of Binary Hash Codes for Fast Image Retrieval. CVPR 2015 workshop.[7] Ruimao Zhang, Liang Lin, Rui Zhang, Wangmeng Zuo, Lei Zhang. Bit-Scalable Deep Hashing with Regularized Similarity Learning for Image Retrieval and Person Re-identification. TIP 2015.[8] Haomiao Liu, Ruiping?Wang, Shiguang Shan, Xilin Chen.?Deep Supervised Hashing for Fast Image Retrieval. CVPR 2016.[9] Han Zhu, Mingsheng Long, JianminWang,Yue Cao. Deep Hashing Network for Efficient Similarity Retrieval. AAAI 2016.[10] Wu-Jun Li, Sheng Wang, Wang-Cheng Kang. Feature Learning based Deep Supervised Hashing with Pairwise Labels. IJCAI 2016.[11] Qing-Yuan Jiang, Wu-Jun Li. Deep Cross-Modal Hashing. arXiv:1602.02255.[12] Jiaming Xu, Peng Wang, Guanhua Tian, Bo Xu, Jun Zhao, Fangyuan Wang, Hongwei Hao. Convolutional Neural Networks for Text Hashing. IJCAI 2015.

該文章屬于“深度學習大講堂”原創,如需要轉載,請聯系loveholicguoguo。


作者簡介?

劉昊淼


中國科學院計算技術研究所VIPL課題組博士生,專注于深度學習在大規模圖像檢索、分類中的應用研究。相關研究成果發表在計算機視覺國際頂級學術會議ICCV、CVPR。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,333評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,491評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,263評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,946評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,708評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,186評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,255評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,409評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,939評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,774評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,976評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,518評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,209評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,641評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,872評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,650評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,958評論 2 373

推薦閱讀更多精彩內容