【问题标题】:How to use OpenCV with GPU on Colab?如何在 Colab 上使用 OpenCV 和 GPU?
【发布时间】:2021-05-15 01:02:47
【问题描述】:

我正在尝试在 Colab 上使用 YOLOv4 进行人体检测。代码包括以下几行:

import cv2

net =cv2.dnn.readNetFromDarknet(yolo_config_path,yolo_weights_path)

if cuda:
    net.setPreferableBackend(cv2.dnn.DNN_BACKEND_CUDA)
    net.setPreferableTarget(cv2.dnn.DNN_TARGET_CUDA)

但是,如果我直接在 Colab 上运行此单元格,则会遇到如下错误:

Traceback (most recent call last):
  File "run_yolo.py", line 26, in <module>
    net =cv2.dnn.readNetFromDarknet(yolo_config_path,yolo_weights_path)
cv2.error: OpenCV(4.1.2) /io/opencv/modules/dnn/src/darknet/darknet_io.cpp:554: error: (-212:Parsing error) Unsupported activation: mish in function 'ReadDarknetFromCfgStream'

我运行这个单元以避免错误:

%cd /content
!git clone https://github.com/opencv/opencv
!git clone https://github.com/opencv/opencv_contrib
!mkdir /content/build
%cd /content/build
!cmake -DOPENCV_EXTRA_MODULES_PATH=/content/opencv_contrib/modules  -DBUILD_SHARED_LIBS=OFF  -DBUILD_TESTS=OFF  -DBUILD_PERF_TESTS=OFF -DBUILD_EXAMPLES=OFF -DWITH_OPENEXR=OFF -DWITH_CUDA=ON -DWITH_CUBLAS=ON -DWITH_CUDNN=ON -DOPENCV_DNN_CUDA=ON /content/opencv
!make -j8 install

当我写下这一行时:

import cv2
cv2.__version__

结果是 4.5.1-dev。

但是当我运行代码时,cv2 是 OpenCV(4.1.2)。我该如何解决这个问题?

【问题讨论】:

  • 你确定你的python环境只安装了一个opencv版本吗?也许冲突的版本会导致这种情况。 Yolov4 不适用于它。您可能必须使用 3.4.12 或更高版本或 4.4.0
  • 我写了这行:!pip install opencv-python==3.4.13.47。当我再次运行代码时,它给出了这个错误: Traceback (last last call last): File "run_yolo.py", line 29, in net.setPreferableBackend(cv2.dnn.DNN_BACKEND_CUDA) AttributeError: module 'cv2. dnn' 没有属性 'DNN_BACKEND_CUDA'
  • 你能检查pip list 的包裹吗?我不熟悉 Google Colab 如何处理依赖项,但很可能它默认使用 4.1.2。您需要先卸载它,然后运行上面的代码(单元)以从源代码安装。
  • 我检查了包裹。 opencv-python 是 3.4.13.47,opencv-contrib-python 是 3.4.13.47。我觉得这个版本不支持dnn。
  • 好吧,这可能会导致问题。永远不要同时安装这两个软件包!只需使用opencv-contrib-python,正如你所说,最好坚持4.4.x 或更高版本的 Yolov4

标签: opencv google-colaboratory cv2 yolo darknet


【解决方案1】:

如果要使用 Yolov4 或其他东西,请使用以下版本的 opencv:

!pip install opencv-contrib-python==3.4.13.47 --force-reinstall

【讨论】:

    猜你喜欢
    • 2019-11-02
    • 2020-12-04
    • 1970-01-01
    • 2020-02-15
    • 2018-12-07
    • 2022-10-06
    • 2016-05-27
    • 1970-01-01
    • 2020-04-14
    相关资源
    最近更新 更多