姿態估計和行爲識別作爲計算機視覺的兩個領域,對於新人來說,較爲容易弄混姿態估計和行爲識別兩個概念。
姿態估計(Pose Estimation)是指檢測圖像和視頻中的人物形象的計算機視覺技術,可以確定某人的某個身體部位出現在圖像中的位置,也就是在圖像和視頻中對人體關節的定位問題,也可以理解爲在所有關節姿勢的空間中搜索特定姿勢。簡言之,姿態估計的任務就是重建人的關節和肢幹,其難點主要在於降低模型分析算法的複雜程度,並能夠適應各種多變的情況、環境(光照、遮擋等等)。姿態估計的輸出,是一個高維的姿態向量,而不是某個類別的類標,因此這一類方法需要學習的是一個從高維觀測向量到高維姿態向量的映射。
姿態估計可分爲四個子方向:
單人姿態估計(Single-Person Skeleton Estimation)
單人姿態估計,首先識別出行人,然後再行人區域位置內找出需要的關鍵點。常見的數據集有MPII、LSP、FLIC、LIP,每種數據集都有不同的精確度指標。其中MPII是當前單人姿態估計中最常見的benchmark,使用的是PCKh指標(可以認爲預測的關鍵點與GT標註的關鍵點經過head size normalize後的距離),目前有的算法已經可以在上面達到93.9%的準確率。
多人姿態估計(Multi-Person Pose Estimation)
單人姿態估計算法往往被用來做多人姿態估計,一般有兩種方式。Top-down先找到圖片中所有行人,然後對每個行人做姿態估計,尋找每個人的關鍵點;bottom-up先尋找圖片中所有的parts(關鍵點,比如頭部、手、膝蓋等),然後把這些parts組裝成一個個行人。
測試集主要有COCO、CrowdPose等。
人體姿態跟蹤(Video Pose Tracking)
如果把姿態估計往視頻中擴展,就有了人體姿態跟蹤的任務。主要是針對視頻場景中的每一個行人,進行人體以及每個關鍵點的跟蹤。這是一個綜合且難度較大的工作,相比於行人跟蹤來說,人體關鍵點在視頻中的temporal motion會比較大,比如一個行走的行人,手跟腳會不停的擺動,所以跟蹤難度會比跟蹤人體框大。
主要的數據集是PoseTrack
3D人體姿態估計(3D skeleton Estimation)
將人體姿態往3D方向進行擴展,則是輸入RGB圖像,輸出3D的人體關鍵點。
經典數據集Human3.6M
除了輸出3D的關鍵點之外,有一些工作開始研究3D的shape,比如數據集DensePose,而且從長線來講,這個是非常有價值的研究方向。
2D姿勢估計——從RGB圖像估計每個關節的2D姿勢(x,y)座標。
3D姿勢估計——從RGB圖像估計3D姿勢(x,y,z)座標。
行爲識別可以藉助姿態估計的相關研究成果來實現,比如HDM05這類姿態庫就提供了每一幀視頻中人的骨架信息,可以基於骨架信息判斷運動類型。
參考文獻
人體姿態估計文獻綜述,簡單介紹了大約十種方法
https://blog.csdn.net/BockSong/article/details/81037059
深度學習人體姿態估計算法綜述
https://www.infoq.cn/article/6Btg0-1crfmb7svRGa6H
2019深度學習人體姿態估計指南(翻譯的文章)
https://blog.csdn.net/u010636181/article/details/90036365
https://nanonets.com/blog/human-pose-estimation-2d-guide/
行爲識別(Action Detection/Regnition),最終的結果是得到圖像或視頻段中目標的行爲類別。視頻中人體行爲識別主要分爲兩個子方向。
一個是給定一個視頻片段進行分類(行爲分類 Action Recognition),一般使用的數據庫都先將動作分割好了,一個視頻片段中包含一段明確的動作,時間較短(幾秒鐘)且有唯一確定的標籤。所以也可以看作是input爲視頻,輸出爲label。
一個是不僅要知道一個動作在視頻中是否發生,還需要知道動作發生在視頻的哪段時間(包括開始和結束時間)(行爲檢測 Temporal Action Localization)。特點是需要處理較長的、未分割的視頻,且視頻中通常有較多幹擾,目標動作一般只佔視頻的一小部分。也可以說是對視頻進行指定行爲的檢測
Action Recegniton和Temporal Action Localization之間的關係,同image classification和object detection之間的關係比較像。基於image classification問題,發展出了許多強大的模型,比如ResNet、VGGNet等,這些模型在object detection的方法中起到了很大的作用。同樣的,action recognition的相關模型如two-stream、C3D、iDT等也被廣泛的應用在action detection中。
參考文獻
行爲識別的綜述博客:
https://blog.csdn.net/neu_chenguangq/article/details/79504214
給出了行爲識別的一些概述及資源合集(文章、代碼)
https://blog.csdn.net/Gavinmiaoc/article/details/81179630
時序動作檢測綜述
http://www.pianshen.com/article/5760138121/
常用的行爲分類的數據集:
UCF101:來源爲YouTube視頻,共計101類動作,13320段視頻。共有5個大類的動作:1)人-物交互;2)肢體運動;3)人-人交互;4)彈奏樂器;5)運動。
HMDB51:來源爲YouTube視頻,共計51類動作,約7000段視頻。
骨架數據庫,比如MSR Action 3D,HDM05,SBU Kinect Interaction Dataset等。這些數據庫已經提取了每幀視頻中人的骨架信息,基於骨架信息判斷運動類型。
常用的行爲檢測的數據集:
THUMOS2014:在行爲檢測任務中只有20類動作的未分割視頻是有序行爲片段標註的
MEXaction2:騎馬和鬥牛
ActivityNet:目前最大的數據集,同時包含分類和檢測兩個任務,包含200個動作類別
行爲識別的難點:
(1)類內和類間差異, 同樣一個動作,不同人的表現可能有極大的差異。
(2)環境差異, 遮擋、多視角、光照、低分辨率、動態背景.
(3)時間變化, 人在執行動作時的速度變化很大,很難確定動作的起始點,從而在對視頻提取特徵表示動作時影響最大。
(4)缺乏標註良好的大的數據集
行爲識別領域內的重要方法
傳統方法——iDT
利用光流場來獲取視頻序列中的一些軌跡,再沿着軌跡提取HOF、HOG、MBH、trajectory等特徵。HOF基於灰度圖計算,另外幾個基於optical(密集光流)計算。最後對其進行特徵編碼,再基於編碼結果訓練SVM分類器。iDT利用前後兩幀之間的光流和surf關鍵點進行匹配,從而消除或減弱相機運動帶來的影響。
優點:穩定性最高、可靠性高
缺點:速度慢
深度學習——Two-Stream(雙流CNN)
對視頻序列中每兩幀計算密集光流,得到密集光流的序列(即temporal信息)。然後對於視頻圖像(spatial)和密集光流(temporal)分別訓練CNN模型,兩個分支的網絡分別對動作的類別進行判斷,最後直接對兩個網格的class score進行fusion(包括直接平均和SVM
兩種方法),得到最終的分類結果。
優點:精度高,在UCF-101上達到0.96的準確率
缺點:速度慢
深度學習——C3D(3D卷積)
通過3D卷積操作核去提取視頻數據的時間核空間特徵。這些3D特徵提取器在空間和時間兩個維度上操作,因此可以捕捉視頻流的運動信息。然後基於3D卷積提取器構造一個3D卷積神經網絡,這個架構可以從連續視頻幀中產生多通道的信息,然後在每一個通道都分離地進行卷積和下采樣操作。最後將所有通道的信息組合起來得到最終的特徵描述。
優點:速度快,300fps
缺點:精度低,在UCF-101上爲0.85準確率
參考文獻
三種方法的對比引自於:
https://www.jianshu.com/p/2c2c7e96b9b7
按照時間順序整理了部分視頻行爲檢測&分類方案
https://www.jianshu.com/p/583c26bbb675