最近有個小專案要搞姿態識別,簡單調研了一下2D的識別:

基本上是下面幾種

  • (單人)single person

    • 直接關鍵點回歸
    • heatmap,感覺其實就是把一個點的標籤弄成一個高斯分佈
  • (多人)multi person
    • 自頂向下:先把人圈出來,再針對單個人做檢測
    • 自底向上:把所有關鍵點弄出來,再聚合適配到個人

這個不是本文重點,筆者也還沒吃透,可以看這篇綜述:Deep Learning-Based Human Pose Estimation: A Survey

作者試過幾個模型:openpose,alpahposemediapipe,使用體驗如下:

  • openpose流行度很高,效果也不錯,就是有點慢,fps比較低
  • alphapose效果和速度都很滿意,比較重量級
  • mediapipe效果速度都很好,使用體驗超級棒,封裝太好了

作者打算從頭到尾完整地訓練一個自己地資料集合,並且要求速度為第一位,精度達到要求即可,經過簡單調研,上面幾個雖然很不錯,但是系統學習下來成本可能比較高,所以後面再弄,打算從2018年的這篇lightweight openpose開始學習,看一下這個introduction就知道為啥先弄這個了:

速度和精度都不錯,關鍵是論文才5頁,下面是論文和程式碼連結,體量都不大,正好適合練手:

環境配置

requirement.txt內容如下:


torch>=0.4.1
torchvision>=0.2.1
pycocotools==2.0.0
opencv-python>=3.4.0.14
numpy>=1.14.0

首先配置pytorch環境,按照pytorch官網即可,然後安裝opencv-python

pip install opencv-python

有一個包pycocotools==2.0.0,死活裝不上,

參考了兩個部落格:

解決方案如第一篇部落格的第一種方法,直接下載對應版本的.whl檔案,下載連結在第二篇部落格裡面,從清華映象搜尋下載也行,然後執行

pip install pycocotools_windows-2.0-cp37-cp37m-win_amd64.whl

注:如果採用第一篇部落格所述第二種方法,直接安裝一個visual studio,應該也是可以的,只是比較麻煩;如果採用所述第三種方法,這時候bug就來了,採用Microsoft Visual C++ Build Tools來解決貌似是不錯的解決方式,但是每次安裝到一般就提示安裝包錯誤什麼的,換了幾個部落格推薦的下載都不行,放棄此方法,採用第一種或第二種即可。

測試python的demo

下載作者訓練好的checkpoint

配置好環境之後,執行如下命令應該就會開啟一個攝像頭,實時檢測:

python demo.py --checkpoint-path checkpoint_iter_370000.pth --video 0

成功執行!有問題的小夥伴可以關注留言交流哈~