<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          從經(jīng)典到最新前沿,一文概覽2D人體姿態(tài)估計

          共 9085字,需瀏覽 19分鐘

           ·

          2021-09-08 06:15


          點擊上方小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂

          重磅干貨,第一時間送達(dá)


          來自 | 知乎    作者 | 謝一賓

           0. 前言


          本文主要討論2D的人體姿態(tài)估計,內(nèi)容主要包括:基本任務(wù)介紹、存在的主要困難、方法以及個人對這個問題的思考等等。希望大家?guī)е械哪抗忾喿x這篇文章,和諧討論。

          1. 介紹


          2D人體姿態(tài)估計的目標(biāo)是定位并識別出人體關(guān)鍵點,這些關(guān)鍵點按照關(guān)節(jié)順序相連,就可以得到人體的軀干,也就得到了人體的姿態(tài)。




          在深度學(xué)習(xí)時代之前,和其他計算機(jī)視覺任務(wù)一樣,都是借助于精心設(shè)計的特征來處理這個問題的,比如pictorial structure。憑借著CNN強(qiáng)大的特征提取能力,姿態(tài)估計這個領(lǐng)域得到了長足的發(fā)展。2D人體姿態(tài)估計主要可以分為單人姿態(tài)估計(Single Person Pose Estimation, SPPE)和多人姿態(tài)估計(Multi-person Pose Estimation, MPPE)兩個子任務(wù)。

          • 單人姿態(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)到每一個人。這種方法往往速度可以實時,但是精度較差。


          2. 難點


          2D人體姿態(tài)估計中有許多難點,很多問題可以通過網(wǎng)絡(luò)結(jié)構(gòu)的優(yōu)化來解決,更準(zhǔn)確地說,就是利用好多尺度、多分辨率的特征。


          遮擋(自遮擋,被其他人遮擋)

          • 擴(kuò)大感受野,讓網(wǎng)絡(luò)自己去學(xué)習(xí)被遮擋的關(guān)系


          人的尺度不一,拍照角度不一

          • 多尺度特征融合


          各種各樣的姿態(tài)

          • 考驗網(wǎng)絡(luò)的容量,深度


          光照

          • 在數(shù)據(jù)預(yù)處理中加入光照變化的因素,對每個通道做偏移


          遮擋問題是比較難解決的,很多工作也都在發(fā)力于此。除了網(wǎng)絡(luò)結(jié)構(gòu),數(shù)據(jù)的預(yù)處理也很重要,對于SPPE,要盡量將人放在圖片中心。后處理也同樣重要,怎么減小對heatmap的argmax操作的量化誤差。人體不同于其他物體,人體不同關(guān)鍵點之間是有空間約束關(guān)系的,怎么去best capture various spatial relationships between human joints是關(guān)鍵。

           3. 方法


          本節(jié)主要對姿態(tài)估計的方法進(jìn)行簡單介紹,由于篇幅有限,難以呈現(xiàn)論文的全貌,大家可自行閱讀原論文。2D姿態(tài)估計方法可以分為單人姿態(tài)估計(SPPE)和多人姿態(tài)估計(MPPE)兩個部分,其中多人姿態(tài)估計又分為自頂向下(Top-down)和自底向上(Bottom-up)兩種。

          3.1. SPPE


          DeepPose (Google, 2014)[1]


          DeepPose

          • 使用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ò),可以端到端訓(xùn)練


          CPM是SPPE中的首篇經(jīng)典之作,來自CPM的Jia Deng組(之后同組改進(jìn)出了OpenPose,是目前Bottom-up方法中影響力最大的方法),CPM創(chuàng)新之處主要在于其提出的網(wǎng)絡(luò)結(jié)構(gòu)。

          • 網(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]


          hourglass影響深遠(yuǎn),是常用的backbone,時至今日,效果依然很能打。


          • 該工作的主要創(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]


          backbone是hourglass,這篇文章把知識蒸餾用在了pose問題上,算是一次很好的嘗試



          • 為了追求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).


          3.2. MPPE


          3.2.1. Top-down


          G-RMI (Google, 2017)[6]


          使用Faster-RCNN作為人體檢測器,姿態(tài)部分基于ResNet估計了offset來refine


          • 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]


          上交盧策吾老師組的工作,是國內(nèi)比較好的姿態(tài)估計方面的工作,AlphaPose開源代碼影響廣泛。


          • 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]


          MSRA Xiao Sun組的工作,從輸出表示下手,由于heatmap表示的量化誤差和坐標(biāo)表示的效果不好,作者提出使用bones as representation。


          bones比joints更穩(wěn)定,并且可以包含更多的幾何信息,為了避免直接計算bones的MSE所引起的累積誤差,作者提出考慮長距離目標(biāo),會考慮兩關(guān)節(jié)點之間所有bones之和。作者把輸出表示重新參數(shù)化了,與網(wǎng)絡(luò)結(jié)構(gòu)無關(guān),同樣可以用于3D。

          CPN (曠視,2018)[9]


          采用的是top-down的方法,采用的網(wǎng)絡(luò)結(jié)構(gòu)是一個U-Shape的結(jié)構(gòu),因為對于關(guān)鍵點定位來說,不同尺度的特征會起到不同的作用,淺層的特征可以幫助定位,深層的特征可以幫助識別什么什么部位。而且關(guān)鍵點的定位是有難易之分的,所以,很自然的想法,要找到難定位的關(guān)鍵點,對它們進(jìn)行更多的操作,所以就有了難例挖掘和RefineNet。

          • 多尺度特征信息的融合是網(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]


          在CPN的基礎(chǔ)上做了改進(jìn),類似于stacked hourglass的結(jié)構(gòu),把CPN也堆疊起來了,他們也提出detector精度不是很重要,只要夠用就行。


          • 網(wǎng)絡(luò)結(jié)構(gòu)方面的改進(jìn)


          Simple Baseline (MSRA, 2018)[11]


          MSRA Bin Xiao等人的工作(后續(xù)也推出了HRNet系列和HigherHRNet),真的很simple,作者就是把hourglass和CPN中的upsample部分用deconvolution做了,作者論文中提到想探究how good could a simple method be? 真是會寫。


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


          MultiPoseNet (2018)[12]


          作者使用了兩個subnet,一個用來輸出keypont和segmentationd的heatmap,另一個是detector,用來輸出人體的bounding box,然后將這兩種輸出送到PRN,Pose Residual Network中,得到最終的pose。最關(guān)鍵的部分就是PRN,作者說他們先從data中學(xué)習(xí)pose structures,然后可以解決遮擋的問題。這部分作者沒有講清楚,呵呵。作者給出的結(jié)果是很好的,在單1080ti上COCO數(shù)據(jù)集可以達(dá)到23FPS的速度,效果也是與SOTA的Top-down方法competitive的。



          • 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的意思,大概是把人體當(dāng)成一個樹結(jié)構(gòu),children可以幫助parent,也就是文章中所說的bottom-up (不是常提到的那個),parent也可以幫助children,也就是文章中所說的top-down


          • compositional models



          HRNet (MSRA, 2019)[14]


          MSRA Bin Xiao等人繼simple baseline之后又一力作。網(wǎng)絡(luò)常常包括下采樣和上采樣過程,上采樣的目的就是要得到高分辨率圖像,基于這一觀察,該項工作始終在一分支保留著高分辨率的圖像,HRNet是像ResNet一樣的通用backbone,但是其在姿態(tài)估計方面的影響是比較大的,效果也是比較好的。


          • 各個scale之間互相fuse,并不是一個串聯(lián)的下采樣過程,這樣保留了原分辨率的feature,會有很好的spatial信息。


          Enhanced Channel-wise and Spatial Information (字節(jié)跳動, 2019)[15]


          這項工作主要是對網(wǎng)絡(luò)結(jié)構(gòu)的改進(jìn),主要創(chuàng)新點在于加入channel shuffle和注意力機(jī)制。


          • 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]


          這篇文章很好,作者提到人體并不是所有keypoint都是相關(guān)的,所以用一個shared feature來預(yù)測不好,作者根據(jù)mutual information把人體關(guān)鍵點分成五類,網(wǎng)絡(luò)先學(xué)一個shared feature,然后再為這五類分出五個branch,學(xué)習(xí)specific features for relates parts Evaluation: 這個方法很好,值得借鑒,相關(guān)的可以提供幫助,不相關(guān)的keypoint硬是用shared feature來預(yù)測,反而會導(dǎo)致文章中所說的negative transfer


          • 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]


          這項工作主要是要處理擁擠場景下的多人姿態(tài)估計問題,并且在MPII, COCO和AI Challenger數(shù)據(jù)集基礎(chǔ)上做了一個新的crowd benchmark。


          • 在擁擠場景下,在同一個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]


          backbone是hourglass,提出分級的SPR,把person instance and position information 統(tǒng)一了起來,所以可以做到single-stage。估計人的中心root joint,其他關(guān)節(jié)由估計的displacement來處理。


          • 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)


          3.2.2. Bottom-up


          DeepCut (Germany, 2016)[19]


          用了Fast R-CNN和ILP,速度比較慢


          • 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]


          基于Jia Deng組之前的stacked hourglass network做的(也啟發(fā)了后來該組的CornerNet)作者的insight很好,Many CV tasks can be viewed as joint detection and grouping,提出tag heatmap來group人體部件。


          • 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]


          基于DeepCut的改進(jìn)


          • 使用深層的ResNet架構(gòu)來檢測body part

          • 使用image-conditioned pairwise terms來做優(yōu)化,可以將眾多候選節(jié)點減少,通過候選節(jié)點之間的距離來判斷該節(jié)點是否重要


          OpenPose (CMU, 2017)[22]


          可以做到實時,作者在CVPR上的報告直接拿筆記本現(xiàn)場對著觀眾演示,十分驚艷,不僅可以估計姿態(tài),還可以估計臉、手和腳的關(guān)鍵點,也就是全身都估計了遍。是目前Bottom-up方法中影響最大的工作。



          • 網(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]


          這篇也是估計了offset來做refine,并且也是multi-task的,估計了short mid long三種offsets,各自都有不同的作用。


          • short-range offsets to refine heatmaps

          • mid-range to predict pairs of keypoints

          • greedy decoding to group keypoints into instances


          PifPaf (EPFL, 2019)[24]


          該工作主要貢獻(xiàn)在于提出PIF和PAF(非OpenPose的PAF)這兩種向量。


          • 從圖中可以看出,網(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]


          字節(jié)跳動Bin Xiao團(tuán)隊的工作,基于之前的HRNet工作和associative embedding。


          • HRNet在bottom-up方法中的嘗試,associative embedding加上更強(qiáng)大的網(wǎng)絡(luò)。


           4. 總結(jié)


          大體的創(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)練。


          下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程
          在「小白學(xué)視覺」公眾號后臺回復(fù):擴(kuò)展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

          下載2:Python視覺實戰(zhàn)項目52講
          小白學(xué)視覺公眾號后臺回復(fù):Python視覺實戰(zhàn)項目即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學(xué)校計算機(jī)視覺。

          下載3:OpenCV實戰(zhàn)項目20講
          小白學(xué)視覺公眾號后臺回復(fù):OpenCV實戰(zhàn)項目20講即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。

          交流群


          歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會逐漸細(xì)分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進(jìn)入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~


          瀏覽 51
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美瑟瑟| 精品伊人大香蕉 | 操小嫩逼欧美淫色人妻 | 一区二区三区白嫩在线 | 8050网午夜影院 |