Ubuntu下目标检测YOLO系列网络安装OpenCV时Darknet编译出现的问题(pjreddie版本)

个人觉得ubuntu系统单纯编译安装OpenCV麻烦,容易出错,使用pip快速安装
安装前提是Anaconda3安装完成
在darknet-master项目下进入虚拟环境终端进行安装(我的解释器是虚拟环境)
命令

pip install opencv-python
pip install opencv-contrib-python

安装完成darknet输入编译make命令还是找不到opencv的

Package opencv was not found in the pkg-config search path.

Perhaps you should add the directory containing `opencv.pc'
to the PKG_CONFIG_PATH environment variable
No package 'opencv' found

需要再安装,跑以下命令

sudo apt install libopencv-dev

完成,没有opencv错误

Darknet编译问题

pycharm下进入终端输入make遇到以下错误:
1.

./src/convolutional_layer.c:153:13: error:'CUDNN_CONVOLUTION_FWD_SPECIFY_WORKSPACE_LIMIT' undeclared (first use in this function); did you mean 'CUDNN_CONVOLUTION_FWD_ALGO_DIRECT'?

             CUDNN_CONVOLUTION_FWD_SPECIFY_WORKSPACE_LIMIT,
./src/convolutional_layer.c: In function 'cudnn_convolutional_setup':
./src/convolutional_layer.c:184:44: error: 'MEMORY_LIMIT' undeclared (first use in this function)
        if( fw_results[algoIndex].memory < MEMORY_LIMIT ){

解决方法:使用 https://github.com/arnoldfychen/darknet/tree/master/src代码中的 convolutional_layer.c文件替换原作者https://github.com/pjreddie/darknet/tree/master/src代码中的convolutional_layer.c。(Darknet使用的是pjreddie版本)
原因:cuda11.4版本对应的cudnn8.2.4里没有CUDNN_CONVOLUTION_FWD_SPECIFY_WORKSPACE_LIMIT这个宏定义。NVIDIA给出了一个针对cudnn8的解决方案代码,就是修改出错的文件src/convolutional_layer.c的代码,增加针对CUDNN_MAJOR>=8的处理:
参考链接:http://t.csdn.cn/q2tmi
2.

./src/gemm.c: In function 'time_gpu':
./src/gemm.c:232:9: warning: 'cudaThreadSynchronize' is deprecated [-Wdeprecated-declarations]
        cudaThreadSynchronize();

解决方法:找到文件/src/gemm.c,第232行
将cudaThreadSynchronize() 替换为cudaDeviceSynchronize()
原因:
cudaThreadSynchronize()在cuda10.0以后被弃用了,可以用 cudaDeviceSynchronize() 来代替。
参考链接:http://t.csdn.cn/2WNjP
3.

nvcc fatal   : Unsupported gpu architecture 'compute_30'
Makefile:92: recipe for target 'obj/convolutional_kernels.o' failed

解决方法:修改Makefile配置
去掉 -gencode arch=compute_30,code=sm_30 \
增加
-gencode arch=compute_70,code=[sm_70,compute_70]
-gencode arch=compute_75,code=[sm_75,compute_75]
-gencode arch=compute_86,code=[sm_86,compute_86]
即如下所示:

ARCH= -gencode arch=compute_35,code=sm_35 \
               -gencode arch=compute_50,code=[sm_50,compute_50] \
               -gencode arch=compute_52,code=[sm_52,compute_52] \
               -gencode arch=compute_70,code=[sm_70,compute_70] \
               -gencode arch=compute_75,code=[sm_75,compute_75]\
               -gencode arch=compute_86,code=[sm_86,compute_86]

Original: https://blog.csdn.net/LHX19971114/article/details/126229887
Author: 子覃
Title: Ubuntu下目标检测YOLO系列网络安装OpenCV时Darknet编译出现的问题(pjreddie版本)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/702030/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球