yolov3-tiny(yolov3)训练自己的数据集(一):DarkNet + Ubuntu16.04 + GPU + OpenCV3.4.0 配置篇

1. 配置显卡驱动、cuda 和 cudnn

这里的显卡是RTX2070,首先需要确保自己的NVIDIA显卡已经安装了相应的驱动,cuda ,和cudnn 。

  • NVIDIA的显卡驱动程序和CUDA完全是两个不同的概念,CUDA是NVIDIA推出的用于自家GPU的并行计算框架,也就是说CUDA只能在NVIDIA的GPU上运行,而且只有当要解决的计算问题是可以大量并行计算的时候才能发挥CUDA的作用,CUDA本质上是一个工具包(ToolKit)。
  • NVIDIA显卡驱动和CUDA工具包本身是不具有捆绑关系,也不是一 一对应的关系,即每一个版本的显卡驱动可能有好几个版本的CUDA与之对应。
  • cuDNN是一个SDK,是一个专门用于神经网络的加速包,cuDNN跟CUDA也不是一 一对应的关系,即每一个版本的CUDA可能有好几个版本的cuDNN与之对应。

1.1 查看显卡驱动是否安装:

nvidia-smi

yolov3-tiny(yolov3)训练自己的数据集(一):DarkNet + Ubuntu16.04 + GPU + OpenCV3.4.0 配置篇_第1张图片
显卡驱动已有不用安装了

1.2 查看cuda版本:

nvcc -V

在这里插入图片描述
提示没有安装(其实通过Anaconda安装的虚拟环境有cuda)。
上面看到显卡驱动版本是430,可以安装cuda10.1,从下图中查看适合自己的cuda版本。
yolov3-tiny(yolov3)训练自己的数据集(一):DarkNet + Ubuntu16.04 + GPU + OpenCV3.4.0 配置篇_第2张图片

到官网下载cuda:
https://developer.nvidia.com/cuda-downloads

或者命令行安装:

wget http://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.243_418.87.00_linux.run

sudo sh cuda_10.1.243_418.87.00_linux.run

yolov3-tiny(yolov3)训练自己的数据集(一):DarkNet + Ubuntu16.04 + GPU + OpenCV3.4.0 配置篇_第3张图片

yolov3-tiny(yolov3)训练自己的数据集(一):DarkNet + Ubuntu16.04 + GPU + OpenCV3.4.0 配置篇_第4张图片
下载还是挺快的,执行一下安装命令,选择accept,enter键按一下继续
yolov3-tiny(yolov3)训练自己的数据集(一):DarkNet + Ubuntu16.04 + GPU + OpenCV3.4.0 配置篇_第5张图片
等几秒钟跳出安装选项,enter一下去掉第项driver中X,不安装它,其它默认,下滑到Install,enter确认安装
yolov3-tiny(yolov3)训练自己的数据集(一):DarkNet + Ubuntu16.04 + GPU + OpenCV3.4.0 配置篇_第6张图片
yolov3-tiny(yolov3)训练自己的数据集(一):DarkNet + Ubuntu16.04 + GPU + OpenCV3.4.0 配置篇_第7张图片
等待安装完成,完成后如下提示
yolov3-tiny(yolov3)训练自己的数据集(一):DarkNet + Ubuntu16.04 + GPU + OpenCV3.4.0 配置篇_第8张图片
根据提示添加环境变量
yolov3-tiny(yolov3)训练自己的数据集(一):DarkNet + Ubuntu16.04 + GPU + OpenCV3.4.0 配置篇_第9张图片
打开

sudo nano ~/.bashrc 

在文件末尾添加以下环境变量:

export PATH=$PATH:/usr/local/cuda-10.1/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.1/lib64
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-10.1

ctrl+O,enter保存,ctrl+X退出,重新激活一下:

source ~/.bashrc

查看一下版本
yolov3-tiny(yolov3)训练自己的数据集(一):DarkNet + Ubuntu16.04 + GPU + OpenCV3.4.0 配置篇_第10张图片
可以看到是cuda10.1

1.3 查看cudnn 版本:

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

提示没有存在
到官网下载对应版本的cudnn:https://developer.nvidia.com/rdp/cudnn-archive
yolov3-tiny(yolov3)训练自己的数据集(一):DarkNet + Ubuntu16.04 + GPU + OpenCV3.4.0 配置篇_第11张图片
下载后解压以后,输入以下命令:

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
 
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

yolov3-tiny(yolov3)训练自己的数据集(一):DarkNet + Ubuntu16.04 + GPU + OpenCV3.4.0 配置篇_第12张图片
查看一下版本是7.6.4

2. 配置DarkNet环境

2.1 安装opencv

  1. 根据自己情况下对应版本,到官网下载opencv: https://opencv.org/releases/
    这里用的是opencv3.4.0

  2. 还得下载opencv_contrib,地址:https://github.com/opencv/opencv_contrib/releases
    这里用的是opencv_contrib-3.4.0
    在这里插入图片描述
    创建一个文件加opecv,把这两个文件放进去并解压一下
    在这里插入图片描述
    在opencv-3.4.0文件夹下新建两个新的文件夹,分别为build和install

    mkdir build
    mkdir install
    

    在这里插入图片描述

  3. 接着安装一些依赖库

    sudo apt-get install build-essential cmake cmake-qt-gui git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
    
    sudo apt-get install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
    
    sudo apt-get install libavcodec-dev libavformat-dev libv4l-dev liblapacke-dev libxvidcore-dev libx264-dev libatlas-base-dev gfortran ffmpeg
    
  4. 编译opencv3.4.0:
    打开cmake工具

    cd ~
    cmake-gui
    

    点击Browse Source...,选择opencv-3.4.0文件夹
    点击Browse Build...,选择刚刚在opencv-3.4.0文件夹里创建的空文件夹build
    点击左下角Configure
    yolov3-tiny(yolov3)训练自己的数据集(一):DarkNet + Ubuntu16.04 + GPU + OpenCV3.4.0 配置篇_第13张图片
    弹出选项框,不用更改,直接点击Finish
    yolov3-tiny(yolov3)训练自己的数据集(一):DarkNet + Ubuntu16.04 + GPU + OpenCV3.4.0 配置篇_第14张图片
    耐心等待
    yolov3-tiny(yolov3)训练自己的数据集(一):DarkNet + Ubuntu16.04 + GPU + OpenCV3.4.0 配置篇_第15张图片
    显示Configuring done后
    yolov3-tiny(yolov3)训练自己的数据集(一):DarkNet + Ubuntu16.04 + GPU + OpenCV3.4.0 配置篇_第16张图片
    在Search查找框中输入extra,找到OPENCV_EXTRA_MODULES_PATH设置路径为opencv_contrib-3.4.0里的modules文件夹
    yolov3-tiny(yolov3)训练自己的数据集(一):DarkNet + Ubuntu16.04 + GPU + OpenCV3.4.0 配置篇_第17张图片
    在搜索框输入install,找到CMAKE_INSTALL_PREFIX,更改一下默认路径,路径为刚刚创建的install文件夹(opencv-3.4.0里面),这是为了以后安装多个opencv版本,避免冲突
    yolov3-tiny(yolov3)训练自己的数据集(一):DarkNet + Ubuntu16.04 + GPU + OpenCV3.4.0 配置篇_第18张图片
    再次点击Configure开始配置,耐心等待直到显示Configuring done,然后再次点击Configure直到所有选项的红色状态消失了。
    yolov3-tiny(yolov3)训练自己的数据集(一):DarkNet + Ubuntu16.04 + GPU + OpenCV3.4.0 配置篇_第19张图片
    yolov3-tiny(yolov3)训练自己的数据集(一):DarkNet + Ubuntu16.04 + GPU + OpenCV3.4.0 配置篇_第20张图片

  5. 最后点击Generate
    yolov3-tiny(yolov3)训练自己的数据集(一):DarkNet + Ubuntu16.04 + GPU + OpenCV3.4.0 配置篇_第21张图片

  6. 退出cmake,进入opencv-3.4.0文件夹下的build目录
    输入:

       cd ~/Downloads/opencv/opencv-3.4.0/build
       make -j4
    

    yolov3-tiny(yolov3)训练自己的数据集(一):DarkNet + Ubuntu16.04 + GPU + OpenCV3.4.0 配置篇_第22张图片

  7. 报错:

    yolov3-tiny(yolov3)训练自己的数据集(一):DarkNet + Ubuntu16.04 + GPU + OpenCV3.4.0 配置篇_第23张图片

    "fatal error: dynlink_nvcuvid.h: No such file or directory compilation terminated"
    

    解决办法:
    ctrl + Alt +T 重新开个终端,再次打开cmake工具

    cmake-gui
    

    搜索cudacodec,找到”BUILD_opencv_cudacodec“项,把方框里的对号去掉。
    重新点击Configure,显示Configuring done后点击Generate

    yolov3-tiny(yolov3)训练自己的数据集(一):DarkNet + Ubuntu16.04 + GPU + OpenCV3.4.0 配置篇_第24张图片
    重新编译即可。
    yolov3-tiny(yolov3)训练自己的数据集(一):DarkNet + Ubuntu16.04 + GPU + OpenCV3.4.0 配置篇_第25张图片

    接着输入:

    make install
    

    等待安装完成。

  8. 进入opencv-3.4.0目录里install文件夹,将里面三个文件复制到usr/local/… 目录下
    yolov3-tiny(yolov3)训练自己的数据集(一):DarkNet + Ubuntu16.04 + GPU + OpenCV3.4.0 配置篇_第26张图片
    输入:

    cd ~/Downloads/opencv/opencv-3.4.0/install
    
    sudo cp -r include /usr/include/opencv3.4.0
    
    sudo cp -r lib /usr/lib/opencv3.4.0
    
    sudo cp -r bin /usr/bin/opencv3.4.0
    

    打开ld.so.conf文件

    sudo nano /etc/ld.so.conf
    

    添加一行变量:yolov3-tiny(yolov3)训练自己的数据集(一):DarkNet + Ubuntu16.04 + GPU + OpenCV3.4.0 配置篇_第27张图片/usr/lib/opencv3.4.0是opencv安装路径,也就是makefile中指定的安装路径
    保存一下,运行sudo ldconfig
    接着,修改bash.bashrc文件:

    sudo nano /etc/bash.bashrc
    

    在文件末尾加入:

    PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib/opencv3.4.0/pkgconfig
    export PKG_CONFIG_PATH
    

    yolov3-tiny(yolov3)训练自己的数据集(一):DarkNet + Ubuntu16.04 + GPU + OpenCV3.4.0 配置篇_第28张图片
    激活一下: source /etc/bash.bashrc

  9. 查看opencv版本

    pkg-config --modversion opencv
    

    在这里插入图片描述
    至此,opencv配置完成。

2.2 DarkNet编译测试

下载DarkNet框架:

git clone https://github.com/pjreddie/darknet
cd darknet
make

darkne文件夹里的 Makefile文件默认 是使用 CPU,
用GPU要修改一下:

GPU=1    # 是否打开GPU
CUDNN=1   # 是否打开cudnn
OPENCV=0  # 是否打开opencv

修改后保存,每次修改记得重新编译一下

make clean
make

下载预训练模型权重yolov3.weights来做一下测试
下载地址:

wget https://pjreddie.com/media/files/yolov3.weights

测试一张图片:

./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

#或者
./darknet detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights data/dog.jpg

yolov3-tiny(yolov3)训练自己的数据集(一):DarkNet + Ubuntu16.04 + GPU + OpenCV3.4.0 配置篇_第29张图片
测试完成。
未完待续~

Reference:
https://www.cnblogs.com/WushiShengFei/p/10002502.html
https://blog.csdn.net/wanzhen4330/article/details/81699769
https://pjreddie.com/darknet/yolo/

你可能感兴趣的:(目标检测,深度学习,Linux)