下載網址:https://github.com/CMU-Perceptual-Computing-Lab/openpose/releases
安裝環境:vs2019,cuda10.1,cudnn
官方安裝教程
https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/doc/installation.md
官方問題處理
https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/doc/faq.md
注意,直接使用cmake配置,網絡太慢,一些第三方庫下載不下來,會報錯,按照下面步驟執行即可。
1、安裝CUDA10.1
下載網址:https://developer.nvidia.com/cuda-toolkit-archive
按照如下選擇:
CUDA下載完成後,點擊執行.exe文件,接下來一直選擇下一步即可。【可自定義安裝路徑】
安裝完成後打開cmd,輸入nvcc -V
2、安裝cudnn
下載網址:https://developer.nvidia.com/rdp/cudnn-download【注意需要登陸】
下載完成後,解壓即可。
3 、在vs中測試cuda與cudann
1)打開一個新的vs工程,“創建新項目”,搜索cuda,選中“CUDA 10.1 Runtime”,點擊“下一步”。
2)選擇位置,填寫名字,創建新的工程。
打開屬性管理器,添加新的屬性文件,然後雙擊打開屬性文件進行配置。
3)配置頭文件與庫文件
在VC++目錄中加入變量:
包含目錄爲:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include
C:\software\cudnn10.1\cuda\include
庫目錄爲:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\lib\x64
C:\software\cudnn10.1\cuda\lib\x64
配置屬性–>鏈接器–>輸入–>附加依賴中添加庫文件:
cublas.lib
cuda.lib
cudadevrt.lib
cudart.lib
OpenCL.lib
cudnn.lib
4)右鍵選擇“CUDA C/C++”中的Device將第一個修改爲:是
5)生成解決方案,進行調試。
編譯通過,調試有輸出,則安裝完成。
測試cudnn的正確性:
複製下面代碼,替換kernel.cu中的內容
#include <iostream>
#include <cuda_runtime.h>
#include <cudnn.h>
using namespace std;
void main()
{
cudnnHandle_t handle;
cudnnStatus_t t = cudnnCreate(&handle);
cout << cudnnGetErrorString(t);
getchar();
}
4、下載第三方庫
openpose-1.5.1\3rdparty\windows文件夾中,
打開下面bat文件,找到網址單獨下載下面幾個庫。
下載完時候解壓到該文件夾,
在CMakeLists.txt中將下載第三方庫的語句註釋掉:
5、cmake安裝程序
點擊“Configure”:
點擊“Generate”,報出以下warning:
WARNING: Target "openpose" requests linking to directory "D:/work/BehaviorDetection/code/c++/openpose-1.5.1/3rdparty/windows/opencv". Targets may link only to libraries. CMake is dropping the item.
注意,把OpenCV_LIBS路徑設置爲:D:/work/BehaviorDetection/code/c++/openpose-1.5.1/3rdparty/windows/opencv/x64/vc15/lib/opencv_world401.lib
然後重新“Configure”->“Generate”即可。
6 、項目測試
1)打開build中的.sln,打開工程。
2)打開解決方案,選擇ALL_BUILD,右鍵點擊生成。
3)選擇Examples文件夾下的其中一個例子,右鍵設爲啓動項後點擊使用F5運行。
報錯:
原因:pose_iter_584000.caffemodel文件找不到,或不能正確讀取(沒下載完整)
解決:重新下載,大小約99M。
【下載網址如下:
http://posefs1.perception.cs.cmu.edu/OpenPose/models/pose/body_25/pose_iter_584000.caffemodel
http://posefs1.perception.cs.cmu.edu/OpenPose/models/hand/pose_iter_102000.caffemodel
http://posefs1.perception.cs.cmu.edu/OpenPose/models/face/pose_iter_116000.caffemodel
】
將OpenPoseDemo設置爲啓動項,右鍵屬性,在命令參數中輸入:
--image_dir examples\media\【運行圖像】
--video examples\media\video.avi【運行視頻】
運行圖像:
(1)Body:
build\x64\Release\OpenPoseDemo.exe --image_dir examples\media\
(2)face and hands
build\x64\Release\OpenPoseDemo.exe --image_dir examples\media\ --face --hand
運行視頻:
(1)Body:
build\x64\Release\OpenPoseDemo.exe --video examples\media\video.avi
(2)face and hands
build\x64\Release\OpenPoseDemo.exe --video examples\media\video.avi --face --hand
Maximum Accuracy Configuration:
(1)Body:
build\x64\Release\OpenPoseDemo.exe --net_resolution "1312x736" --scale_number 4 --scale_gap 0.25
(2)Body + Hand + Face:
build\x64\Release\OpenPoseDemo.exe --net_resolution "1312x736" --scale_number 4 --scale_gap 0.25 --hand --hand_scale_number 6 --hand_scale_range 0.4 --face
性能說明:這個版本由於需要巨大的內存,不能在CPU上工作。如果一定要使用純CPU版本,則需要手動裁剪適應openpose的整個圖像面積的人。
在GPU上運行,需要10.5 GB的GPU memory (6.7 GB for COCO model),在Titan X幀率約2 FPS body-foot model (1 FPS for COCO)。注意以下兩點:
(1)增加--net_resolution將大大降低幀速率並增加延遲,同時可能會提高準確性。但是,這種準確性的提高並不是在所有場景中都能保證的,需要對每個特定場景進行更詳細的分析。例如,對於小人物的照片來說效果會更好,但對於人佔很大比例的圖來說效果通常會更差。因此,我們建議遵循下面的規則,以便在大多數情況下,無論大小尺度的人都能獲得最大的準確度。
(2)請勿將此配置用於MPII model,此多尺度設置可能會損害其精度。此配置僅適用於COCO和COCO擴展(例如,默認的BODY_25)模型。
BODY_25 vs. COCO vs. MPI Models之間的差異:
BODY_25 model (--model_pose BODY_25)包括身體和腳的關鍵點【基於論文:OpenPose: Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields】
COCO and MPI models更慢,精度更差點,不包括腳部的關鍵點【基於論文:Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields】
推薦使用BODY_25 model。
有一個例外,對於CPU版本,COCO和MPI models更快一些,但依然是BODY_25 model精度好一些。