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