已經解決:OpenPose報錯:error == cudaSuccess (2 vs. 0) out of memory

報錯

在運行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了,雖然依舊卡頓,但好了不少了哦。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章