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


    Anaconda3配置OpenCV

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

    pip install opencv-python
    pip install opencv-contrib-python
    
    • 1
    • 2

    安装完成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
    
    • 1
    • 2
    • 3
    • 4

    需要再安装,跑以下命令

    sudo apt install libopencv-dev
    
    • 1

    完成,没有opencv错误

    Darknet编译问题

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

    ./src/convolutional_layer.c:153:13: error:CUDNN_CONVOLUTION_FWD_SPECIFY_WORKSPACE_LIMITundeclared (first use in this function); did you mean ‘CUDNN_CONVOLUTION_FWD_ALGO_DIRECT?
                 CUDNN_CONVOLUTION_FWD_SPECIFY_WORKSPACE_LIMIT,
    
    • 1
    • 2
    ./src/convolutional_layer.c: In function ‘cudnn_convolutional_setup’:
    ./src/convolutional_layer.c:184:44: error:MEMORY_LIMITundeclared (first use in this function)
            if( fw_results[algoIndex].memory < MEMORY_LIMIT ){
    
    • 1
    • 2
    • 3

    解决方法:使用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();
    
    • 1
    • 2
    • 3

    解决方法:找到文件/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
    
    • 1
    • 2

    解决方法:修改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]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    GPT-2
    神经网络介绍详解视频,神经网络介绍详解全书
    阿里推出新品牌“瓴羊”,致力成为“数字化领头羊”
    零代码编程:用ChatGPT批量转换多个视频文件夹到音频并自动移动文件夹
    基于模型预测人工势场的船舶运动规划方法,考虑复杂遭遇场景下的COLREG(Matlab代码实现)
    [附源码]java毕业设计一点到家小区微帮服务系统
    7-用户输入和while循环
    【手写Mybatis】step02:实现映射器的注册和使用
    MFC入门问题(n)
    Greenplum【部署 06】GPSS扩展(Greenplum Streaming Server)安装启用配置启动
  • 原文地址:https://blog.csdn.net/LHX19971114/article/details/126229887