OpenPose學習筆記

目錄

1.摘要

2.論文解讀

2.1. 多人的2D姿態估計難點:

2.2. 算法原理:

2.3. 損失函數:

2.3.1. CMP(confidence maps for part):

2.3.2. PAF(part affinity fields):

2.3.3. 使用PAFs進行多人解析:

3. Openpose環境搭建及demo測試

3.1. 遇到的問題:

3.2. demo測試結果:


1.摘要

       本文重點解讀openpose開源項目的論文之一openpose:Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields,並搭建openpose環境,測試openpose demo。

2.論文解讀

        論文講述了多人圖像中2D姿態檢測方法PAF(Part Affinity Fields),即部分親和力字段。採用bottom-up的方式,先檢測出各個關節點,再將它們與個體聯繫起來,實現了對多人的實時檢測。

2.1. 多人的2D姿態估計難點:

(1)人數規模及人的位置不確定;

(2)人與人之間存在干擾,使關節關聯變得困難;

(3)人數越多複雜度越高,實時性能越差。

        Top-down方式先檢測出單人,再做姿態估計,這種方式實時性差,且姿態估計的準確性依賴於人員檢測器。而bottom-up方式在最終解析時成本高,難度大。文中提到的PAF是一組對位置和圖像上肢體方向進行編碼的2D矢量場。

2.2. 算法原理

                              

圖1  openpose原理圖

        輸入原始圖,由VGG-19的前10層初始化並進行微調,生成一組特徵映射F作爲第一階段的輸入。在此階段,網絡產生一組PAFs,即像素點在骨架中的走向(肢體),上圖中藍色部分,,其中爲第1階段推理的CNNs。在隨後的每一階段,將前一階段的預測與原始圖像特徵F串聯起來,用於產生精細的預測,迭代次後進行置信度S:關鍵點(人體關節)的循環,上圖橙色部分。

        此圖是在論文(CVPR, 2017)的基礎上的更新(IEEE,2019)(目前網上介紹的都是以前的結構),將每個7x7卷積核替換爲3個連續的3x3卷積核,在減少計算量的同時保留了接收域。前者的操作數爲2 x -1=97,而後者僅爲51。該網絡的非線性層數增加了兩倍,既能保持較低的層次特徵,又能保持較高的層次特徵。2017paper在每個階段都對PAF和置信度圖分支進行了細化。但是PAF提高了置信度圖的結果,反之不成立。即查看PAF通道輸出,就可以猜測出身體部位的位置,但是通過一堆沒有其他信息的身體部位把它們解析成不同的人。因此,現在每個階段的計算量減少了一半。

2.3. 損失函數:

                

                

                

        其中L*爲groundtruth PAF, S*爲groundtruth置信度圖,W爲像素p處註釋缺失時W(p)=0的二元掩碼, 如果某個關鍵點標註缺失則不計算該點。該掩碼用於避免在訓練過程中懲罰真實的正向預測。

2.3.1. CMP(confidence maps for part):

        關鍵點檢測。通過圖像中標註的2D點xj,k計算S的groundtruth(S*),其中xj,k表示圖片中第k個人的第 j 種關節。計算方法:Sj*符合正態分佈,當像素點P接近註釋點xj,k時,達到正態曲線的峯值,則每張圖像中第j種關節的S,爲圖像中k個人的正態分佈峯值。

2.3.2. PAF(part affinity fields):

        關節連接。

,其中

2.3.3. 使用PAFs進行多人解析

        多人檢測問題轉化爲二分圖匹配問題,並用匈牙利算法求得相連關鍵點最有匹配。

3. Openpose環境搭建及demo測試

        Win10系統下環境搭建流程如下:

                                                          

圖2 環境搭建流程

3.1. 遇到的問題:

(1)根據網上教程裝CUDA時,運行CUDA smples出錯,VS2019無法加載項目。原因是自定義安裝過程中去掉了VS Integration。重新安裝,組件默認勾選。其他步驟按照CUDA官網教程即可。

(2)OpenPose模型庫下載的時候速度特別慢,每秒3k/s,而且經常中斷。耗時了兩天時間,最後利用多線程下載解決了問題。

(3)Cmake時出現以下問題:

                                 

圖3  cmake時的報錯信息

        原因查看下圖,發現Caffe的目錄與我下載解壓目錄不一致,解壓時選擇了到caffe下一級目錄,導致找不到文件。此處直接下載了github上openpose提供的對應版本caffe(20190516),沒有使用之前anaconda3中下載的。

圖4  錯誤解決後的信息狀態

3.2. demo測試結果:

(a)
(b)
(c)

  

        默認開啓電腦自帶攝像頭(a)(沒有外接攝像頭,截不到全身截圖,尷尬。。。),(b)爲本地視頻(mp4格式),(c)爲openpose中提供的視頻(avi格式)。更改方法是更改openposedemo的外部依賴項中的flags.hpp文件中第36行video值,如下:

圖5  更改數據源方式

        如果要更改視頻源爲圖片,保存結果,保存json等設置,也均在此文件中設置。具體設置方法參考對應的屬性說明進行設置。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章