最近有個小專案要搞姿態識別,簡單調研了一下2D的識別:
基本上是下面幾種
- (單人)single person
- 直接關鍵點回歸
- heatmap,感覺其實就是把一個點的標籤弄成一個高斯分佈
- (多人)multi person
- 自頂向下:先把人圈出來,再針對單個人做檢測
- 自底向上:把所有關鍵點弄出來,再聚合適配到個人
這個不是本文重點,筆者也還沒吃透,可以看這篇綜述:Deep Learning-Based Human Pose Estimation: A Survey
作者試過幾個模型:openpose
,alpahpose
,mediapipe
,使用體驗如下:
- openpose流行度很高,效果也不錯,就是有點慢,fps比較低
- alphapose效果和速度都很滿意,比較重量級
- mediapipe效果速度都很好,使用體驗超級棒,封裝太好了
作者打算從頭到尾完整地訓練一個自己地資料集合,並且要求速度為第一位,精度達到要求即可,經過簡單調研,上面幾個雖然很不錯,但是系統學習下來成本可能比較高,所以後面再弄,打算從2018年的這篇lightweight openpose
開始學習,看一下這個introduction就知道為啥先弄這個了:
速度和精度都不錯,關鍵是論文才5頁,下面是論文和程式碼連結,體量都不大,正好適合練手:
- 論文地址:https://arxiv.org/pdf/1811.12004.pdf
- Pytorch實現github主頁:https://github.com/Daniil-Osokin/lightweight-human-pose-estimation.pytorch
環境配置
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
成功執行!有問題的小夥伴可以關注留言交流哈~