Reading papers_15(Graph cuts optimization for multi-limb human segmentation in depth maps)
?
如果大家有用過kinect做開發(fā),不管是使用kinect SDK還是使用OpenNI,估計(jì)都對這些庫提供的人體骨骼跟蹤技術(shù)有一定的好奇,心里在想,每個(gè)人穿的衣服不同,身體特點(diǎn)也不同,所處的環(huán)境不同,且走路或做手勢時(shí)的姿勢也不相同,竟然能夠跟蹤人體的骨架,且效果不錯(cuò)。那么上面的Kinect SDK和OpenNI提供給kinect開發(fā)的核心算法——人體骨架跟蹤到底是怎么實(shí)現(xiàn)的呢?CVPR2011的最佳論文就給出了微軟SDK的核心算法,見參考文獻(xiàn)2,該文章主要是講的Kinect SDK的人體骨架跟蹤核心算法。因?yàn)樵撍惴ň哂衅者m性,且效果好,被評為best peaper那是必須的。微軟算法的流程圖如下所示:
由于微軟的骨架跟蹤只需要確定每個(gè)身體部位的骨架節(jié)點(diǎn),所以對人體中每個(gè)像素并不要求其一定分類正確,只需要身體的某個(gè)部位附近的像素能確定一個(gè)骨骼點(diǎn)即可。所以由上圖可以看出,微軟的算法對人體的某個(gè)像素點(diǎn)的分類有不少是錯(cuò)誤的。因此后面有學(xué)者提出怎樣在微軟算法的基礎(chǔ)上通過優(yōu)化來使每個(gè)像素點(diǎn)的分類更準(zhǔn)確呢?這就是本文度的論文,見參考資料1。
該文章的流程示意圖如下:
本論文的算法分為2部分,RF(Random forest,隨機(jī)森林)對每個(gè)像素進(jìn)行分類+GC(Graph Cut,圖割)對每個(gè)像素優(yōu)化。其想要完成的功能是,將人體分為7個(gè)部分,每只手分為3個(gè)部分,手掌,手肘,手臂,另外整個(gè)軀干和頭當(dāng)做一個(gè)部分。只對人體的上半部分做分類處理。
首先來看看RF部分,該部分和微軟算法的第一部沒什么2樣,基本上是照抄的。
在使用RF來分類前,首先需要對訓(xùn)練樣本(即人體圖像的深度圖)進(jìn)行特征提取,該特征提取的公式非常簡單,如下所示:
該公式感性認(rèn)識上就是:假設(shè)對每個(gè)點(diǎn),有相同的(u,v)。(u, v)代表像素點(diǎn)的偏移位置,不同部位的點(diǎn)經(jīng)過偏移后得到另一個(gè)像素點(diǎn),這2個(gè)點(diǎn)之間的深度信息相減就是該點(diǎn)的特征。比如說手掌上的點(diǎn),經(jīng)過偏移后得到的另一個(gè)點(diǎn)可能是背景,而背景的深度一般比較遠(yuǎn),所以手掌上該點(diǎn)的特征值很大;而同樣的u和v,對應(yīng)胸部點(diǎn)而言,其偏移后的點(diǎn)有可能還在胸部上(因?yàn)槿梭w的軀干面積比較大),所以該點(diǎn)的特征值比較小。由此可見,人體骨架跟蹤的特征是非常簡單的,但是由于訓(xùn)練數(shù)據(jù)非常之龐大,所以最后得到的RF分類效果還是非常不錯(cuò)的。
有了深度圖像的在后就可以使用這些特征來訓(xùn)練RF中的參數(shù)了。訓(xùn)練每顆數(shù)分為以下5部分:
1. 隨機(jī)從特征集中選擇一部分特征用來訓(xùn)練,這里的特征除了上面講的(u, v)外還包括一個(gè)閾值sida,因?yàn)橹挥袑@些特征值設(shè)定一個(gè)閾值,在Decise Tree中才能對這些特征進(jìn)行分支。
2. 隨機(jī)從訓(xùn)練樣本集中選擇出一部分樣本用來訓(xùn)練。上面2個(gè)步驟就是RF中Random的來源,即訓(xùn)練樣本是隨機(jī)的,特征屬性也是隨機(jī)的。
3. 計(jì)算整個(gè)樣本的信息熵。
4. 每一次tree的分支選擇的是最優(yōu)的屬性,最優(yōu)屬性的定義是使信息增益最大的那部分屬性。
5. 循環(huán)步驟3和4,知道樹到達(dá)某種條件而停止訓(xùn)練,比如說,到達(dá)一定層數(shù),或者說該節(jié)點(diǎn)已經(jīng)可以被當(dāng)做是葉子節(jié)點(diǎn)了。
RF的test部分非常簡單,即每輸入一副圖像,并且制定其中某個(gè)像素點(diǎn)的坐標(biāo),就將其輸入到RF中的每一顆樹中,然后采用投票或平均的方法來決定到達(dá)是以怎樣的概率將該像素點(diǎn)分類到人體中的7個(gè)部位。其投票公式如下:
關(guān)于隨機(jī)森林的介紹可以參考前面的博文:一些知識點(diǎn)的初步理解_7(隨機(jī)森林,ing...)
下面是GC部分,GC理論在cv中一般是用來做圖像分割的,這里作者將其用來對每個(gè)像素點(diǎn)進(jìn)行優(yōu)化。GC理論是優(yōu)化由2個(gè)值的和,該和稱為能量函數(shù),公式如下:
由2部分構(gòu)成,1部分稱作一元項(xiàng),是用來區(qū)分該像素點(diǎn)屬于某個(gè)類別的概率,一個(gè)稱作是二元項(xiàng),用來表示該像素點(diǎn)和其周圍的像素之間的關(guān)系。GC理論把該式子的優(yōu)化轉(zhuǎn)換成圖割的尋找,即對應(yīng)一個(gè)圖,只需要對該圖的每條邊賦值。當(dāng)然了,該圖頂點(diǎn)的組成是由圖中每個(gè)像素點(diǎn)+每一類的一個(gè)像素點(diǎn),具體的介紹可以參考前面的博文:一些知識點(diǎn)的初步理解_8(Graph Cuts,ing...)
這里的細(xì)節(jié)就不做介紹了,直接將作者給圖的邊的權(quán)值如下:
上面是一些理論部分,下面是實(shí)驗(yàn)結(jié)果:
其中(a)是groud true;(b)是RF分類的結(jié)果;(c)是對每一張圖片采用GC優(yōu)化的結(jié)果,沒有采用時(shí)間信息;(d)是對幾幀圖片采用GC理論優(yōu)化后的結(jié)果,其中包含了深度信息;(e)的上一行是Groud truth,中間一行是RF分類的結(jié)果,最下面一行是GC優(yōu)化的結(jié)果。
?
?
參考資料:
Hernández-Vela, A., N. Zlateva, et al. (2012). Graph cuts optimization for multi-limb human segmentation in depth maps. Computer Vision and Pattern Recognition (CVPR), 2012 IEEE Conference on, IEEE.
Shotton, J., A. Fitzgibbon, et al. (2011). Real-time human pose recognition in parts from single depth images. Computer Vision and Pattern Recognition (CVPR), 2011 IEEE Conference on, IEEE.
? ? ?一些知識點(diǎn)的初步理解_7(隨機(jī)森林,ing...)
? ? ?一些知識點(diǎn)的初步理解_8(Graph Cuts,ing...)
?
附錄:
我在實(shí)驗(yàn)室報(bào)告這篇文章的ppt。
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的Reading papers_15(Graph cuts optimization for multi-limb human segmentation in depth maps)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle中判断空游标的方法
- 下一篇: DDMS的使用、内存溢出的调试和模拟器的