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

Anaconda3配置OpenCV

个人觉得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_LIMITundeclared (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_LIMITundeclared (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]
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
告知:需要学习YOLOv4进行TT100K数据集上中国交通标志识别的学员请前往(1) Ubuntu系统《YOLOv4目标检测实战:中国交通标志识别》课程链接:https://edu.csdn.net/course/detail/29362(2)《Windows版YOLOv4目标检测实战:中国交通标志识别》课程链接:https://edu.csdn.net/course/detail/29363在无人驾驶中,交通标志识别是一项重要的任务。本课程中的项目以美国交通标志数据集LISA为训练对象,采用YOLOv3目标检测方法实现实交通标志识别。具体项目过程包括包括:安装Darknet、下载LISA交通标志数据集、数据集格式转换、修改配置文件、训练LISA数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。YOLOv3基于深度学习,可以实地进行端到端的目标检测,以速度快见长。本课程将手把手地教大家使用YOLOv3实现交通标志的多目标检测。本课程的YOLOv3使用Darknet,在Ubuntu系统上做项目演示。 Darknet是使用C语言实现的轻型开源深度学习框架,依赖少,可移植性好,值得深入学习和探究。除本课程《YOLOv3目标检测实战:交通标志识别》外,本人推出了有关YOLOv3目标检测系列课程,请持续关注该系列的其它课程视频,包括:《YOLOv3目标检测实战:训练自己的数据集》《YOLOv3目标检测:原理与源码解析》《YOLOv3目标检测网络模型改进方法》另一门课程《YOLOv3目标检测实战:训练自己的数据集》主要是介绍如何训练自己标注的数据集。而本课程的区别主要在于学习对已标注数据集的格式转换,即把LISA数据集从csv格式转换成YOLOv3所需要的PASCAL VOC格式和YOLO格式。本课程提供数据集格式转换的Python代码。请大家关注以上课程,并选择学习。下图是使用YOLOv3进行交通标志识别的测试结果

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值