大家好,这里是厂妹。最近要做人体检测项目,也用过很多模型,这次换了电脑刚好重装openpose,发一个文章记录一下安装过程。
电脑配置:
AMD R7-5800
RTX3050
16GB
环境配置:
win11
NVIDIA驱动 516.01
CUDA 11.7
cuDNN 8.5
Openpose 1.7
Python 3.9
VS2022 社区版
1、安装GPU驱动、CUDA和cuDNN
因为偷懒,我用的都是最新版本,没有专门去下什么旧版本,最后也能跑成功。
首先这三者的版本得对应。
首先安装GPU驱动
根据NVIDIA CUDA版本对应文档来查看符合自己GPU驱动的CUDA版本
GPU驱动版本越高,CUDA版本可选的范围就越广泛
安装好驱动后下载CUDA
CUDA下载地址
选择适合的CUDA版本,然后根据自己使用的系统进行选择下载
最后是下cuDNN
cuDNN下载地址
cuDNN版本只需要根据CUDA版本进行选择即可,然后在根据使用的系统选择下载
另外,cuDNN下载需要注册账号,登录之后方可下载
在开发环境的配置过程中,安装顺序通常为 GPU驱动 -> CUDA -> cuDNN
在确定版本的时候,若没有特殊要求,则与安装顺序一致,若有特殊要求,如运行的代码要求必须使用某个CUDA版本,则先确定CUDA版本,再确定GPU驱动与cuDNN版本
2、Openpose下载和环境配置
github地址:https://github.com/CMU-Perceptual-Computing-Lab/openpose
github上下载openpose后,解压到自己的目录下,建议不要解压到含有中文路径的地方
首先下载所需文件
打开到openpose-master\3rdparty\windows 下,可以看到五个bat文件
双击后自动下载
安装bybind11
GitHub - pybind/pybind11: Seamless operability between C++11 and Python
pybind11解压到以下目录\openpose-master\3rdparty
安装cmake
CMake GUI安装包(Download | CMake)
安装cmake参考CMake的安装(超级详细)_墨脱若兮的博客-CSDN博客_cmake安装
快捷键 WIN+R 打开CMD的命令界面
输入cmd,点击确定
在进入发的界面中输入cmake -version( cmake与-version空3个字符),成功后会出现如下界面,可以看CMake的版本号,则表示安装成功
3、⭐⭐cmake配置与openpose编译【重点】
参考知乎openpose-GPU版本从安装到实战全攻略!(win10) - 知乎
1、打开CMAKE-gui(!!记得要管理员运行
选择自己的路径
2、如果后续想要使用python运行并修改程序
点击 Add Entry
选择到对应环境的python.exe下就ok了。
这边显示37是因为我用的别人图片 实际按照你自己的python版本来 我用的是39
3、然后进行configure一次
会出现一片红
选择BUILD_PYTHON (非必须,如果你要用python就选)
选择以下五个模型(必选)
GPU_MODE改为如图所示,使用CUDA
注意以下这里,虽然默认打勾,也要记得千万别取消这个钩。
4、然后再次点击configure,可能会出现缺少pybind11的,自行下载。
debug直到configure done
然后点击generate,出现generate done即可
5
4、openpose在VS下生成release
很多人这一步安装完就以为openpose安装成功了,然后打开VS打开pycharm,然后发现经典报错
Error: OpenPose library could not be found. Did you enable BUILD_PYTHON in CMake and have this Python script in the right folder?
DLL load failed while importing pyopenpose: 找不到指定的模块。
是因为还缺了关键的编译调用库
进入../openpose-master/build/路径下,用VS打开OpenPose.sln即可。依次打开Examples/OpenPoseDemo/openpose.cpp文件,并且设置OpenPoseDemo为启动项目。
打开后,在vs界面上端切换为release模式,然后按顺序右键点击生成右侧四个项目
右键openpose demo,设置为启动项。
选择Release 模式,点击生成,生成解决方案。
等待结果
但是在这步,我出现了两个头疼的bug
第一个是未加载ucrtbased.pdb
解决方法:C++报错未加载ucrtbased.pdb_柠檬树下你和我₰的博客-CSDN博客_未加载ucrtbased.pdb
1、选择调试栏下的选项
2、调试下选择常规,在启用源服务器支持前✔。
3、调试下选择符号,在Microsoft符号服务器前✔。
4、确定,完毕,成功运行。
第二个问题是报出如下问题 (ucrtbase.dll)
OpenPose里的Demo时候,报错了:error == cudaSuccess (2 vs. 0) out of memory
然后提示如下
本人电脑显卡就2个G,根据官方说明
默认的caffe需要12G的显存,但是如果我们使用cuDNN的话,对应不同的模式可以降低到大约2.2G或者1.5G,而不设置的时候默认模式是BODY_25模式,故至少是需要2.2GB的,加上显存不可能完完全全值用在OpenPose里面,所以,显存怎么也得大于2.2GB.
所以2GB显存的我的电脑,肯定是会溢出的。
解决方法:降低图像分辨率/更改模式
通过更改BODY_25、net_resolution、face_net_resolution和hand_net_resolution
至于选择更改哪些按自己的要求来
OpenPose的18和25COCO数据与关节点的对应顺序_IT.Husky的博客-CSDN博客_25点 openpose
BODY_25(25点)是模式类型,剩下的net_resolution是分辨率
这几个更改在
openpose-master\include\openpose\flag.hpp
按照FAQ所回复的内容,笔者调整了网络的分辨率,其调整如下:
参数 0默认 1次调整 2次调整 3次调整
net_resolution 656x368 320x176 320x176 256x176
face_net_resolution 368x368 368x368 320x320 256x256
hand_net_resolution 368x368 368x368 320x320 256x256
备注:全部网络的分辨率必须为16的倍数。
————————————————
版权声明:本文为CSDN博主「二十四桥下一句」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lgh0824/article/details/75808938
比如更改net_resolution 320x176
,
源代码就是添加FLAGS_net_resolution = "320x176";
5、打开验证
openpose-master\examples\openpose\openpose.cpp
重新debug一下
然后在ALL BUILD
正常是成功26失败0跳过1
然后随便选择一个方案设为启动项目,启动
成功
参考资料
GPU驱动、CUDA和cuDNN之间的版本匹配与下载_略知二三的博客-CSDN博客_cuda cudnn 版本
openpose从安装到实战全攻略!(win10) - 知乎
OpenPose的安装配置与实现,以及遇到的问题与解决方法_咸愚翻生的博客-CSDN博客_python安装openpose
【OpenPose-Windows】中断问题及图像不同分辨率对帧率的影响_二十四桥下一句的博客-CSDN博客
关于openpose项目 运行openposeDemo时出现未加载ucrtbase.pdb问题,希望有大佬能帮助。-编程语言-CSDN问答
解决python openpose导入自己项目后,运行出现No module named pyopenpose的问题-pudn.com
已经解决:OpenPose报错:error == cudaSuccess (2 vs. 0) out of memory_ayouayouwei的博客-CSDN博客