從經(jīng)典到最新前沿,一文概覽2D人體姿態(tài)估計
點擊上方“小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時間送達(dá)
來自 | 知乎 作者 | 謝一賓

單人姿態(tài)估計是基礎(chǔ),在這個問題中,我們要做的事情就是給我們一個人的圖片,我們要找出這個人的所有關(guān)鍵點,常用的MPII數(shù)據(jù)集就是單人姿態(tài)估計的數(shù)據(jù)集。
在多人姿態(tài)估計中,我們得到的是一張多人的圖,我們需要找出這張圖中的所有人的關(guān)鍵點。對于這個問題,一般有自上而下(Top-down)和自下而上(Bottom-up)兩種方法。 Top-down: (從人到關(guān)鍵點)先使用detector找到圖片中的所有人的bounding box,然后在對單個人進(jìn)行SPPE。這個方法是Detection+SPPE,往往可以得到更好的精度,但是速度較慢。 Bottom-up: (從關(guān)鍵點到人)先使用一個model檢測(locate)出圖片中所有關(guān)鍵點,然后把這些關(guān)鍵點分組(group)到每一個人。這種方法往往速度可以實時,但是精度較差。
遮擋(自遮擋,被其他人遮擋)
擴(kuò)大感受野,讓網(wǎng)絡(luò)自己去學(xué)習(xí)被遮擋的關(guān)系
人的尺度不一,拍照角度不一
多尺度特征融合
各種各樣的姿態(tài)
考驗網(wǎng)絡(luò)的容量,深度
光照
在數(shù)據(jù)預(yù)處理中加入光照變化的因素,對每個通道做偏移

使用AlexNet作為backbone
直接回歸關(guān)節(jié)點的坐標(biāo)
使用級聯(lián)的結(jié)構(gòu)來refine結(jié)果
Joint training with CNN and Graphical Model(LeCun, 2014)[2]

開始使用heatmap
CPM (CMU, 2016)[3]

網(wǎng)絡(luò)有多個stage組成,以第二個stage為例,他的輸入由兩部分組成,一個是上一個stage預(yù)測出的heatmap,一個是自己這個stage中得到的feature map,也就是在每一個stage都做一次loss計算,這樣做可以使網(wǎng)絡(luò)收斂更快也有助于提高精度。
上一層預(yù)測的heatmap可以提供豐富的spatial context,這對關(guān)節(jié)點的識別是非常重要的
正式開啟e2e學(xué)習(xí)時代
Stacked Hourglass Network (Jia Deng組, 2016)[4]

該工作的主要創(chuàng)新在于網(wǎng)絡(luò)結(jié)構(gòu)方面的改進(jìn),從圖中可以看出,形似堆疊的沙漏。

每一個沙漏模塊包含了對稱的下采樣和上采樣的過程,每一個box都代表了一個有跨層連接的子模塊

網(wǎng)絡(luò)使用了中間監(jiān)督,也就是圖中的藍(lán)色框是一個預(yù)測的heatmap,這加快了網(wǎng)絡(luò)的收斂也提高了實際效果
Fast Human Pose (2019)[5]

為了追求cost-effective,需要compact的網(wǎng)絡(luò)結(jié)構(gòu)
4-stage hourglass可以取得95%的8-stage的效果
一半的channel數(shù)(128)只會導(dǎo)致1%的performance drop
使用蒸餾來做監(jiān)督的增強(qiáng),Students learn knowledge from books (dataset) and teachers (advanced networks).
G-RMI (Google, 2017)[6]

Faster-RCNN得到bounding box之后進(jìn)行image cropping,使得所有box具有同樣的縱橫比,然后擴(kuò)大box來包含更多圖像上下文

使用ResNet作為backbone來估計heatmap和offset vector,因為得到heatmap之后我們往往還需要一個argmax的操作才能得到關(guān)節(jié)點的坐標(biāo),而這個過程中由于網(wǎng)絡(luò)的下采樣過程,heatmap勢必分辨率比原圖更小,所以得到的坐標(biāo)會出現(xiàn)偏移,因此又估計了一個offset vector來補(bǔ)償?shù)暨@種量化誤差。
OKS-based NMS:基于關(guān)鍵點相似度來衡量兩個候選姿態(tài)的重疊情況,在目標(biāo)檢測中?;贗oU來做NMS,但是姿態(tài)估計中輸出的是關(guān)鍵點,更適合用這種屬性來衡量。
RMPE (上交盧策吾老師組, 2017)[7]

SSTN(Symmetric Spatial Transformer Network):在不準(zhǔn)確的bounding box中提取擔(dān)任區(qū)域
STN來選擇RoI
SPPE幫助STM得到準(zhǔn)確的區(qū)域
PNMS(Parametric Pose Non-Maximum-Suppression)來去除冗余的姿態(tài)
PGPG(Pose-Guided Proposals Generator)
Compositional Human Pose Regression (MSRA, 2018)[8]

CPN (曠視,2018)[9]

多尺度特征信息的融合是網(wǎng)絡(luò)設(shè)計的一個很大的目標(biāo),作者使用 GlobalNet (global pyramid network, U-Shape)來處理easy keypoints,GlobalNet中包含了下采樣和上采樣(插值非轉(zhuǎn)置卷積)的過程。
使用RefineNet (pyramid refined network)來處理hard keypoints
OHKM(online hard keypoints mining)用來找出hard keypoints,類似于檢測中的OHEM
MSPN (曠視,2018)[10]

網(wǎng)絡(luò)結(jié)構(gòu)方面的改進(jìn)
Simple Baseline (MSRA, 2018)[11]

從圖中不難看出,這個網(wǎng)絡(luò)結(jié)構(gòu)非常簡潔,作者使用Deconvolution來做上采樣,網(wǎng)絡(luò)中也沒有不同特征層之間的跨層連接,和經(jīng)典的網(wǎng)絡(luò)結(jié)構(gòu)Hourglass和CPN相比都十分簡潔。
MultiPoseNet (2018)[12]

backbone也就是用來提取特征的部分采用的是resnet和兩個FPN(用兩個的原因是因為后面要接兩個subnet)
keypoint subnet用來輸出keypoint和segmentation的heatmap
person detect subnet用來檢測人體,使用的是RetinaNet作為detector
pose residual network輸出最終的pose,說是在學(xué)習(xí)了data的pose structures之后可以有效應(yīng)對遮擋的問題
Deeply learned compositional models (2019)[13]

compositional models

HRNet (MSRA, 2019)[14]

各個scale之間互相fuse,并不是一個串聯(lián)的下采樣過程,這樣保留了原分辨率的feature,會有很好的spatial信息。
Enhanced Channel-wise and Spatial Information (字節(jié)跳動, 2019)[15]

Channel Shuffle Module (CSM): reshape-transpose-reshape, 經(jīng)過這一通操作之后,希望feature能夠和通道的上下文信息相關(guān)。

spatial attention: (feature level)希望網(wǎng)絡(luò)對于特征圖是pay attention to task-related regions而不是整張圖片。
Channel-wise Attention: (channel level) 從SE-Net中借鑒來,主要包含GAP和Sigmoid兩個步驟,希望網(wǎng)絡(luò)可以選擇更好的通道來detect pattern。
Related Parts Help (2019)[16]

Related body parts 把keypoint分成多個group,根據(jù)mutual information
Part-based branching network (PBN) learn specific features for each group of related parts
Crowd Pose (上交盧策吾老師組,2019)[17]

在擁擠場景下,在同一個box內(nèi),我們可能需要處理很多其他人的關(guān)鍵點,該項工作設(shè)計了joints candidate loss來估計multi-peak heatmaps,讓所有可能的關(guān)節(jié)點都作為候選。
Person-joint Graph: joint node是通過關(guān)節(jié)點間的距離來建立,person node通過檢測的human proposals來建立,兩者之間的edge通過看是否有contribution來建立。由此建立了一個人-關(guān)節(jié)的graph,也就轉(zhuǎn)化到了圖論問題上,目標(biāo)就是最大化二分圖中的邊權(quán)重。使用updated Kuhn-Munkres解決這個問題。
Single-Stage Multi-Person Pose Machines (NUS, 2019)[18]

Hierarchical SPR
A unique root for each person
Several joint displacements for each joint
heatmap for root joint (L2 loss)
dense displacement map for each joint (smooth L1 loss)
DeepCut (Germany, 2016)[19]

pipeline(Bottom-up)
detect 檢測人體關(guān)鍵點(Adapted Fast R-CNN)并且把他們表示為graph中的節(jié)點
label 使用人體關(guān)節(jié)點類別給檢測出的關(guān)鍵點分類,比如arm, leg
partition 將關(guān)鍵點分組到同一個人
使用pairwise terms來做優(yōu)化
Associative Embedding (Jia Deng組,2016)[20]

produce detection heatmaps and associate embedding tags together (bottom-up but single-stage) and then match detections to others that share the same embedding tag
主要的工作在于提出了associate embedding tag,也就是說預(yù)測每個關(guān)節(jié)點的時候也同時預(yù)測這個關(guān)節(jié)點的tag值,具有相同tag值的就是同一個人的關(guān)節(jié)點
DeeperCut (Germany, 2017)[21]

使用深層的ResNet架構(gòu)來檢測body part
使用image-conditioned pairwise terms來做優(yōu)化,可以將眾多候選節(jié)點減少,通過候選節(jié)點之間的距離來判斷該節(jié)點是否重要
OpenPose (CMU, 2017)[22]

網(wǎng)絡(luò)結(jié)構(gòu)基于CPM改進(jìn),網(wǎng)絡(luò)包含兩個分支,一個分支預(yù)測heatmap,另一個分支預(yù)測paf(part affine field),paf也是這項工作的關(guān)鍵所在。
paf是兩個關(guān)節(jié)點連接的向量場,可以把它看做肢體,以paf為基礎(chǔ),把group的問題轉(zhuǎn)化文二分圖匹配(bipartite graph)的問題,使用匈牙利算法求解。
PersonLab (2018)[23]

short-range offsets to refine heatmaps
mid-range to predict pairs of keypoints
greedy decoding to group keypoints into instances
PifPaf (EPFL, 2019)[24]

從圖中可以看出,網(wǎng)絡(luò)基于ResNet,encoder最后輸出兩個分支,PIF和PAF向量場。
PIF向量場是17x5,其中17是關(guān)節(jié)數(shù),5表示用于優(yōu)化heatmap的值。
PAF向量場是19x7,其中19代表了19種肢體連接,7表示了confidence和offset來優(yōu)化肢體向量的值。
關(guān)鍵點由PIF給出,關(guān)鍵點之間的連接由PAF給出,接下來就是使用Greedy Decoding進(jìn)行g(shù)roup的過程了。
HigherHRNet (字節(jié)跳動,2020)[25]

HRNet在bottom-up方法中的嘗試,associative embedding加上更強(qiáng)大的網(wǎng)絡(luò)。
大體的創(chuàng)新點主要集中在網(wǎng)絡(luò)結(jié)構(gòu)和特征表示兩個方面,網(wǎng)絡(luò)結(jié)構(gòu)是一個填不滿的坑,怎么更好的抽取信息,利用信息是網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計的本質(zhì)。在輸出特征的表示方面主要有heatmap和自定義的向量場,人為設(shè)計的向量也許可以更好地指引網(wǎng)絡(luò)訓(xùn)練。人體的關(guān)節(jié)點不是孤立的,利用好這種先驗的肢體關(guān)系也可以更好地指導(dǎo)網(wǎng)絡(luò)訓(xùn)練。
交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會逐漸細(xì)分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進(jìn)入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~

