天天看點

Learning color and locality cues for moving object detection and segmentation方法解析

Learning color and locality cues for moving object detection and segmentation方法解析

标簽(空格分隔): detection segmentation MRF Machine-learning

作者:賈金讓

本人部落格連結:http://blog.csdn.net/jiajinrang93

1.概述

文章名稱:Learning color and locality cues for moving object detection and segmentation

文章來源:2009CVPR

文章作者:Feng Liu and Michael Gleicher

文章原文:在本文最後有論文原文

簡要介紹:這篇文章來自2009年的CVPR會議論文,其提出了一種從單眼視訊中自動檢測和分割移動物體的算法。算法相比于之前存在的其他算法的優勢在于,在目标的移動是部分位置移動并且是部分幀存在移動的情況下,算法仍然可以檢測并分割出整個物體,同時具有良好的魯棒性。

基本原理:算法首先通過像素位移提取關鍵幀,并在關鍵幀中根據像素位移使用MRF網絡尋找“子移動物體”(moving sub-objects),之後在子移動物體的基礎上采用GMM學習得到一個物體顔色模型和局部線索,最後将顔色模型和局部線索組合到MRF網絡中,提取出整個移動物體。

下面具體叙述和分析該算法的理論。

2. 從檢測移動物體開始

給定一段視訊,如何檢測并分割出其中的移動物體,是我們所要研究的問題的本質。

當今存在的大多數方法,都是在視訊中含有豐富的物體移動資訊和相機移動資訊的情況下提出的。然而,在物體或相機隻有微小或部分移動的條件下,進行運動目标檢測和分割仍舊是一個很重要的研究方向。大多數方法在小移動情況下并不适用。

比如,大多數方法都是用位移量(motion)來判斷物體的移動,它們假設如果有一塊區域和背景的位移量不同,那麼它就可能屬于移動物體的一部分,這就是基于位移的方法。基于位移的方法通常把檢測到的移動像素作為種子,然後将和它有相同位移的像素連接配接起來作為構成移動物體。然而這種方法在物體的移動是稀疏的或是不完整的時候,沒有魯棒性,表現很差,比如下面這個例子,如圖。

Learning color and locality cues for moving object detection and segmentation方法解析

一個小孩子坐在地上,每次移動隻移動身體的一部分,如果使用前面說的基于位移的方法,得到的結果如圖(b)、(c)所示,隻能檢測到身體的一部分,而如果使用本文提出的方法,則可以得到如圖(d)、(e)的結果。

本文提出了一種算法,通過在視訊中搜集稀疏和不完整的移動資訊來學習移動物體的模型。

下面給出本文算法的主要步驟:

a.提取關鍵幀:我們首先通過移動線索檢測關鍵幀,關鍵幀包含物體的移動線索(motion cues),可以可靠地表達移動物體的一些部分。

b.估計移動子物體:從這些關鍵幀中,我們使用MRF模型在移動線索的基礎上估計出移動子物體。

c.學習顔色模型:接着我們從這些移動子物體中學習到一個移動目标的顔色模型(以GMM模型分類)。

d.學習局部線索:為了避免對和移動子物體有相同顔色的背景像素錯誤檢測,我們把移動子物體的坐标資訊當成局部線索傳遞給非關鍵幀。

e.提取移動物體:最後我們通過将學習到的顔色和局部線索與MRF網絡中的移動線索相結合,提取出移動物體。

3.移動線索(motion cues)

我們認為,視訊中的移動物體其實可以當做一些像素聚合區域,如果存在某個像素聚合區域的整體位移和圖像背景位置的差别較大,那就說明這個像素聚合區域是移動物體或是移動物體的一部分。這是符合實際情況的。是以,如果一個像素/區域和背景有明顯的移動差別,那它很可能屬于一個移動物體。

移動線索(motion cues)由像素位移和背景位移的內插補點來定義。

我們通過有力的移動線索來提取關鍵幀。

之後再從這些關鍵幀中,依據移動線索使用MRF來估計移動子物體。

那麼首先要計算出移動線索,我們先假設場景中背景是固定不同的。在這個假設的基礎上,移動線索就可以由局部位移和全局整體位移的內插補點來計算。計算全局位移的方法有很多,由于全局位移在連續幀中變化很微小,是以我們要先計算單應(homography),單應就是兩張圖檔之間的投影關系,我們使用SIFT特征來計算單應,因為SIFT特征在視訊品質較差情況下仍然具有很好的魯棒性。也就是說,我們從每一幀圖像中提取SIFT特征,并且建立相鄰幀之間的特征關系,并通過RANSAC算法計算單應。

有了單應之後,就可以計算移動線索了,通過下面的公式計算移動線索。

mc(x,y)=||mo(x,u)−mg(x,y)||22(1)

其中 mc(x,y) 是 (x,y) 點的移動線索, mo(x,y) 是該點的光流, mg(x,y) 是全局位移量。由于直接計算光流會由于噪聲等原因引入誤差,是以我們使用光流來增加魯棒性。

4.提取關鍵幀(Key frame extraction)

什麼是關鍵幀,我們定義的關鍵幀為:從該幀中的移動線索可以可靠地得到一個移動物體或移動物體的一部分,那麼這一幀就是關鍵幀。

是以,我們給出兩個依據移動線索提取關鍵幀的标準:

∑(mc(x,y)≥δ)>minArea(2)

Var((x,y)|mc(x,y)>δ)<maxSpan(3)

第一個标準對圖像中被看做有效移動像素的個數,隻有數量大于 minArea 才能算做關鍵幀。

第二個标準的左邊通過計算位置的方差來衡量潛在目标像素的空間分布。通過這種方法,第二個标準要求一個關鍵幀有緊湊的移動線索。也即要求有效的移動像素在空間位置上聚集在一起。

5.從關鍵幀中提取移動子物體(Segment moving sub-objects from key frames)

隻使用移動線索來确定移動物體是有局限的:

第一:不是移動物體的所有像素都有明顯的移動線索。就如前面的孩子的例子,其移動線索就是稀疏的。

第二:移動物體的移動并非貫穿整個視訊,甚至當物體移動時,隻有它的一部分有明顯的移動。

在這部分,我們目的在于提取出移動物體的在目前幀的幾個移動部分,以此解決第二個問題。我們稱這些部分為:移動子物體。

而第一個問題可以通過考慮相鄰像素标簽的互相作用來解決:

1.相鄰像素有可能有相同的标簽;

2.有相同顔色的相鄰元素有更大可能有相同的标簽。

是以我們使用MRF網絡來描述這種像素之間的相似性:

p(li|i=1,...,M)∞∏i∈{1,..,M}∏j∈Niψ(li,lj)(4)

ψ(li,lj)=exp(λlilj/(α+d(i,j)))(5)

其中 li 是像素 i 的标簽,li=−1 表示屬于移動物體, li=1 表示屬于背景物體, M 是圖像中的像素個數,Ni是像素i的8個鄰域像素。 d(i,j) 衡量兩個像素之間的顔色差。

是以對于關鍵幀來說,移動線索對于預測物體的移動部分是可靠的,是以,給定标簽的一張圖檔 I 的似然機率可以表示為:

p(I|{i=1,...,M})=∏i∈1,...,Mp(fi|li)(6)

p(fi|li)=pm(mci|li)=exp(li(mci−δm))(7)

其中 fi 是像素 i 的特征,mci是像素 i 點的移動線索,δm是參數。

有了上面兩個公式,即得到了MRF先驗機率和似然模型,那麼對于一張關鍵幀圖像來說,運動物體分割就可以通過找到使下面的表達式最大的标簽值來實作:

P(L|I)=1Z∏i∈Ip(fi|li)∏i∈I∏j∈Niψ(li,lj)(8)

上面的表達式的求解很容易,有很多算法可以解決這個優化問題,本文采用的是graph cut algorithm,原因是此算法針對二進制MRF可以快速找到全局最優點

至此,已經可以提取出視訊的移動子物體并做出分割,即達到圖1的(c)的效果,然而我們想要得到的是整個運動物體,是以還需要進行顔色模型的學習和局部線索的擷取,進而獲得整個運動物體。

6.學習顔色模型(Learning color cues)

在本部分,我們首先假設從所有關鍵幀中提取出的移動子物體可以構成視訊中對運動物體的完整采樣,這就意味着運動物體的任何一個部分都會在關鍵幀中出現過至少一次。

基于上面這個假設,運動物體的顔色分布就可以被一個**高斯混合模型(Gaussian

Mixture Model,GMM)**來描述。

一個高斯混合模型可以被參數化地表示為 gi(pi,μi,Σi) , i=1,...,n 其中 n 是高斯分量的個數,Σi,μi和 pi 分别是顔色均值向量,協方差矩陣和 gi 的先驗機率分布。

文章使用由關鍵幀得到的移動子物體來訓練一個高斯混合模型 Gf 。學習是通過EM算法完成的。

一個像素在顔色c上對移動物體的親和力 Gf 可以表示為:

affic(c)=maxgj∈Gfgj(c)(9)

gj(c)=pj|Σj|−−−√exp(−12(c−μj)TΣ−1j(c−μj))(10)

是以,基于上式的似然模型可以表示為:

pc(ci|li)=exp(li(log(affic(ci))−δc))(11)

其中 δc 是參數。

不可避免地,由于檢測到的移動子物體會包含有一些背景像素,是以運動物體模型 Gf 會含有一些錯誤的高斯成分。這些錯誤的成分在檢查成分和背景像素之間的親和度時會被檢查出來,如果一個成分 g 和背景像素太過相近,它應該被排除在外,從Gf中剔除。

我們通過計算一個成分 g 和移動子物體邊緣的背景像素的距離來衡量其和背景像素的相似度。如果一個移動子物體周圍很多像素都和g很接近,那麼 g 就有很大可能是個錯誤的成分。根據這個思路,我們都過下面的式子計算親和相似度:

affib(g)=∑pi∈B[1pi∈g∑pj∈Ni,pj∉F1g(pj)>γg(pj)]∑pi∈B1pi∈g(12)

其中 F 是所有移動子物體的集合,B是所有這些子物體邊緣的集合。 1expr 是一個訓示函數,當 expr 為真時等于1,否則等于0。分母是所有屬于成分 g 的B中的像素的總和。 Ni 是 pi 的8鄰域。 g(pi) 是 pj 和 g 的相似程度。

學習得到的GMM模型可以表示如下圖:

Learning color and locality cues for moving object detection and segmentation方法解析

7.學習局部線索(Learning locality cues)

當背景顔色和運動物體顔色相近時,隻有顔色模型是不夠的。我們要用關鍵幀中的移動子物體的位置來提供局部線索來結局顔色上的近似。

由于運動物體的形狀是任意的,我們使用一個基于真實資料的非參數模型來計算一個像素和運動物體的空間相似性:

affits(xi)=12πσ2maxf∈Fexp(−(xi−xj)T(xi−xj)2σ2)(13)

affitx(xi) 是關鍵幀 t 中的像素i和移動子物體 F 的空間相似度,xi是像素 i 的位置。

和之前的顔色線索類似,基于上面相似度的似然模型可以表示成:

ptx(xi|li)=exp(li(log(affits(xi))−δs)(14)

8.運動物體分割(Moving object segmentation)

得到了顔色模型和局部線索之後,我們就可以擴充我們的MRF模型了,将顔色模型和局部線索加入到公式6中去來得到整個運動物體的模型。接下來要将MRF模型從關鍵幀擴充到整個視訊,不過因為移動線索是稀疏的和不完整的,同時局部線索隻在關鍵幀中有效,是以顔色模型會占主導地位,這會導緻在背景中有和運動物體顔色相近的像素塊的時候出現檢測錯誤。為了解決這個問題,我們要把局部線索從關鍵幀擴充到其他幀去。我們使用下面的方法擴充局部線索同時進行運動物體的分割。

第一步是重新估計關鍵幀中的移動物體,我們通過将顔色模型和局部線索加入到公式6中來擴充了MRF模型:

logpt(fi|li)=logptm(mci|li)+λclogptc(ci|li)+λslogpts(xi|li)(15)

第二步是将局部線索擴充到所有幀中去,具體方法如下圖算法1,同時分割物體。

最後我們使用公式15重新估計運動物體,即完成所有步驟。

Learning color and locality cues for moving object detection and segmentation方法解析

文章中提供了實驗結果示意圖,如下圖所示:

Learning color and locality cues for moving object detection and segmentation方法解析

繼續閱讀