opencv 不使用所有 GPU 内存
opencv doesn't use all GPU memory
我正在尝试使用 cvlib 包,它使用 yolov3 模型来识别 windows 10 上图像上的对象。
让我们举一个简单的例子:
import cvlib as cv
import time
from cvlib.object_detection import draw_bbox
inittimer=time.time()
bbox, label, conf = cv.detect_common_objects(img,confidence=0.5,model='yolov3-worker',enable_gpu=True)
print('The process tooks %.3f s'%(time.time()-inittimer)
output_image = draw_bbox(img, bbox, label, conf)
结果大约需要 60 毫秒。
cvlib 使用 opencv 来计算这个 cnn 部分。
如果现在我尝试查看 tensorflow 使用了多少 GPU,使用子进程,只需要 824MiB。
当程序运行时,如果我启动 nvidia-smi,它会给我这个结果:
如您所见,此处有更多可用内存。我的问题很简单。为什么 Cvlib(以及 tensorflow)不全部使用它来改进时间检测?
编辑:
据我了解,cvlib 使用 tensorflow 但它也使用 opencv 检测器。我使用 cmake 和 Cuda 10.2 安装了 opencv
我不明白为什么,但在 nvidia-smi 中写的是 CUDA Version : 11.0 而不是。也许这就是问题所在?
您可以验证opencv 是否正在使用CUDA。这可以使用以下
来完成
import cv2
print(cv2.cuda.getCudaEnabledDeviceCount())
这应该可以让您了解计算机中支持 CUDA 的设备的数量。您还应该使用以下
检查构建信息
import cv2
print cv2.getBuildInformation()
以上两种情况的输出可以表明你的opencv是否可以访问GPU。如果它不访问GPU那么你可以考虑重新安装。
workon opencv_cuda
cd opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE
并分享结果。
应该是这样的
我明白了!问题来自于我为每次迭代创建了一个新的 Net
对象。
这是 github 上的相关问题,您可以在其中关注它:https://github.com/opencv/opencv/issues/16348
使用自定义函数,它现在可以以 ~60 fps 的速度运行。请注意,cvlib 可能未用于实时计算。
我正在尝试使用 cvlib 包,它使用 yolov3 模型来识别 windows 10 上图像上的对象。 让我们举一个简单的例子:
import cvlib as cv
import time
from cvlib.object_detection import draw_bbox
inittimer=time.time()
bbox, label, conf = cv.detect_common_objects(img,confidence=0.5,model='yolov3-worker',enable_gpu=True)
print('The process tooks %.3f s'%(time.time()-inittimer)
output_image = draw_bbox(img, bbox, label, conf)
结果大约需要 60 毫秒。
cvlib 使用 opencv 来计算这个 cnn 部分。
如果现在我尝试查看 tensorflow 使用了多少 GPU,使用子进程,只需要 824MiB。
当程序运行时,如果我启动 nvidia-smi,它会给我这个结果:
如您所见,此处有更多可用内存。我的问题很简单。为什么 Cvlib(以及 tensorflow)不全部使用它来改进时间检测?
编辑:
据我了解,cvlib 使用 tensorflow 但它也使用 opencv 检测器。我使用 cmake 和 Cuda 10.2 安装了 opencv 我不明白为什么,但在 nvidia-smi 中写的是 CUDA Version : 11.0 而不是。也许这就是问题所在?
您可以验证opencv 是否正在使用CUDA。这可以使用以下
来完成import cv2
print(cv2.cuda.getCudaEnabledDeviceCount())
这应该可以让您了解计算机中支持 CUDA 的设备的数量。您还应该使用以下
检查构建信息import cv2
print cv2.getBuildInformation()
以上两种情况的输出可以表明你的opencv是否可以访问GPU。如果它不访问GPU那么你可以考虑重新安装。
workon opencv_cuda
cd opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE
并分享结果。
应该是这样的
我明白了!问题来自于我为每次迭代创建了一个新的 Net
对象。
这是 github 上的相关问题,您可以在其中关注它:https://github.com/opencv/opencv/issues/16348
使用自定义函数,它现在可以以 ~60 fps 的速度运行。请注意,cvlib 可能未用于实时计算。