一、cuda和vs的对应:CUDA10.0-VS2017,CUDA8.0-VS2015
(因为我最开始看自己电脑cuda是9.0,想着应该没有那么严格,就直接用cmake编译了,结果到最后VS生成解决方案,各种错误。也提示缺少一些dll库文件,当时查了一下也不知道怎么解决,就重新装了cuda10,结果啥毛病也没有。)
二、OpenPose报错:error == cudaSuccess (2 vs. 0) out of memory
最后生成解决方案后,运行openposedemo会出现这个错误,这是表示显存不够了,openpose需要的资源真的非常多,很吃资源!
我的解决方案是:
1.找到openposedemo下的source flies里的openpose.cpp
2.找到代码的头文件处,鼠标放在flags.hpp上,按F12跳转到flag.hpp。再在flag.hpp里面找到net_resolution, "-1x368"这行代码。并将其修改为net_resolution, "-1x256"
,
只需要修改368的数值就可以显著的降低显存使用率,但是相应的会降低准确度,我这里改成了-1x256,基本上2GB显存就可以运行了。
三、Cmake编译遇到的问题
1、CMake Gui版本问题,3.16版本没有win64的选项,编译出来是win32版本的。x64和x86会冲突,用cmake 3.13.2版本可以选择带有win64的编译。
2、编译openpose会下载很多依赖,最好不要在cmake编译的(Configure)里面下载,超级超级慢,而且还看不到进度,最好直接在文件里点击脚本运行,下载,至少可以看到下载进度。下载模型也是,不要Generate后在cmake下载,也是超级慢啊。第一次Configure要下载一些东西会比较慢,第一次一般也不能全部配置完,把该勾的勾上,继续Configure,直到没有红色。
四、运行openposedemo提示can’t find python API
openpose最后编译完成好了后,把生成的build/bin文件夹下的所有库复制到build/x64/release/下,以及将models文件夹复制到build中!!!