机器视觉:Asymmetry Problem in Computer Vision
自然法則無時不刻不給予著人類以對稱性的恩惠,從一片樹葉到人類自身,其形態都是對稱的。對稱性的特性,大大減輕了人類的記憶和認知負擔。然而,弱相互作用中互為鏡像的物質的運動不對稱卻暗藏著自然法則對非對稱性的偏愛。
在計算機視覺中,對稱性是一個很好的先驗,如果某一個特定的物體具備對稱性的話,通過引入對稱性可以提升系統的精度。常見的對稱性包括:
- 物體本身具備對稱性,且這種對稱性不容易受大視角變化的影響。主要應用場景為在訓練諸如檢測模型的時候,可以將這一信息加入到訓練樣本的擴增上;
- 相似性度量具備對稱性。這種對稱性常體現在設計的相似性度量準則上,A與B計算出的相似性和B與A得到的相似性是一樣。
我們的大腦深受對稱性法則的影響,所以對于第一種情況,我們可以非常直觀的將這一法則應用到我們的視覺模型訓練中,但是對于第二種情況,特別是當相似性度量由非對稱性在對稱性上轉化而來的時候,我們的第一意識卻頻頻出錯。計算機視覺中非對稱現象和非對稱相似性度量如此干擾我們的第一意識,以至于小白菜對這個問題曾做出過若干的思考,下面是小白菜結合自己的一些思考和經驗做的總結和整理。
局部特征匹配中的非對稱問題
在用局部特征進行匹配的時候,比如SIFT,用A圖匹配B圖和用B圖匹配A圖,得到的匹配結果是不一樣的,如下圖所示:
在這匹配的過程中,所有的度量方式比如最近鄰、次近鄰、幾何校驗等都是具備對稱性的,所以很容易給我們造成一種錯覺就是他們的匹配結果應該是一樣的。這里面造成匹配結果不對稱的根本因素在于A圖和B圖它們的局部特征數目是不相等的,比如A有500個局部特征,B有800個局部特征,用500個局部特征去匹配800局部個特征和用800個局部特征去匹配500個局部特征,勢必造成匹配的結果不一樣。一個魯棒的匹配算法,應該在用A匹配B和用B匹配A時都能獲得比較好的匹配結果,以避免單一結果匹配較好的情形,像下面的匹配算法就不是一種好的匹配算法:
在設計匹配算法的時候,我們應避免我們的算法出現單一匹配好的情形,以提高匹配的魯棒性。如需獲取上圖匹配結果,可以訪問covdet獲取。
Logo識別中的非對稱問題
Logo的識別問題,可以分為兩類:
- 基于檢測的方式
- 基于檢索的方式
基于檢測方式的缺點在于新的Logo樣式來臨時,會面臨訓練樣本如何獲取以及人工標注的問題,雖然可以自動通過往圖片上貼Logo的方式來構造訓練樣本,但這種方式容易造成過擬合;基于檢索的方式的優點在于,它不會面臨訓練樣本獲取和標注的問題,能夠以較快的速度響應新Logo檢測的請求,但是基于Logo檢索的方式,面臨一個很大的問題就是尺寸不對稱性。
這種尺寸不對稱性體現在:對于待檢測的圖片,Logo所占的區域是很小的,通常區域面積占總體面積比的5%都不到,這樣就導致提取的Logo區域的特征(比如局部特征)被非Logo區域的特征給“淹沒”掉,如下圖所示:
上圖這個圖選取得不是很合適,因為背景比較干凈,Logo區域的特征還是其了比較大的作用。對于一般的情況,由于Logo區域的特征被非Logo區域的特征給淹沒掉,從而使得在Logo庫里檢索的時候,在top@K(K取得比較小)里面比較難以檢索到相關的Logo,而且即便是做重排,也比較難以將最相關的Logo排到最前面。
針對這種由于尺寸不對稱性造成的有用特征(信號)被無用信號淹沒的問題,很難在不對檢索精度造成較大影響的前提下找到比較有效的解決辦法。如果要剔除無用信號造成的干擾,一種比較好的方法是先進行粗略的檢測,這一步不要求檢測的準確率很高,只要保證召回率很高即可,然后可以根據定位到的框提取特征,再進行檢索以及校驗。這種方式由于剔除了非相關區域特征的干擾,所以準確率和召回率通常能夠得到較好的保證,唯一不足的是,引入了檢測,而檢測勢必要求對數據進行標注(半自動)。不過總體來說,這仍然是一種非常不錯的方法。
PQ中的非對稱距離
在此前的文章圖像檢索:再敘ANN Search中,小白菜曾對PQ做過比較詳細的介紹,這里對PQ中非對稱距離的計算做一詳述。
如上圖所示,非對稱距離計算方式(紅框標示)在計算查詢向量xx到庫中某一樣本yy之間的距離時,并不需要對查詢向量xx自身進行量化,而是直接計算查詢向量xx到量化了的yy之間的距離,這種距離計算方式可以確保非距離計算方式以更大的概率保證計算的距離更接近于真實的距離(與對稱距離計算方式相比較),而且這種方式比對稱距離計算方式在實施的過程中,來得更直接,因為我們不需要對查詢向量進行量化,而是直接計算到對應子段之間的距離,然后采用查表的方式獲取到查詢向量到庫中所有樣本的距離。這種通過查表的方式,是PQ能夠加速距離計算的核心。
非對稱性的應用,在這里展示了它有利的一面,通過將非對稱性延展到相似性度量上,可以進一步縮小量化造成的損失。既然談到了PQ的思想,我們還可以對PQ的改進做一下的延拓。
Polysemous Codes
PQ的改進版本很多,比如OPQ, Jegou等人又在PQ的基礎上對PQ計算距離的過程中做了進一步加速,提出了Polysemous Codes(中譯為“一詞多義編碼”,為何叫Polysemous Codes,容小白菜慢慢道來)。
前面已經提到,即便是采用查表的方式,仍然還是要查表挨個對庫中的每個樣本計算到查詢向量之間的距離,這種距離能不能轉換成漢明距離的計算?正如上圖所示的,對于每個向量,我們可以知道它對應的量化索引編碼,如果這個量化索引編碼本身就是一種漢明編碼,那么我們就可以直接用通過計算漢明距離來得到粗排序的結果,然后再對topK的結果計算ADC距離,Polysemous Codes的動機正是如此,實際上Polysemous Codes不僅充當了量化索引編碼,還充當了一個快速過濾的作用。
應該說,對于所有的相似性度量距離,漢明距離計算從效率上來講,是最快的。在faiss的項目wiki的re-filtering PQ codes with polysemous codes有結論:
It is about 6x faster to compare codes with Hamming distances than to use a product quantizer.
也就是計算一次PQ的距離,跟計算一次漢明距離計算相比,會慢6倍左右,說明如果能把PQ編碼賦予漢明編碼的意義的話,距離的計算會提升6倍,這個提升還是非常巨大的。Polysemous Codes的實現已在Faiss中Polysemous Codes Implementation。下圖解釋一下“Polysemous Codes”的“Polysemous”,即一詞多義:
Polysemous codes are compact representations of vectors that can be comparedeither with product quantization (222M distance evaluations per second per core for 8-byte codes) or as binary codes (1.19G distances per second). To obtain this property, we optimize the assignment of quantization indexes to bits such that closest centroidshave a small Hamming distance. 【摘自Polysemous Codes】
在標準的PQ編碼中,編碼僅指代對應的量化索引編碼,即由哪個類中心來近似該子段向量,比如上面的左圖,4位的二進制編碼僅表示類中心編碼(編號),除此之外,無任何其他的意義;而在Polysemous Codes中,如右圖所示,它不僅能表示類中心的編碼(編號),而且它還是一種漢明編碼,從這里可以看到,該編碼包含了兩種特性,我們既可以計算PQ距離,又可以計算漢明距離,因而該編碼被稱為“Polysemous Codes”是非常妥帖的。由于計算漢明距離更高效,而Polysemous Codes又是一種漢明碼,我們可以先用漢明距離進行粗排序,在采用PQ距離進行重排。
Polysemous Codes所擁有的這兩種特性,不能不感嘆它是極其優雅美麗的。
累計最小(最大)距離非對稱問題
在度量兩個集合的相似性的時候,累計最小(最大)距離是一個比較好用的相似性度量距離。假設兩個集合分別為X={xt,i=1…n}X={xt,i=1…n}和Y={yt,j=1…m}Y={yt,j=1…m},則XX和YY集合的相似性可以通過累計最小(最大)距離來度量,即:
?
S(X,Y)=∑i=1i=n∑j=1j=mdmin(xi,yj)S(X,Y)=∑i=1i=n∑j=1j=mdmin(xi,yj)
至于dd選取何種距離,我們可以根據自己的應用場景來定奪,小白菜自己一般喜歡使用余弦相似度,因為該距離的計算最終可以轉換成內積。累計最小(最大)距離應用的場景這里可以列舉一二:
- 局部特征構成的兩個集合,這里的局部特征不限于傳統的局部特征,還可以是CNN構造的局部特征;
- 兩個視頻序列分別對視頻幀提取全局特征,構成的兩個視頻幀特征集合,使用累計最小(最大)距離我們可以得到兩個視頻的相似性。
累計最小(最大)距離通常也是一種非對稱性距離,在兩個集合樣本數量相差得比較大時,這種非對稱性表現得非常明顯。以上面所說的第二個例子為例,當兩個視頻由于某種不是很合理的取幀方式,導致兩個視頻取的幀數目相差比較大時,計算出的S(X,Y)S(X,Y)和S(Y,X)S(Y,X)會相差得很大,必然會導致其中的一個得到的相似度比較小。對于這種情形,在此相似性度量方式下,并沒有特別好的辦法來改善,所以在取幀的時候,盡量使兩者的數目相當。
總體來說,累計最小(最大)距離對于度量兩個集合的相似性是個不錯的距離度量。下面講講對這個距離度量的計算速度優化問題。比如,我們要計算XX和YY兩個集合的相似性,并且每個集合有1000個元素,我們是要一個一個遍歷計算找最小值然后相加嗎?
顯然這種計算方式太慢。前面提到過,在對dd相似性度量的選取上,小白菜喜歡使用余弦相似性,矩陣乘法使得我們可以避免掉挨個遍歷循環,通過矩陣相乘得到XX和YY中各個樣本與樣本之間的相似性后,我們可以對相似性矩陣進行排序,然后求和相加即可得到S(X,Y)S(X,Y),即XX和YY之間的相似性。
總結一下,在本篇博文中,分別從下面4個方面對計算機視覺中的非對稱問題進行了探討:
- 局部特征匹配中的非對稱問題
- Logo識別中的非對稱問題
- PQ中的非對稱距離
- 累計最小(最大)距離非對稱問題
中間穿插了對PQ的拓展Polysemous Codes的拓展。后面如遇其他計算機視覺中的非對稱性問題,會同步到這里。
from:?http://yongyuan.name/blog/asymmetry-problem-in-computer-vision.html?
總結
以上是生活随笔為你收集整理的机器视觉:Asymmetry Problem in Computer Vision的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图像检索:Fisher Informat
- 下一篇: 机器视觉:makefile编译调用Caf