報錯
在運行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顯存的我的電腦,肯定是會溢出的。
解決辦法
如上面的截圖,解決辦法肯定是有的,這裏先說明一下OpenPoseDemo的三個算法模式,1:BODY_25模式,這個最好,最快,要求電腦配置也相對要高一點啦,顯存2.2GB朝上的。2:COCO模式,這個只需要顯存>1.5GB就可以,但是速度會下降,開攝像頭或者是video的話就會很卡啦。3、MPII,不瞭解。。。
方法一:改變模式
- 如果是敲命令行來運行程序,就加一個
--model_pose COCO
,命令如下
C:\MyJob\LearnOpenPose\openpose>bin\OpenPoseDemo.exe --model_pose COCO
就會有效果啦,不過我們也能看到右上角UI顯示的是0.4fps,非常的卡頓
- 如果是使用源代碼編譯後運行,沒地方加這樣的參數,在哪裏改呢,答案是main()函數裏,
FLAGS_model_pose = "COCO";
記得要加在gflags::ParseCommandLineFlags(&argc, &argv, true);
這句前面哦,不然就沒用了呢。第二個方法也是同一個地方。
方法二 改變處理分辨率
命令行添加 --net_resolution 320x176
,後面的數字只是打個比方啦,你可以自己定義哦。
源代碼就是添加FLAGS_net_resolution = "320x176";
僅僅改變處理分辨率的話,就有1.9pfs了,雖然依舊卡頓,但好了不少了哦。