1. 程式人生 > >讀書筆記25:2D/3D Pose Estimation and Action Recognition using Multitask Deep Learning(CVPR2018)

讀書筆記25:2D/3D Pose Estimation and Action Recognition using Multitask Deep Learning(CVPR2018)

摘要:首先指出背景,即action recognition和human pose estimation是兩個緊密相連的領域,但是總是被分開處理。然後自然地引出本文的模型,本文的模型就針對這個現狀,提出了一個multitask framework,既能從靜態image中進行2D和3Dpose estimation,也能從video sequence中進行action recognition。並且,作者證明了,end-to-end的優化方式比分開訓練效果更好。此外,模型還能同時用不同領域的資料進行訓練。(可能是說資料集的差別比較大?)在實驗中取得不錯成果。本文摘要介紹模型採取的是隻介紹特點不介紹工作過程的方式。

在閱讀introduction部分的時候,發現了一個現象,就是好幾篇CVPR的文章在introduction後面介紹自己的方法的時候都會將自己contribution分成幾點列寫出來。

技術部分首先介紹的是pose estimation,本文采取的是regression based approach,給定一個image ,輸出的estimated pose表示為是人體關節數量,D是每一個關節的feature vector維度。regression是通過下式給出

                                                                                         

這裡面的是estimated pose,是函式的引數,pose estimation的目標就是使得估計出來的和ground truth pose p之間的差別最小化。這個pose estimation的函式是用CNN實現的,而由於這個pose estimation的模組是整個multitask approach的第一個部分,要想使用end-to-end的訓練方式,就必須讓這一部分是可微分的,因此,在argmax的時候,採取了soft-argmax來替代,這個函式也能將heatmap轉化為關節座標值,並且是可微分的,是別人的文章中提出來的東西(Human pose regression by combining indirect part detection and contextual information,LIFT: Learned Invariant Feature Transform)。

pose estimation的網路架構大致如下圖

                                      

首先使用inception-V4進行基本的feature提取,之後用K個prediction block來對estimation進行進一步的修飾和完善,最後一層的輸出就作為最終的estimated pose 。每一個prediction block都含有8個residual depth-wise convolution,並且被分成三種不同的解析度(這個具體是什麼意思不是很懂)。作者在這裡還說模型的一個副產品是low-level visual feature和由於使用了soft-argmax而得到的intermediate joint probability map,這個low-level visual feature指的應該是用inception得到的基礎feature,這個部分不理解的放到後面去看看能不能理解。

soft-argmax可以生動的用下圖表示

這是以2D的heatmap為例,首先將所有的畫素點的數值進行softmax,使得最大值更加突出,其他小數值的影響下降,這樣得到的heatmap就是一個probability map,每一個畫素的值代表這個畫素值是某一個joint的可能性大小,而對於joint位置的預測是按照下式計算期望得到的

這裡x代表輸入的2D訊號,也就是heatmap,是heatmap的尺寸,是softmax函式。這個式子表明了對座標值加權求和的過程,分母上的Wx和Hx都是類似於歸一化的作用,不好解釋但是很好理解,就是每一個畫素的橫/縱座標值經過加權求和得到joint座標值的預測值,但是每一個預測值在一個方向用softmax歸一化之後,在另一個方向上還計算了Hx/Wx次,因此要除一下。

對於3D的pose estimation其實是一樣的思路,如下圖所示是將2D和3Dpose estimation結合在一起的模型

考慮一共有Nd個2D的heatmap,Nd指的是depth dimension,(x,y)維度的座標的預測是先將Nd個heatmap取平均之後在按照之前的方法進行計算的,而z方向的座標值預測採取的方法是在xy兩個方向上進行平均之後得到一個vector,再進行一個一維的soft-argmax函式。

有了這種處理3D的方法,模型可以同時用2D和3D的資料進行訓練,當只有2D資料的時候,就只對相應的引數進行更新即可。

接下來就是動作識別的部分。作者強調,本文模型的一個重要的特點就是能夠同時抓取高層次的pose資訊和低層次的visual feature,也就是figure2中表現出來的,前一部分的inception用來抓取visual feature,後面的部分用來抓取pose資訊。

像上圖中顯示的一樣,本文模型的action recognition分為兩個flow,一個是基於pose的,一個是基於visual feature的,分別稱為pose-based recognition,一個稱為appearance-based recognition,最終兩個flow的結果結合起來得到最終的分類結果。接下來分別介紹這兩個flow都是怎麼進行action recognition的。

pose-based action recognition是將每一幀所有的joint資訊排列成一行Nj個,然後多幀就是很多行,形成了一個image形式的資料,然後使用全卷積網路來提取特徵。這個設計是考慮到一個問題,當一個video中的action只依賴於幾個joint的時候,全連線網路將會需要將一些無關緊要的joint置零處理,但這是一個很難學習的東西,相反,2D卷積可以先天的有助於這種稀疏結構的形成,不需要手動選擇joint了。下圖展示了大致的網路架構

對於appearance based action recognition,採取的也是類似的結構進行,只不過輸入的不是body joints,而是appearance feature。具體來講,首先,將得到的visual feature map和pose estimation得到的probability map相乘,是visual feature map,是probability map。是feature數,是joint數。相乘之後得到的是的一個tensor,也就是說每一個joint的probability map都要和visual feature map相乘得到一個結果。之後空間維度通過求和來消除,得到的一個tensor,對於T幀的video,最終就得到的一個tensor表示appearance feature,下圖表示這個過程

由此得到的appearance feature就可以像前述的pose based action recognition一樣進行識別了。

同時用appearance和pose進行動作識別的原因是有些時候兩個動作很像,難以用pose區分開來,比如喝水和打電話,但是如果加上對水杯和電話的visual feature,這個問題就好辦多了。