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

win10+vs2019+cuda10.1+cudnn+OpenPose1.5.1配置教程

按照如下选择:

win10+vs2019+cuda10.1+cudnn+OpenPose1.5.1配置教程

CUDA下载完成后,点击执行.exe文件,接下来一直选择下一步即可。【可自定义安装路径】

安装完成后打开cmd,输入nvcc -V

win10+vs2019+cuda10.1+cudnn+OpenPose1.5.1配置教程

2、安装cudnn

下载网址:https://developer.nvidia.com/rdp/cudnn-download【注意需要登陆】

win10+vs2019+cuda10.1+cudnn+OpenPose1.5.1配置教程

下载完成后,解压即可。

3 、在vs中测试cuda与cudann

1)打开一个新的vs工程,“创建新项目”,搜索cuda,选中“CUDA 10.1 Runtime”,点击“下一步”。

win10+vs2019+cuda10.1+cudnn+OpenPose1.5.1配置教程

2)选择位置,填写名字,创建新的工程。

win10+vs2019+cuda10.1+cudnn+OpenPose1.5.1配置教程

打开属性管理器,添加新的属性文件,然后双击打开属性文件进行配置。

win10+vs2019+cuda10.1+cudnn+OpenPose1.5.1配置教程

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文件,找到网址单独下载下面几个库。

win10+vs2019+cuda10.1+cudnn+OpenPose1.5.1配置教程

下载完时候解压到该文件夹,

win10+vs2019+cuda10.1+cudnn+OpenPose1.5.1配置教程

在CMakeLists.txt中将下载第三方库的语句注释掉:

win10+vs2019+cuda10.1+cudnn+OpenPose1.5.1配置教程

5、cmake安装程序

点击“Configure”:

win10+vs2019+cuda10.1+cudnn+OpenPose1.5.1配置教程

点击“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.

win10+vs2019+cuda10.1+cudnn+OpenPose1.5.1配置教程

注意,把OpenCV_LIBS路径设置为:D:/work/BehaviorDetection/code/c++/openpose-1.5.1/3rdparty/windows/opencv/x64/vc15/lib/opencv_world401.lib

win10+vs2019+cuda10.1+cudnn+OpenPose1.5.1配置教程

然后重新“Configure”->“Generate”即可。

 

6 、项目测试

1)打开build中的.sln,打开工程。

2)打开解决方案,选择ALL_BUILD,右键点击生成。

win10+vs2019+cuda10.1+cudnn+OpenPose1.5.1配置教程

3)选择Examples文件夹下的其中一个例子,右键设为启动项后点击使用F5运行。

报错:

win10+vs2019+cuda10.1+cudnn+OpenPose1.5.1配置教程

原因: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【运行视频】

win10+vs2019+cuda10.1+cudnn+OpenPose1.5.1配置教程

运行图像:

(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精度好一些。