ubuntu搭建darknet框架并使用alexeyAB版本的yolo跑demo

1.darknet搭建

code: alexeyAB version

1 查看cmake,gcc版本:
>> cmake -version  # 下面附高版本cmake安装
>> gcc -v

2 查看opencv版本:
>> pkg-config --modversion opencv

3 查看cuda,cudnn版本:
>> nvidia-smi
>> cat /usr/local/cuda/version.txt

4 下载darknet源码
>> git clone https://github.com/AlexeyAB/darknet.git
出现:
“
正克隆到 'darknet'...
remote: Enumerating objects: 5934, done.
remote: Total 5934 (delta 0), reused 0 (delta 0), pack-reused 5934
接收对象中: 100% (5934/5934), 6.35 MiB | 1.53 MiB/s, 完成.
处理 delta 中: 100% (3926/3926), 完成.5 移动文件夹darknet至projects
>> mv darknet /home/ubuntu/projects/
>> cd ./projects/darknet-master

6 查看具体内容
>> ls -all

7 开始编译#########重要的一步###########
	7.1如果不需要opencv及cuda加速:
>> make
出现一堆
“
mkdir -p obj
mkdir -p backup
mkdir -p results
。。。
t.o libdarknet.a -o darknet -lm -pthread  libdarknet.a
”
	7.2如果需要使用opencv、cuda
可以进入darknet-master
打开Makefile
>> gedit Makefile

修改
>>GPU=1
>>CUDNN=1
>>OPENCV=1
>>ARCH= -gencode arch=compute_75,code=[sm_75,compute_75]# 2080ti
>>
ifeq ($(OPENCV), 1)
COMMON+= -DOPENCV
CFLAGS+= -DOPENCV
LDFLAGS+= `pkg-config --libs opencv`# opencv3.4.6
COMMON+= `pkg-config --cflags opencv`
endif
>>
保存然后再编译

9 编译结束,运行一下
>> ./darknet 
出现
“
usage: ./darknet <function>
”
编译成功

10 跑一个demo
>> ./darknet detector test cfg/coco.data cfg/yolov4.cfg cfg/yolov4.weights -thresh 0.25
>> cfg/coco.data
>> cfg/yolov4.cfg
>> cfg/yolov4.weights
需要输入图片路径
最终显示结果

注意:如果你配置了cuda,需要等3-5秒才出结果,很可能是没配成功。

2.高版本cmake安装:

据说哦,apt-get install cmake安装的版本是最低的
因此需要安装适合的版本,就需要手动装
 # 1下载压缩包
 网址https://cmake.org/files/
 # 2 解压并改名
 解压并将解压后的文件名改为
 cmake
 # 3移至opt目录下
 在当前终端下执行以下命令,移动至opt目录下
>> sudo mv cmake /opt/cmake
# 4生成软连接
>> sudo ln -sf /opt/cmake/bin/* /usr/bin/
# 5验证
>> cmake -version

3.编译过程中遇到的问题

1、Makefile:39: *** 遗漏分隔符 (null)。 停止。
是因为我在选择cuda算力时,多注释了一行。我的显卡是2080ti,应该选

ARCH= -gencode arch=compute_75,code=[sm_75,compute_75]

我取消注释多取消了一行(还是对makefile语法不熟惹得获啊)
错误做法:

GeForce RTX 2080 Ti, RTX 2080, RTX 2070, Quadro RTX 8000, Quadro RTX 6000, Quadro RTX 5000, Tesla T4, XNOR Tensor Cores
ARCH= -gencode arch=compute_75,code=[sm_75,compute_75]

2、GPU isn’t used
OpenCV isn’t used - data augmentation will be slow
明明用gpu+cudnn+opencv编译了,为啥还会显示这个,而且检测时间上确实很慢
可能原因有:
2.1、我第一次先编译了(make)没有cuda版本,他已经生成了该生成的文件,应该使用(先清除编译结果,再生成编译新的编译结果)

make clean # 清除

然后再

make # 再编译

2.2、可能是opencv、cudnn、cuda的路径不正确。
2.3、可能是opencv的配置没改

LDFLAGS+= `pkg-config --libs opencv4 2> /dev/null || pkg-config --libs opencv`
COMMON+= `pkg-config --cflags opencv4 2> /dev/null || pkg-config --cflags opencv

3、video-stream stopped
在测试视频时,出现的,

./darknet detector demo cfg/coco.data cfg/yolov4.cfg cfg/yolov4.weights -ext_output 视频

”视频“参数是本地视频。没改参数导致的。

4.用opencv及cuda编译好的dakrnet训练yolo4

https://blog.csdn.net/weixin_42630613/article/details/107834689

需要学习Windows系统YOLOv4的同学请前往《Windows版YOLOv4目标检测实战:原理与源码解析》,课程链接 https://edu.csdn.net/course/detail/29865【为什么要学习这门课】 Linux创始人Linus Torvalds有一句名言:Talk is cheap. Show me the code. 冗谈不够,放码过来!  代码阅读是从基础到提高的必由之路。尤其对深度学习,许多框架隐藏了神经网络底层的实现,只能在上层调包使用,对其内部原理很难认识清晰,不利于进一步优化和创新。YOLOv4是最近推出的基于深度学习的端到端实时目标检测方法。YOLOv4的实现darknet使用C语言开发的轻型开源深度学习框架,依赖少,可移植性好,可以作为很好的代码阅读案例,让我们深入探究其实现原理。【课程内容与收获】 本课程将解析YOLOv4的实现原理和源码,具体内容包括:- YOLOv4目标检测原理- 神经网络及darknet的C语言实现,尤其是反向传播的梯度求解和误差计算- 代码阅读工具及方法- 深度学习计算的利器:BLAS和GEMM- GPU的CUDA编程方法及在darknet的应用- YOLOv4的程序流程- YOLOv4各层及关键技术的源码解析本课程将提供注释后的darknet的源码程序文件。【相关课程】 除本课程《YOLOv4目标检测:原理与源码解析》外,本人推出了有关YOLOv4目标检测的系列课程,包括:《YOLOv4目标检测实战:训练自己的数据集》《YOLOv4-tiny目标检测实战:训练自己的数据集》《YOLOv4目标检测实战:人脸口罩佩戴检测》《YOLOv4目标检测实战:中国交通标志识别》建议先学习一门YOLOv4实战课程,对YOLOv4的使用方法了解以后再学习本课程。【YOLOv4网络模型架构图】 下图由白勇老师绘制  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值