1. 基本概念
- 算法改進入口
- 網絡設計
- 特徵流
- 損失函數
- 數據集的重要性:只要有一個好的、針對性的數據集,問題都可以解決
- 過集成新一代AutoML技術,可降低算法試錯成本
- 人體姿態估計(Human Pose Estimation):是指圖像或視頻中人體關節的定位問題。 也可表述爲:在所有關節姿勢的空間中搜索特定姿勢。
- 2D姿態估計(2D Pose Estimation):從RGB圖像估計每個關節的2D Pose(x,y)座標。
- 3D姿態估計(3D Pose Estimation):從RGBD圖像中估計每個關節的3D Pose(x,y,z)座標。
- Human Pose Estimation:又名Human Keypoint Detection
- 人體姿態估計方法可分爲:
- 基於模型的生成方法:Pictorial Structure Model (PSM)是最流行的基於模型的生成方法,傳統的PSM將人體視爲關節結構。該模型通常由兩部分組成,分別對每個身體部位的外觀和相鄰部位之間的空間關係進行建模。D
- 人體位姿
- 位姿中的每一個座標點稱爲一個“部分(part)”或關節(joint)或關鍵點(keypoint)
- 兩個部分之間的有效連接稱爲一個“對(pair)“(或肢體)
- 不是所有的關節之間的兩兩連接都能組成有效pair(肢體)
- 常用術語:
- 基於判別的方法:把姿態估計當作一個迴歸問題
縮寫 | 全稱 |
---|---|
mAP | mean Average Precision |
AP | Average Precision |
IoU | Intersection over Union |
OKS | Object Keypoint Similarity |
AR | Average Recall |
MPJPE | Mean Per Joint Position Error |
1.1 姿態估計的難點
- 小且幾乎看不見的關節
- 部分遮擋(partial occlusion)
- 不同視角(view-point)
- 衣服顏色(black is bad)及材質
- 光照變化(lighting change)
- 背景雜亂(background clutter)
1.2 人體結構化特性
- 身體部位比例
- 左右對稱性
- 互穿性約束
- 關節界限(例如肘部不能向後彎曲)
- 身體的連通性(例如手腕與肘部剛性相關)
1.3 評價指標(Evaluation Metrics)
1.3.1 2D姿態估計評價指標
-
Percentage of Correct Parts - PCP(正確四肢的百分比)
- 如果兩個預測關節位置和真實關節位置之間的距離小於肢體長度的一半(通常表示爲[email protected]),則認爲檢測到肢體(正確的部分)
- 測量肢體的召回率。缺點是,由於較短的肢體具有較小的閾值,因此它對較短的肢體的懲罰更大
- PCP越大,模型越好
-
Percentage of Correct Key-points - PCK (正確關節的百分比)
- 如果預測關節和真實關節之間的距離在某個閾值內,則認爲檢測到的關節是正確的
- [email protected]:閾值=頭骨連接的50% (head bone link)
- [email protected]:預測關節和真實關節之間的距離<0.2*軀幹直徑 (torso diameter)
- 有時採用150mm作爲閾值, 由於較短的肢體具有較小的軀幹和頭部骨骼連接,因此可以緩解較短肢體的問題
- PCK可用於2D和3D
-
Percentage of Detected Joints - PDJ (檢出關節的百分比)
- 如果預測關節和真實關節之間的距離在軀幹直徑的某一比例範圍內,則認爲檢測到的關節是正確的
- [email protected]=預測關節和真實關節之間的距離<0.2*軀幹直徑
-
Object Keypoint Similarity (OKS) based mAP
- 用於COCO關鍵點檢測挑戰賽中
:檢測到的關鍵點與相應的真實值(ground truth)之間的歐幾里德距離
:真實值(ground truth)的可見度標誌
:對象比例
:控制衰減的每個關鍵點常量
- 用於COCO關鍵點檢測挑戰賽中
1.3.2 3D姿態估計評價指標
- MPJPE(Mean Per Joint Position Error)
- 平均每關節位置誤差是3D人體姿態估計中最常用的評價指標
- 每關節的位置誤差是一個關節的Ground真實值和預測值之間的歐幾里德距離
- T樣本數量
1.4 姿態估計分類
- 單人姿態估計:Single-Person Skeleton Estimation
- 多人姿態估計:Multi-Person Pose Estimation
- 人體姿態跟蹤:Video Pose Tracking
- 3D姿態估計:3D Skeleton Estimation
1.5 姿態估計方法
1.5.1 Top-Down
- 步驟:
- 第一步:找到圖片中所有的人
- 第二步:對每個人做姿態估計
- 第三步:尋找每個人的關鍵點
- 應用場景:
- 單人姿態估計
1.5.2 Bottom-Up
- 步驟:
- 第一步:找到圖片中的所有parts(關鍵點), 比如頭、左手、右手
- 第二步:把這些parts(關鍵點)組裝成一個個人
1.6 常用關鍵資源
- OpenVINO™ Toolkit Pre-Trained Models (Human Pose Estimation)
- learnopencv (Human Pose Estimation)
- openpose (原作者)
2. 數據源類型+數據集+代碼
2.1 數據源類型分析
2.1.1 數據源類型
- RGB圖像
- 特徵:形狀、顏色和紋理
- 用途:提取興趣點和光流
- 深度圖像
- 深度信息對光照變化不敏感
- 深度信息對顏色和紋理不變性
- 可靠地估計人體輪廓和骨架
- 提供場景中豐富的三維結構信息
- RGB+D圖像
- 骨骼數據
- 包含人體關節位置
2.1.2 可用信息
- 空間信息 (spatial information)
- 時間信息(temporal information)
- 結構信息(structural information)
2.1.3 不同數據類型的識別方法
2.2 姿態數據集
序號 | 數據集 | 時間 | 人數 | 樣本數 | 指標/關節數 | 用途及特點 |
---|---|---|---|---|---|---|
1 | PoseTrack | 人體及關鍵點的跟蹤數據集 | ||||
2 | CrowdPose | |||||
3 | Human3.6M | 輸入RGB, 輸出3D人體關鍵點 | ||||
4 | DensePose | 輸入RGB,輸出3D Shape | ||||
5 | COCO | 2016 | 多人 | 200K | OKS/18 | 1) 輸入RGB, 輸出2D人體關鍵點 2) 200K圖像,250K關節標記實例 3) 2016冠軍:OpenPose (CMU AP:0.605) 4) 2017冠軍:CPN (Megvii AP:0.721) 5) 2018冠軍:MSPN (Megvii AP:0.764) 6) 2018亞軍: SB (MSRA AP:0.745) 7) 2019冠軍:RSN (Megvii AP=0.771) 8) 2019亞軍:DarkPose (UESTC AP=0.764) |
6 | MPII | 2014 | 多人 | 25K | PCKh/15 | (互聯網採集)此前的Paper都是基於FLIC和LSP做評估 |
7 | FLIC | 2013 | 5K | 來源於30部電影 | ||
8 | LSP | 2010 | 單人 | 2K | /14 | 運動員運作 |
9 |
- OpenPose:Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields 【code】
- CPN: Cascaded Pyramid Network for Multi-Person Pose Estimation 【code 】
- MSPN:Rethinking on Multi-Stage Networks for Human Pose Estimation 【code 】
- 第一,使用圖像分類表現較好的網絡(如 ResNet)作爲多階段網絡的單元網絡;
- 第二,提出逐階段傳遞的信息聚集方式,降低信息損失;
- 第三,引入由粗到精的監督,並進行多尺度監督
- 與HourGlass的比較:Hourglass 在重複下采樣和上採樣的過程中,卷積層的通道數是相同的。這是因爲高層語義信息更強,需要更多通道表徵。下采樣時,Hourglass 變體會導致特徵編碼(Encoder)無法很好地表達特徵,從而造成一定程度上的特徵信息丟失。相比於下采樣,上採樣很難更優地表徵特徵,所以增加下采樣階段的網絡能力對整體網絡會更有效
- SB:Simple Baselines for Human Pose Estimation and Tracking
- RSN:Res-Steps-Net for Multi-Person Pose Estimation
- DarkPose:Distribution-Aware Coordinate Representation for Human Pose Estimation 【code】
- FPD:Fast Human Pose Estimation 【code】
2.2.1 RGB數據集
- Leeds Sports Pose (LSP) Dataset
- Frames Labeled In Cinema (FLIC)
- MPII Human Pose Dataset
- MS COCO Keypoint Leaderboard
- AI Challenge
- PoseTrack
2.2.2 RGB-D數據集
2.3 代碼
- Pytorch-Human-Pose-Estimation
- microsoft / human-pose-estimation.pytorch
- facebookresearch / DensePose
- CMU-Perceptual-Computing-Lab / openpose C++
- Convolutional Pose Machines
- Fast Human Pose Estimation CVPR2019
- DarkPose- UESTC
3. 基於RGB圖像的2D姿態估計 (2D Pose Estimation)
- 基於RGB圖像
3.1 經典方法
序號 | 方法 | 特點 |
---|---|---|
1 | 通過一個全局Feature, 把姿態估計問題當成分類或迴歸問題直接求觖 | 精度一般,要求背景乾淨 |
2 | 基於圖模型(Pictorial Stucture Model),對單個Part使用DPM來獲得, 同時需要pair-wise關係來優化關鍵點間的關聯 |
精度較高 |
- 經典方法專注以下兩個維度:
- 特徵表示(Feature Presentation):如HOG, Shape Context, SIFT等Shallow feature
- 關鍵點的空間位置關係:如Pictorial Structure Model
- 這兩個維度在深度學習時代也是到頭重要的, 只是深度學習會把特徵提取、分類、空間位置的建模都在一個網絡中直接建模,這樣更方便設計和優化。
3.1.1 圖像結構框架(Pictorial Structures Framework)
- 原理:結構化的預測任務
- 通過部件(parts)的集合來表示一個對象,這些部件以可變形的 方式進行排列
- 一個部件(part)是一個外觀模板,它被用於在圖像中進行匹配
- 部件通過像素的位置和方向進行參數化,生成的結構可以對關節運動進行建模 - 侷限性
- 姿態模型不依賴圖像數據,需要不斷豐富模型的表示能力
- 模型
3.1.2 變形部件模型(Deformable Part Models)
- 原理
- DPM是模板的集合,這些模板以可變形的方式進行排列,每個模型有一個“全局模板+局部模板”
- 這些模板在圖像中匹配以識別/檢測對象
- 基於零件的模型可以很好地爲關節建模
- 侷限性
- 模型的表現力有限
- 沒有在全局範圍內加以考慮
3.2 基於深度學習
- 關鍵里程碑
序號 | 算法 | 時間 | 特點 | 作者 |
---|---|---|---|---|
1 | Convolutional Pose Machine (CPM) | 2016 | 從CPM開始,神經網絡可以E2E地把特徵表示以及空間點的位置關係建模進去(隱式建模) | CMU Yaser Sheikh (OpenPose) |
2 | Hourglass | 2016 |
- Heatmap:保存了空間位置信息
3.2.1 DeepPose (CVPR’14)
- 原理
- 姿態估計:被作爲基於CNN的身體關節迴歸問題
- 可使用級聯迴歸器以獲得更好的結果
- 可使用整體方式進行推理,即可推導出隱藏的關節
- 模型
- 主幹網絡:AlexNet
- 兩個全連接層
- 輸出2K個關節座標
- 損失函數:L2
- 侷限性
- 迴歸XY座標位置是困難的
- 增加了學習的複雜度
- 泛化能力差
- 通過級聯優化
- 結果
3.2.2 Efficient Object Localization Using Convolutional Networks (CVPR’15)
-
原理
- 通過並行運行多個分辨率的圖像來生成熱圖(heatmaps),同時捕獲各種尺度的特徵
- 輸出是離散的熱圖,而不是連續迴歸
- 熱圖預測關節在每個像素處發生的可能性
- 熱圖模型非常成功,隨後的許多論文都預測了熱圖,而不是直接回歸
- heatmap
-
模型
- Coarse Heat-Map Model:產生一個粗略的heatmap(關節)位置
- Fine Heat-Map Model: 以粗略的關節位置爲中心,取一個小圖求解更精確的關節位置
- 關鍵特徵:ConvNet和圖形模型的聯合使用,圖形模型學習關節之間的典型空間關係
- 損失函數:預測熱圖與目標熱圖間的Mean Squared-Error (MSE) 距離
-
侷限性
- 缺乏結構化模型
- 對人體結構進行建模應該使定位可見的關鍵點變得更加容易,並且可以估計被遮擋的關鍵點
-
結果
3.2.3 Convolutional Pose Machines (CVPR’16)
-
原理
- 學習長距離的空間關係:通過使用更大的感受野來實現
-
模型
- Convolutional Pose Machines (CPM) = 圖像特徵提取模型 + 預測模型
- 使用中間監督(intermediate supervision)以解決多層網絡梯度消失的問題
-
優點
- 引入了一個創新的CPM 框架
3.2.4 Human Pose Estimation with Iterative Error Feedback (CVPR’16)
-
原理
- 預測當前估計的錯誤並迭代地糾正它們
- 不是一次性直接預測輸出,而是通過反饋錯誤預測逐步改變初始解的自校正模型,這個過程稱爲迭代錯誤反饋(IEF)
-
模型
:由學習產生,其中就是CNN -
迭代過程效果
-
結果
3.2.5 Stacked Hourglass Networks for Human Pose Estimation (ECCV’16)
- 原理
- 堆疊的沙漏網絡(stacked hourglass network)
- 網絡由池化和上採樣層組成,看起來像一個沙漏
- 沙漏的設計是由需要捕捉每一個尺度上的信息驅動的
- 雖然局部證據對於識別面部和手部等特徵至關重要,但最終的姿勢估計需要全局背景。
- 人的方位、四肢的排列以及相鄰關節之間的關係是在圖像中不同尺度下最容易識別的線索之一(較小的分辨率捕獲高階特徵和全局上下文)
- 中間監督(Intermediate supervision):應用於每個沙漏階段的預測,即監督堆棧中每個沙漏的預測,而不僅僅是最終的沙漏預測。
- 模型
- Bottom-up processing (從高分辨率到低分辨率)
- Top-down processing (從低分辨率到高分辨率)
- 貢獻
- 它是一個2D姿態估計的Landmark,不僅提供了一個創新且直覺的架構,且打敗了以前的所有模型
- 沙漏在每個尺度都捕捉信息。全局和局部的信息被完全捕獲並被網絡用來學習預測。
- 結果
3.2.6 Simple Baselines for Human Pose Estimation and Tracking (ECCV’18)
- 目標
- 讓方法變得簡單,且效果不差
- 一個簡單的體系結構比使用跳過連接(保留每個分辨率的信息)的體系結構表現得更好
- 模型
- 一個ResNet + 幾個卷積層
- 使用MSE(Mean Squared Error)作爲預測heatmap與ground heatmap間的損失函數
- 結果
3.2.7 Deep High-Resolution Representation Learning for Human Pose Estimation [HRNet] (CVPR’19)
- 原理
- HRNet (High-Resolution Network):在COCO數據集中,HRNet模型在關鍵點檢測、多人姿態估計和姿態估計任務上都優於現有的所有方法
- 以前的研究大多是從高→低→高分辨率表徵;而HRNet在整個過程中都保持了高分辨率的表示,並且工作得非常好
- 另一個優點是這種架構不使用中間熱圖監控,不像堆疊的沙漏
- 使用MSE損失對熱圖進行迴歸
- 模型
- 結果
3.2.8 OpenPose: Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields (CVPR’17)
- 原理 :採用bottom-up方法:首先檢測出圖像中所有人的關節(關鍵點),然後將檢出的關鍵點分配給每個對應的人
- 工作流程
- 1)使用前面的幾個網絡層(VGG-19),從圖像中提取特徵圖
- 2)然後這些特徵被傳給兩個平行的卷積層分支
- Part Confidence Maps (PCM):第一個分支用來預測 18 個置信圖(S),每個圖代表人體骨架中的一個關節,下圖爲左肩關節的置信圖(Confidence maps)和關聯圖 (Affinity maps)
- Part Affinity Fields (PAF):第二個分支預測一個關節關聯(PA: Part Affinities)的2D向量場(2D Vector Fields)集合(L),它編碼了關節間的關聯度(degree of associatoin between parts),下圖爲neck與left shoulder間的關節關聯場(PAF:Part Affinity Field)
- Part Confidence Maps (PCM):第一個分支用來預測 18 個置信圖(S),每個圖代表人體骨架中的一個關節,下圖爲左肩關節的置信圖(Confidence maps)和關聯圖 (Affinity maps)
- 3)通過貪婪推理分析置信度圖和關聯圖,得到圖像中所有人的二維關鍵點
- 4)使用關節置信圖(Part Confidence Maps),可以在每個關節對之間形成二分圖
- 5)使用 PAF 值,二分圖裏較弱的連接被刪除
- 6)通過上述步驟,可以檢出圖中所有人的人體姿態骨架,並將其分配給正確的人
- 模型
- 結果
4. 基於RGB圖像的3D姿態估計 (3D Pose Estimation)
4.1 3D Human Pose Estimation from Monocular Images with Deep Convolutional Neural Network (ACCV 14)
-
原理
- 預測三維關節位置最簡單的方法:訓練一個網絡,使其直接從圖像中迴歸。
-
模型
- 該框架由兩類任務組成:
- 關節點回歸任務:輸入:包含測試者的bounding box圖像;輸出:關節與根關節的相對位置
- 關節點檢測任務:輸入:包含測試者的bounding box圖像;輸出:分類一個局部窗口是否包含指定的關節
- 該框架由兩類任務組成:
-
結果
4.2 3D Human Pose Estimation = 2D Pose Estimation + Matching (CVPR’17)
- 原理
- 不直接從圖像預測3D位姿,而是預測2D位置,然後推斷3D位姿
- 給定一個3D姿態庫(本質上是3D姿態的集合),它們生成大量的2D投影。給定這組成對(2D,3D)數據訓練集和來自2D姿勢估計算法的預測值;返回一個3D位姿 ,且此3D位姿的一個2D投影與此2D樣本最匹配
- 它基於以下兩個條件:
- 深度神經網絡已經徹底改變了二維姿態估計,產生了非常好的結果
- “大數據”3D mocap數據集很容易獲得,通過簡單的記憶,可以更容易地將預測的2D姿勢“提升”到3D
- 模型
- :被建模爲非參數近鄰模型(NN: Nearest-Neighbor)
- :是一個CNN,即:,CNN返回N個2D heatmaps, CNN是一個CPM(Convolutional Pose Machine)
- :建模爲一個Nearest Neighbour,它返回一個Nearest neighbor (1NN)3D深度
- 結果
4.3 Towards 3D Human Pose Estimation in the Wild: a Weakly-supervised Approach (ICCV 2017)
- 原理
- 這種方法既利用了二維關節位置,又利用了原始圖像的中間特徵表示
- 提出了一種弱監督和端到端的方法,該方法在呈現兩級級聯結構的深層神經網絡中使用二維和三維混合標記
- 二維標註作爲三維姿態估計的弱標籤
- 二維數據不具有三維的Ground Truth,但在自然圖像中具有多樣性
- 爲了預測二維圖像上的三維姿態,引入了幾何損失
- 模型
- 2D Pose Estimation module : A stacked hourglass module
- Depth Regression Module: 包含4個殘差&池化模塊
- 結果
4.4 A Simple Yet Effective Baseline for 3D Human Pose Estimation (ICCV’17)
- 原理
- 探討了三維姿態估計的誤差來源
- 三維姿態估計可以分爲兩個階段:圖像→二維姿態→三維姿態
- 通過一個簡單直觀的架構,本文了解錯誤是源於有限的二維姿態(視覺)理解,還是源於未能將二維姿勢映射到三維位置
- 模型
- 具有batchnorm、dropout和RELUs以及殘差連接的多層神經網絡
- 具有batchnorm、dropout和RELUs以及殘差連接的多層神經網絡
- 結果
4.5 Integral Human Pose Regression (ECCV’18)
- 原理
- 最佳的二維姿態估計方法都是基於檢測的
- 爲每個關節生成一個似然熱圖
- 並將該關節定位爲地圖中似然最大的點
- 同時,將熱圖擴展到三維姿態估計中
- 儘管性能良好,但熱圖表示在本質上有以下缺點:
- “取最大值”運算是不可微的,防止了訓練的端到端
- 由於深度神經網絡的下采樣步驟,熱圖的分辨率比輸入圖像的分辨率低,這導致不可避免的量化誤差
- 使用分辨率更高的圖像和熱圖有助於提高精度,但需要計算和存儲,特別是對於三維熱圖
- 現有的工作要麼基於熱圖,要麼基於迴歸
- 本文使用一個簡單的操作可以將熱圖表示和關節迴歸組合在一起,它將“取最大值”操作修改爲“取期望值”
- 關節被估計爲熱圖中所有位置的積分,由它們的概率加權(從似然性標準化),這種方法稱爲積分迴歸(軟argmax)
- 它既有熱圖表示方法和迴歸方法的優點,又避免了它們的缺點。積分函數是可微的,允許端到端的訓練
- 模型
- 結果
4.6 Unsupervised Geometry-Aware Representation for 3D Human Pose Estimation (ECCV’18)
- 原理
- 從多個角度拍攝的同一個人的圖像用於學習捕捉人體三維幾何結構的潛在表示
- 學習此表示不需要任何二維或三維姿勢標註,相反,編碼器-解碼器被訓練來從從不同的視點捕獲的圖像預測從一個視點看到的圖像;然後可以學習以有監督的方式從該潛在表示中預測3D姿勢
- 由於潛在的表示已經捕捉到了三維幾何體,因此映射到三維姿態的過程要簡單得多,並且使用的樣本比依賴多視圖監視的現有方法要少得多
- 模型
- 結果
5. 基於RGB-D的3D姿態估計 (3D Pose Estimation)
參考:
- https://nanonets.com/blog/human-pose-estimation-2d-guide/#deeppose
- https://nanonets.com/blog/human-pose-estimation-3d-guide/
- Awesome Human Pose Estimation-Full Links
- RGB-D-based human motion recognition with deep learning: A survey
- Adversarial posenet: A structure aware convolutional network for human pose estimation
- PoseNet: Camera Distance-aware Top-down Approach for 3D Multi-person Pose Estimation from a Single RGB Image (ICCV 2019).
- Download Human3.6M parsed data [data]
- Download MPII parsed data [images][annotations]
- Download MuCo parsed and composited data [data]
- Download MuPoTS parsed parsed data [images][annotations]
- All annotation files follow MS COCO format.
- If you want to add your own dataset, you have to convert it to MS COCO format.