互联网相似图像识别检索引擎 —— 基于图像签名的方式
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                互联网相似图像识别检索引擎 —— 基于图像签名的方式
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.                        
                                互聯(lián)網(wǎng)相似圖像識別檢索引擎 —— 基于圖像簽名的方式
- 博客分類:?
- 圖像識別、機(jī)器學(xué)習(xí)、數(shù)據(jù)挖掘
多媒體識別是信息檢索中難度較高且需求日益旺盛的一個問題。以圖像為例,按照圖像檢索中使用的信息區(qū)分,圖像可以分為兩類:基于文本的圖像檢索和基于內(nèi)容識別的圖像檢索(CBIR:Content Based Image Retrieval)?;谖谋镜膱D像檢索完全不分析和利用圖像本身的內(nèi)容,其檢索質(zhì)量完全依賴于與圖像關(guān)聯(lián)的文字信息與圖像內(nèi)容的相關(guān)性,因此有必要引入基于內(nèi)容的圖像檢索。本為主要討論后者。?
在計算機(jī)視覺中,圖像內(nèi)容通常用圖像特征進(jìn)行描述。事實上,基于計算機(jī)視覺的圖像檢索也可以分為類似文本搜索引擎的三個步驟:提取特征、建索引build以及查詢。本文也按照這三步來分別闡述。?
二、圖像特征的提取
目前互聯(lián)網(wǎng)上的圖像識別可以歸結(jié)為兩類問題,其一是“近重復(fù)檢索”,主要是針對同一源圖經(jīng)過不同形變(包括光照、水印、縮放、局部缺失替換等)的檢索,或是針對大體類似的物件進(jìn)行識別,主要應(yīng)用在版權(quán)保護(hù)、違禁識別、圖片去重以及基本的相似檢索等等;其二是“局部檢索”,指的是兩張圖片中只要有部分物件重復(fù),即可匹配到,比如我們可以想象,不同offer的模特不一樣,但只要她們都跨了同一款LV包,就可以認(rèn)為是相似圖像,即實現(xiàn)真正意義上的圖像檢索。?
與此相對應(yīng)的,圖像特征也可以分成兩類:全局特征與局部特征。大部分圖像簽名算法都是利用圖像的全局特征來描述一幅圖像的內(nèi)容,例如,顏色直方圖、色彩分布、形狀或者邊緣信息等等,用一個字符串或是數(shù)組來作為一幅圖像的hash值。?
總的來說,全局特征是對圖像內(nèi)容高度抽象的概括,只回答了“圖像是什么”,而大多數(shù)場合以用戶的視角來看,更希望回答“圖像有什么”。例如,用戶在檢索圖像時,經(jīng)常更加關(guān)心的是圖像中的場景、物體或者特定的任務(wù),單單一個全局特征無法區(qū)分些信息,因此引入了局部特征。其中最為著名的就是“基于尺度不變特征變換的圖像檢索”,Scale Invariant Feature Transform,也就是大名鼎鼎的SIFT。其基本思想是將圖像打散為許多高維特征點(diǎn),因此將互聯(lián)網(wǎng)上的圖片已視覺詞庫的形式加以保存。由于SIFT特征在描述向量時不受尺度變換和旋轉(zhuǎn)的影響,對圖像噪音、仿射變形、光照變化以及三維視角皆不敏感,因此具有極強(qiáng)的區(qū)分度,被廣泛應(yīng)用于物體識別、視頻追蹤、場景識別、圖像檢索等問題。?
為簡單起見,本文主要討論基于全局特征的圖像相似檢索技術(shù),而局部特征可以在此基礎(chǔ)上自行加以擴(kuò)展。?
MPEG(即Moving Picture Experts Group運(yùn)動圖像專家小組)是個國際標(biāo)準(zhǔn),即所謂ISO11172。準(zhǔn)確說來, MPEG-7 并不是一種壓縮編碼方法,而是一個多媒體內(nèi)容描述接口。繼 MPEG-4 之后,要解決的矛盾就是對日漸龐大的圖像、聲音信息的管理和迅速搜索。MPEG7就是針對這個矛盾的解決方案。MPEG-7 力求能夠快速且有效地搜索出用戶所需的不同類型的多媒體影像資料,比如在影像資料中搜索有長江三峽鏡頭的片段。預(yù)計這個方案于2001年初最終完成并公布。雖然沒有實現(xiàn)代碼,MPEG-7公布了一些圖像描述接口,制定了一些諸如顏色分布、紋理、邊緣、主體顏色的標(biāo)準(zhǔn)。這里主要介紹一下后邊使用到的邊緣直方圖描述算法的原理。計算邊緣直方圖的主要步驟如下:?
- 首先將一個原始圖像平均分割為4×4 共16 個子圖像,之后的處理都是對每一個子圖像局部邊緣的直方圖進(jìn)行計算。每個局部的邊緣直方圖使用五個5邊緣算子進(jìn)行處理。最終得到80維向量,用于唯一標(biāo)識這張圖片。
- 把每個子圖像分割成為一系列圖像塊, 這些圖像塊的,面積隨著圖像面積的變化而變化。其中每個子圖像的圖像數(shù)目是固定的,可參考圖一。
- 計算并統(tǒng)計每個圖像塊的五種邊緣類型( 水平、垂直、45°、135°和無方向) ,此為MPEG-7推薦的五種邊緣檢測算子,最終得到五個邊緣方向的最大值。
- 對得到的邊緣直方圖的值進(jìn)行歸一化和量化??紤]到人眼視覺的非均勻性,將歸一化以后的80 個直方條的值進(jìn)行非線性量化, 每個直方條使用固定長度的3位進(jìn)行編碼(即量化范圍為0~8),總共用240個bit來表示邊緣直方圖。
- 考慮兩個邊緣直方圖描述符, 通過計算直方圖間的歐幾里德距離得到兩個紋理圖像的相似度,十分直觀的,距離為0說明兩幅圖片的邊緣紋理完全相同,距離越大說明相似度越小。
三、圖像特征索引的build與基于圖像的query?
在海量(百萬以上)的圖像特征中,尋找亞線性時間復(fù)雜度的匹配算法是十分有挑戰(zhàn)的,特別的,由于是近似檢索,我們需要的是數(shù)字上的非精確匹配,讓我們看一下能想到的方法:?
- 線性掃描:即對整個樣本向量集合進(jìn)行窮舉式的順序掃描,分別計算其與query圖像的歐式距離,然后排序輸出。準(zhǔn)確度100%但過高的時間復(fù)雜度導(dǎo)致其實用性極差
- 基于樹結(jié)構(gòu)的索引:比如sift作者推薦的KD-tree,SR-tree等。但由于“維度災(zāi)難(curse of dimensionality)”的存在,當(dāng)向量維度大于10到20之后,基于樹結(jié)構(gòu)的索引需要掃描整個向量集合的絕大部分,加上算法本身的開銷,其效果甚至要差于上述的蠻力查找。
- 聚類:摒棄了樹型結(jié)構(gòu)建立索引之后,許多研究人員繼而使用基于Kmeans聚類(層級聚類)的向量量化方法,其本質(zhì)是將向量映射為標(biāo)量,取得了一定的成功。但是,該方法的時間復(fù)雜度與圖像的數(shù)量息息相關(guān),當(dāng)規(guī)模擴(kuò)大時,biuld與query的時間開銷仍然無法達(dá)到線上使用的地步。
- 基于散列表的索引:與上類似,其本質(zhì)也是將向量轉(zhuǎn)化為標(biāo)量進(jìn)行匹配。散列表的主要好處有兩點(diǎn),一是query時間與數(shù)據(jù)結(jié)構(gòu)的大小無關(guān),基本上是O(1)的時間復(fù)雜度;二是增量build較其它方法更為方便。當(dāng)然,直接將圖像特征存放在散列表中,或者放在數(shù)據(jù)庫的某一個字段中,只能進(jìn)行精確匹配,只能返回一模一樣的圖片,對于圖像檢索來說,其價值點(diǎn)幾乎為零;因此單純的散列表技術(shù)還是無法滿足我們的需求。
- 常用的hash函數(shù)(crc、md5等),本質(zhì)上都是基于密碼學(xué)的脆弱哈希函數(shù),其特點(diǎn)是輸入只要有略微不同,產(chǎn)生的結(jié)果應(yīng)該盡可能大的變化。本文采用的局部敏感哈希(Locality Sensitive Hashing, LSH)方法,在向量匹配方面與索引方面都要比傳統(tǒng)的樹結(jié)構(gòu)和聚類算法快上好幾個數(shù)量級,支持非精確查找,在我看來,是目前所知最適用于多媒體檢索的算法。
LSH主要是用來解決多維向量的K近鄰(K Nearst Neighgor)問題,即查找某一多維向量間的K個最相似的向量。這是一種概率算法,其原理類似于bloom filter,存在一定的false positive,但換來的是檢索效率的飛躍提升。?
LSH的主要原理是:建立L個散列表來存放索引,每一個散列表Ti包含M個存放數(shù)據(jù)的桶,另外提供兩套函數(shù)族Gi與Hi與之相關(guān)聯(lián)。局部敏感哈希算法在概率意義上將相近的向量映射到相同的桶當(dāng)中去,利用該特質(zhì)可以對圖像特征進(jìn)行非精確匹配。為了最大限度的避免概率上的失誤,采用多個hash函數(shù)映射到不同的hash表中去,分散誤差,如圖二所示。?
利用LSH為圖像特征建立索引的具體流程如下:?
- 將向量p標(biāo)識轉(zhuǎn)化為Hamming空間中的二進(jìn)制向量(每一維僅為1或0),設(shè)某一維的向量值為x,最大值為c,則表示為連續(xù)的x個1緊跟c-x個0的c維二進(jìn)制向量。因此該向量在原始空間的距離與其Hamming距離一致。
- 將散列函數(shù)G作用在前面所產(chǎn)生的結(jié)果上,G的定義為,選取目標(biāo)向量的K維二進(jìn)制向量進(jìn)行拼接??梢钥闯?#xff0c;目標(biāo)向量之間相似度越大,其產(chǎn)生的hash值相等的概率越大。這是達(dá)到非精確檢索的關(guān)鍵一環(huán)。
- 基于2產(chǎn)生的結(jié)果,再用常規(guī)的哈希函數(shù)(md5)進(jìn)行二次哈希將二次哈希得到的結(jié)果存放到一張哈希表的一個桶里,再使用下一個函數(shù)進(jìn)行計算,周而復(fù)始。正如我們前面所說的那樣,采用了多個hash函數(shù)來減少相似檢索的誤差。這樣,相似的圖像就被放到同一個桶里,而不同的圖像則被放到另外的桶里了,如圖三所示。
 
 
- query圖像時,計算其特征值,并從前面建立的多個表中查詢出結(jié)果,拼接在一起,如圖四所示。
 
 
- 針對上一步返回的近似圖像,分別計算其歐式距離,排序,進(jìn)一步去除極小概率上的false positive。
 
 
 
 
局部敏感哈希將多維近似檢索的時間復(fù)雜度進(jìn)一步降低到亞線性級別,同時,合理選擇哈希函數(shù)的個數(shù)與種類又可以使檢索的準(zhǔn)確率和召回率達(dá)到平衡。?
四、實驗結(jié)果?
為驗證MPEG-7邊緣直方圖配合局部敏感哈希算法的結(jié)果,本文使用了隱網(wǎng)項目中的違禁數(shù)據(jù)庫進(jìn)行測試。測試環(huán)境為公司的Dell PC,測試條件如下所示:?
樣本庫數(shù)量:14085?
樣本類別:國家安全類、文化傳媒類、限售、藥物器械?
持久化index文件容量:3.07MB?
從圖片build時間:406ms?
從索引文件build時間:15min?
query時間:0ms?
測試效果范例:?
輸入的待檢索圖片:?
Query得到相似圖片結(jié)果:?
五、后續(xù)工作?
1、sift特征的引入,局部圖像檢索的實現(xiàn)?
2、lsh算法,參數(shù)的自動優(yōu)化?
3、百萬級數(shù)據(jù)測試?
4、不同場景、類別下策略的分析
總結(jié)
以上是生活随笔為你收集整理的互联网相似图像识别检索引擎 —— 基于图像签名的方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 空间金字塔方法表示图像
- 下一篇: 双目立体视觉系统精度分析
