Articulated pose estimation with flexible mixtures-of-parts 論文閱讀摘要
一、簡介
這篇論文是2011年的時候發表的,可以推測這個工作起碼在2009年底左右就開始了,也就說是屬於比較早期的人體姿態估計的工作。這個文章有程式碼github上的,程式碼。文章主要採用的是傳統方法做的,沒有使用到深度學習,也不需要使用GPU,可以說速度上已經很快了,而且精度上也是不低的。程式碼我在mac上的matlab2015b沒跑起來,在win10上的matlab R2016a正常運行了。
二、文章主要方法介紹
文章所描述的“flexible mixtures-of-parts”這個模型主要是利用了parts之間的關係進行建模,一種樹狀結構的模型。文章中提出了兩種特徵表示:
“represenations for articulated pose”:就是對於關節點之間進行配對,有一種葉子節點和父節點的關係。
“representations for objects”:覺得以前的模型建立的太簡單了,需要更復雜的編碼。
Model:
I用來標記一張Image,Pi=(x,y)用來表示某一個part的位置,ti用來表示part i的一個附加資訊。i 屬於 {1~K}也就是總共K個身體parts;pi屬於{1~L} 有L個原因是採用了特徵金字塔,金字塔有L層;ti屬於{1~T}。作者把ti叫做“part i的型別”,就像是形容手臂的時候可以說“豎直,水平”這樣。
1、定義了一個為t打分的函式:
這裡兩部分分別表示,區域性得分總和以及配對得分總;i代表K個關節中的第幾個。這屬於一種type的得分,但是具體如何得到b的值,還需要研究下。個人理解是因為HOG特徵需要對不同狀態的part有不同的濾波filter,如手臂橫著和豎著這兩種狀態需要兩種filter,那麼對於手臂這個part 就會有2張feature map。最後max一下把score得分最高的提出來就行。
2、最終的得分的函式,對於這部分的話,後兩部分我看起來還算是比較理解:
這個公式的意思就是,對於每一個圖片I,他的P的集合以及t的集合可以最終來得到一個score map這個map是輸入影象的一定倍數縮小。公式中第一部分,就是公式(1),第二部分表示了對於每一個HOG特徵去點乘W,其實就是卷積操作,在實現的時候還會加上一個bias,w和bias都是訓練得到的。實際操作的時候,HOG有32層,每一層有32個feature maps,這是特徵金字塔。公式中的第二部分後一項=[dx,dx^2,dy,dy^2].T dx=xi-xj;這主要是用於描述part 之間的關係的得分。
3、special case
主要是去考慮T=1的這種情況。在這種情況下,部分引數就可以簡化了(主要是以下幾個引數):
4、inference
推測的時候,需要給每一個候選的part i,進行打分,這也涉及了該候選part i的kid 節點:
這裡的計算過程相當複雜,很多的遞迴和迭代,而且w還有很多中的狀態組合,時間複雜度很高,在程式碼中作者給了一種比較簡化的版本,應該是屬於special case裡面。
三、訓練過程
這裡下次更新,還沒弄明白。
四、實驗結果
值得一提的是,作者也用自己設計的特徵計算框架進行person檢測:
99.6這個結果,哪怕現在用最好的FPN接面構的rcnn也怕是難以匹敵。
作者在實驗中給T的個數進行了實驗,以及part個數,資料集中part只有14個標註,可以增加mid point的方式增加到27個。特徵的結果顯著,雖然總體結果和deep的有差距,但是deep現在在mpii和coco上都已經比較高了,我用mask rcnn在mpii上沒有完全訓練,已經要接近平均93map了,這基本上想要網上有大的提升很難搞,但是deep的泛化能力和魯棒性有時候經常會出問題,這一部分傳統模型做的還是比較好的。