图像检索:拓展查询(Query Expansion)
拓展查詢(QE, Query Expansion): 指對返回的前top@K個結果,包括查詢樣本本身,對它們的特征求和取平均,再做一次查詢,此過程稱為拓展查詢。
從上面的定義可以看出,拓展查詢屬于重排的一種方式。通過Query Expansion,以達到提高檢索召回率的目的。前面的博文RANSAC算法做直線擬合曾介紹過RANSAC的基本思想,放在詞袋模型里(相應博文見圖像檢索:BoW圖像檢索原理與實戰),我們可以使用RANSAC方法或Weak Geometry Consistency方法做幾何校正,進行重排以提高檢索的精度。在這篇博文中,小白菜暫時拋開其他的重排方法,重點分析Query Expansion對圖像檢索精度的提升。
根據小白菜讀圖像檢索論文獲得的對Query Expansion的感知,做完Query Expansion能夠獲得百分之幾的精度提升。為了證實Query Expansion對檢索精度的改善,在過去一段時間里,小白菜在Oxford Building數據庫上對其做了驗證。下面是小白菜對Query Expansion的實驗整理和總結。
特征表達
Oxford Building圖像數據庫,每一幅圖像提取的是一個512維的CNN特征,即對于Oxford Building圖像數據庫,我們得到5064個512維的特征。
特征索引
直接采用brute線性掃描,因為圖庫才5064張圖像,所以沒必要建索引。在實際應用中,我們可以采用哈希、倒排PQ等方式,這一部分可以細講很多,有機會的話,小白菜單獨拿一個篇幅整理實用的索引方法。
評價指標
實驗評價指標采用平均檢索精度(mAP, mean average precision), mAP如何計算可以閱讀信息檢索評價指標,里面有對mAP如何計算的詳細介紹。
對于Oxford Building圖像數據庫,mAP的計算過程有必要詳細介紹一下。Oxford Building的groundtruth有三類:good, ok和junk。對于某個檢索結果,如果它在good和ok中,則被判為是與查詢圖像相關的;如果在junk中,則被判為是不相關的。我們可以細致的閱讀一下Oxford Building的mAP計算代碼:
float compute_ap(const set<string>& pos, const set<string>& amb, const vector<string>& ranked_list){float old_recall = 0.0;float old_precision = 1.0;float ap = 0.0;size_t intersect_size = 0;size_t i = 0;size_t j = 0;for ( ; i<ranked_list.size(); ++i) {if (amb.count(ranked_list[i])) continue;if (pos.count(ranked_list[i])) intersect_size++;float recall = intersect_size / (float)pos.size();float precision = intersect_size / (j + 1.0);ap += (recall - old_recall)*((old_precision + precision)/2.0);old_recall = recall;old_precision = precision;j++;}return ap; }其中,pos即是由good和ok構成的set,amb是junk構成的set,ranked_list即查詢得到的結果??梢钥吹絆xford Building上計算的AP是檢索準確率(precision)和檢索召回率(recall)曲線圍成的面積(梯形面積,積分思想),mAP即是對AP的平均。
理解完了Oxford Building的mAP計算過程,還有一個需要考慮的問題是:對于查詢圖像特征的提取,我們要不要把Oxford Building提供的區域框用上,即在提取特征的時候,我們是在整個圖像提取特征,還是在區域框內提取特征?在圖像檢索的論文中,在計算Oxford Building的mAP時,都是在區域框內提取特征。但是放在實際中,我們肯定是希望我們的圖像檢索方法能夠盡可能的減少交互,即在不框選區域的時候,也能夠取得很好的檢索精度。所以,基于這樣的意圖,在實際中測評檢索算法的mAP時,小白菜更喜歡采用在整個圖像上提取特征的方式。當然,如果不嫌麻煩的話,可以兩種方式都測評一下。
查詢拓展對mAP的提升
庫內查詢,所以返回的top@1為查詢圖像自身,并且采用的是全圖查詢(即上面提到的對于查詢圖像是在整個圖像上提取特征,而不是在區域框內提取特征),表中top@K表示取前K個樣本求和取平均。
| MAP | 61.91% | 61.91% | 65.42% | 66.52% | 66.07% | 66.38% | 66.51% | 65.65% | 65.16% | 63.46% | 62.41% |
上面表格中mAP隨top@K用曲線表示如下:
在不做Query Expansion的時候,即top@K=0時,mAP為61.91%。因為查詢屬于庫內查詢,所以top@K=1時,仍然是查詢向量本身,故結果與top@K=0是一樣的。從實驗的結果可以看出,Query Expansion確實能夠提升檢索的精度,在top@K=3的時候,取得了最高的檢索精度。相比于不做Query Expansion,Query Expansion可以提高4%-5%的檢索精度。
所以,在實際中,做Query Expansion完全是有必要的,一則是它實現簡單,二則是它提升的效果還是比較明顯的。
from:?http://yongyuan.name/blog/cbir-query-expansion.html?
總結
以上是生活随笔為你收集整理的图像检索:拓展查询(Query Expansion)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图像检索:再叙ANN Search
- 下一篇: 机器视觉:Caffe Python接口多