win10+vs2019+cuda10.1+cudnn+OpenPose1.5.1配置教程
下载网址: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精度好一些。