圖像檢索(7):取得更好的檢索結果


在前面實現的檢索中,根據圖像編碼后向量(VLAD)的相似性,從圖像庫中檢索出,與查詢圖像VLAD向量最相似的圖像。由於實際場景圖像的復雜性,僅僅利用VLAD向量的相似並不能取得很好的精度,通常先利用VLAD向量從圖像庫中快速的檢索出最相似的\(K\)幅圖像,然后再進一步篩選。

在實際場景中進行圖像檢索,通常會遇到以下問題:

尺度,視角,光照以及部分遮擋,本文將介紹幾種常見的優化方法,盡可能在這些復雜條件的影響下,檢索出最相似的圖像。

  • 空間重排
  • 幾何驗證
  • 擴展查詢

空間重排

主要是為了排除查詢圖像中背景部分的干擾,找到包含查詢目標的區域。這里使用的方法通常可以使用目標檢測方法中的第一步:區域建議方法(Proposal Region),盡可能的將圖像中的不同區域分割出來。

  • 滑動窗口法,窮舉法。簡單的使用使用不同尺寸和不同長寬比的窗口滑過窗口,每個窗口區域作為一個單獨的查詢。窗口的比例和尺寸比較難以確定,如果產生的窗口過多,會影響查詢的速度。這也是最初目標檢測中使用的方法,不推薦使用。

  • Selective Search 選擇性搜索,將區域的顏色,紋理,尺寸以及交疊相似度組合到一起,以此為標准將圖像划分為多個子區域。OpenCV中有該方法的實現,但是比較耗時。

  • EdgeBoxes 也是一種區域建議方法,首先利用結構化的方法檢測出邊緣,並利用非極大值抑制對邊緣進行篩選;然后基於某種策略將似乎在一條直線上的邊緣點集合成若干個edge group,並計算edge group之間的相似度,越是在同一直線上的edge group,其相似度越高。再通過edge group來確定輪廓數,實現策略為給每個edge group計算一個權值,將權值為1的edge group歸為proposal內輪廓上的一部分,將權值為 0 的edge group歸為proposal外或proposal框重疊的一部分,由此便提取得到proposal,並對proposal進行評分,選取得分最高的proposal作為最后的檢測輸出。 該方法效果上比Selective Search差點,但是速度上比較快。

  • 可以使用目標檢測中的Regional Proposal Net網絡提取圖像的各個區域。

使用上述的方法,將查詢圖像分成不同的子區域,將每個子區域作為一個查詢,進行檢索。這種方法雖然能在很大的程度上提高檢索的精度,但是最好的方法還是能夠確定檢索的區域。 例如:假如是手機拍攝的查詢,可以和掃描二維類似,將查詢的目標放在固定的窗口中,這樣可以大大的提高檢索的精度。

空間驗證 Spatial Verification

基於詞袋模型(BoW)的圖像檢索,是將圖像表示為視覺詞匯的向量(視覺詞匯,visual word通過圖像的局部特征聚類得到)。在進行圖像相似檢索時,實際是檢索具有相同視覺詞匯的圖像,由於視覺詞匯是通過局部特征聚類得到的,丟失了圖像的空間特征,僅僅使用視覺詞匯來判斷圖像的相似性,會產生下面的問題:

有可能兩圖像中提取到的visual word比較相似,而兩圖像空間信息卻不相同,如下圖:

左邊的是兩幅圖像下的正確匹配,右邊的則是提取到的Visual World比較相似,卻不是相似的圖像。

空間驗證 Spatial Verification就用來過濾掉上面的,僅僅是視覺詞匯比較相似,但是空間信息卻不具備相似性的檢索結果。上面檢索,過濾掉錯誤的匹配后結果:

空間驗證的方法

使用BoW,兩幅圖像的匹配,通常是Visual Word的匹配,相匹配的特征點是通過視覺詞匯取得的,例如:查詢圖像\(q\)的某個特征\(q_1\)映射到視覺詞匯\(vw_1\)上,而檢索出來的圖像\(p\)的某個特征\(p_1\)也映射到\(vw_1\)上,這樣就認為特征點\(p_1\)\(q_1\)是匹配的。顯然,這樣的匹配方法會有很多的錯誤的匹配,空間驗證就是為了過濾掉這種錯誤的匹配。

空間驗證,簡單來說就是對兩幅圖像的特征點進行匹配,並且過濾掉錯誤的匹配點。 就到了圖像的經典問題了,圖像特征的匹配及優化

圖像特征點的匹配和優化,常用的有以下方法:

  • 交叉過濾,如果第一幅圖像的一個特征點和第二幅圖像的一個特征點相匹配,則進行一個相反的檢查,即將第二幅圖像上的特征點與第一幅圖像上相應特征點進行匹配,如果匹配成功,則認為這對匹配是正確的。
  • 比率測試,對每個匹配返回兩個最近鄰描述符,僅當第一個匹配與第二個匹配之間的距離足夠小時,才認為這是一個匹配
  • 基於對極約束的RANSAC方法,通過求兩圖像的基礎矩陣或者單應矩陣,來剔除錯誤的匹配。

上述的幾種特征匹配優化方法,可以參看之前的文章 OpenCV2:特征匹配及其優化

上述的幾種方法中,基於RANSAC的方法做匹配優化的效果應該是最好的,但是RANSAC是一種迭代算法在性能上不占優勢的。畢竟做圖像檢索的並發量是很高的。假如每次對\(K = 20,50,100\)甚至更多張圖像進行空間驗證的話,對特征點的匹配和剔除就提出了很高的性能要求。

Chum在論文Total Recall: Automatic Query Expansion with a Generative Feature Model for Object Retrieval
提出使用Locally Optimized RANSAC(LO-RANSAC)的方法,其原理也比較簡單。

  • 從數據集中隨機的選擇能夠估計出模型參數的最小個數的數據集\(S_m\)
  • 估計模型參數(匹配,兩圖像的單應矩陣)
  • 計算符合估計模型的內點個數\(I_k\)。設置一個閾值\(\theta\),小於\(\theta\)均認為是符合模型的內點。
  • 在迭代中,如果有\(I_k > I_j,k > j\),則進行Local Optimization的操作。
  • Local Optimization 有多種方法,常用的是 Inner RANSAC,也就是只從選擇符合當前最好模型的內點進行下一次迭代的,並且設置的閾值為\(K\cdot \theta\),在每次的迭代的時候減小閾值,直到閾值減小為\(\theta\)

更多關於LO-RANSAC的內容,可以參考論文

可以在 LO-RANSAC codes 找到其實現。

進行空間驗證,基本能解決圖像因為Sacle,Viewpoint或者Oculusion引起的目標的變化。 但是對於一些弱光照引起的變化,空間驗證則無能為力了。這就要應用到擴展查詢。

擴展查詢 Query Expansion

對於弱光照引起的變化,如

最右邊的圖,由於光照比較弱,即使利用了空間驗證,仍然難以檢索出來,可以使用擴展查詢。

擴展查詢的方法有很多,簡單有效的就是均值擴展查詢(Average Query Expansion,AQE)

  • 初始檢索,選擇Top N。 距離為准
  • 空間驗證,選擇Top K。匹配點的個數為准
  • 將空間驗證后的Top K個的圖像編碼的做均值,作為新的查詢。

總結

BoW的圖像檢索基本完成了,做個總結。

基於局部特征的圖像檢索,分為兩個部分: 訓練和檢索

  • 訓練

    • 提取圖像庫中所有圖像的局部特征(SIFT)
    • 對提取圖像的所有特征進行聚類,得到\(K\)個聚類中心,也就是視覺詞匯表Vocabulary,每個聚類中心是一個Visual word.
    • 將每個圖像表示為VLAD向量,所有圖像的VLAD向量的集合,就是用於檢索的特征庫。
  • 檢索

    • 區域建議 Proposal region,從檢索圖像中分割中檢索目標坐在的區域\(R\)
    • 從檢索的特征庫中,找出和\(R\)最相似的Top\(K\)個圖像
    • 進行空間驗證,選擇和\(R\)匹配最好的Top \(N\)個圖像
    • 擴展查詢
    • 最終的返回結果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM