ubuntu18.04安装darknet(使用GPU)
ubuntu是购买了服务器,用vscode进行远程连接
说多了都是泪!
注意事项
由于服务器下载较慢,建议在本机下载好以后上传到服务器中
安装顺序
- opencv
- CUDA
- darknet
如果安装顺序不对,会出现很多麻烦,openCV一定要在cuda前面安装,不然报错很难解决只能重装系统!!!(目前我也安装失败了)
1、Opencv源码下载
OpenCV网站:https://github.com/opencv
找到opencv和opencv_contrib库
在releases中找到需要的版本
在opencv_contrib选择相对应的包下载即可
下载完成后将二者合并放在/home/目录下
安装依赖
#更新源,安装软件包
sudo apt update && sudo apt install -y cmake g++ wget unzip
#安装依赖
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install pkg-config
创建build文件夹并执行cmake
#创建一个文件夹
mkdir build
cd build
#注意文件包的路径和名称是否和命令对应
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-3.4.15/modules ..
#这里会从github上下载一些文件,如果终端加入代理的话会很快,没有代理需要自己下载文件。只要终端不报红色就没啥问题。
编译
make -j8 #性能不好的电脑可以选择-j4,数字越大编译的速度越快
安装到系统
sudo make install
添加路径
sudo gedit /etc/ld.so.conf.d/opencv.conf
写入:
/usr/local/lib
之后再终端输入以下命令:(安装完成某个工程后生成许多动态库,该命令是为了让这些动态链接库为系统所共享)
sudo ldconfig
使其保存并生效,再在终端输入:
sudo gedit /etc/bash.bashrc
在文件后末尾输入:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
退出保存,更新环境变量:
source /etc/bash.bashrc
测试安装的文件
进入opencv/samples/cpp/example_cmake目录下,终端打开,依次输入:
cd ../samples/cpp/example_cmake
cmake .
make
./opencv_example
2、在服务器安装cuda和cuDNN
首先用sudo apt-get --purge remove cuda-*
卸载预装好的的cuda和cudnn,然后去cuda官网下载点这里
然后按照图片上一样(不要输入指令下载会很慢)
把下载好的三个文件传到服务器中
然后下载cudnn相应版本并上传(点这里 需要注册完之后然后下载)
上传完毕后打开终端到上传文件夹:
sudo sh cuda_10.2.89_440.33.01_linux.run
出现一个界面后,输入accept回车,不要安装driver,下方向键选择到driver这个选项然后回车,然后向下选择到install回车,安装完成后会出现summary,只要没报错就无伤大雅
加入环境变量
gedit ~/.bashrc
# 在最后加入两行:(按照安装提示修改成自己的路径)
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
# 保存退出之后,运行:
source ~/.bashrc
接着
sudo sh cuda_10.2.1_linux.run
sudo sh cuda_10.2.2_linux.run
接下来和上面的流程一样
安装cuDNN
tar -xzvf cudnn-10.2-linux-x64-v7.6.5.32.tgz #注意自己的文件版本
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
至次,gpu环境配置完成
3、下载darknet源码
首先判断电脑下载的是哪个版本的cuda和cuDNN,因为darknet有两个版本,第一个版本不支持8以上的cuDNN
查看cuda版本
nvcc —V
查看cudnn版本
由于版本不同,所以都可以试试
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
1
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
1
sudo find -name "cudnn_version.h"
sudo cat [这里换成上一个命令得到的位置] | grep CUDNN_MAJOR -A 2
下载源码
1、https://gitcode.net/mirrors/pjreddie/darknet?utm_source=csdn_github_accelerator
2、https://gitcode.net/mirrors/alexeyab/darknet?utm_source=csdn_github_accelerator
当cuDNN大于8.0用第二种,不然会有报错编译不通过
开始配置
修改Makefile文件
GPU=1 #使用gpu
CUDNN=1 #支持cuda
CUDNN_HALF=0
OPENCV=1 #使用opencv
AVX=0
OPENMP=1 # 使用多线程训练
LIBSO=1
ZED_CAMERA=0
ZED_CAMERA_v2_8=0
修改完后再daknet根目录下可以开始编译
(每次修改配置后需要清理重新编译)
make clean && make -j8
测试是否编译成功
./darknet
#若出现 usage:./darknet<fuction>,则证明成功
测试实例
先去官网下载官方权重文件
https://github.com/AlexeyAB/darknet/releases/tag/yolov4
下载出来的权重文件放到darknet根目录的cfg文件夹中,输入命令
./darknet detect cfg/yolov4.cfg cfg/yolov4.weights data/dog.jpg
出现以上内容就安装成功了