1. 程式人生 > >人體行為識別(骨架提取),搭建openpose環境,VS2019(python3.7)+openpose

人體行為識別(骨架提取),搭建openpose環境,VS2019(python3.7)+openpose

    這幾天開始接觸人體行為識別,經過多方對比後,選擇了現在最熱的人體骨架提取開源庫,openpose。

    下面就不多說了,直接開始openpose在win10下的配置:

     需求如下:

  1. VS2019      據說VS2015以上的版本就可以,VS201x主要是為了通過cMake生成的.sln檔案生成可執行exe檔案、dll檔案,和一些程式執行所必需的檔案,下載VS2019 community版本就可以,有微軟賬號(免費申請)就可以免費用;

   2. Python3.7+Pycharm      想要在Python環境下執行的需要安裝這兩個,當然也可以是其他的組合,不過還是推薦最新版本的,而且Pycharm真的很棒;

  3.cmake-3.15.3-win64-x64      https://cmake.org/download/ 開啟官方網站下載即可,選擇最新版本的,這個版本可以生成VS2019的檔案,其他的比如有VS2017。。。。也可以選舊版本的,不過這個向下相容,下載最新的就可以;

  4.cudnn(最新)+cuda(最新)      這兩個怎麼裝百度一下就可以了,很簡單,但是推薦在裝好VS201x後安裝,不然可能會出現一些問題,不會的可以留言問我;

  5.openpose      在GitHub上下載最新的openpose原始檔,網址如下https://github.com/CMU-Perceptual-Computing-Lab/openpose。

 

以上差不多就是配置openpose所必須的東西了,接下來是具體的步驟:

  1.假設你已經裝好了VS2019,Python3.7+Pycharm,cudnn(最新)+cuda(最新);然後兩個下載並解壓好的Cmake和OpenPose(我這裡為openpose-master,不同的下載方式可能還會有不同的命名方式,不過都無傷大雅)原始檔如下圖紅色下劃線所指:

                                  

 

 

     

  2.檔案路徑如下,開啟cmake-gui.exe;

                                                

 

       開啟cmake-gui.exe如下,按照我所用紅色下劃線標註的填寫,對應的路徑修改為自己的,如果你跟我一樣放在A盤,並且檔名都一樣就可以           不用改,build_pan_20190913可以改成別的名字;

     

       

3.需要在Python中執行的,在這裡打勾: 

    

        需要下載全部動作識別模型檔案的,在找到這些選項打勾,預設只選BODY_25,這個模型識別關節點最多,有20多個,而且是標準CUDA執行       的,後面的COCO,MPI各有不同的優缺點,建議下載:

                

        沒有下載或者下載不成功也可以先通過Cmake編譯以後再下載,路徑如下,雙擊getModels.bat即可

                                                                             

  4.回到Cmake,先點Configure,結束而且成功後再點Generate,此過程費時非常長,建議點完Configure後去吃個飯,回來可能就快好了。。

  5.然後在如下圖所示中會有這樣一個檔案:

                            

 

               如果你已經裝好了VS201x,可以直接雙擊開啟,之後會這樣顯示:

          

 

        這裡改成我這樣,用Release模式:

 

                                            

 

       然後生成解決方案,快捷鍵Ctrl+Shift+B,至此,所有配置完畢。

 

解決方案管理器中目錄如下,開啟示例程式,如果你的顯示卡足夠好(視訊記憶體需要4GB左右)而且有攝像頭,可以直接按F5執行。

                                                   

 

如果不行,就需要改一下東西,來讓電腦執行起來(openpose需要的資源真的非常多):

  1.視訊記憶體不夠就會報錯:error == cudaSuccess (2 vs. 0)  out of memory  ,這個意思就是視訊記憶體不夠了,這時我們就需要修改標頭檔案,滑鼠放在flags.hpp上,按F12跳轉到flag.hpp,如下:

                                                          

  修改   net_resolution,           "-1x368",只需要修改368的數值就可以顯著的降低視訊記憶體使用率,但是相應的會降低準確度,我這裡改成了-1x256,基本上2GB視訊記憶體就可以運行了。

 

 

  2.如果沒有攝像頭,就會報錯找不到攝像頭,這時我們就需要修改讓程式開啟視訊檔案,修改這個引數為視訊檔案位置,注意是程式裡是反斜槓,相應的你需要在這個目錄下放入視訊檔案,我這裡完整目錄為A:\openpose-master\examples\media\dance.mp4:

 

  3.如果你需要不用body_25,而用coco或者MPI,相應可以更改  model_pose 這個引數,還有更多的可以更改的引數,自己讀一讀後面的註釋就可以了。

 

經過一番配置,具體的執行結果如下:

 

 

可以看出來幀數真的很低啊,不過識別度真的非常高,接下來就可以愉快的玩耍了!!!