Yolov3:Ubuntu18下AlexeyAB/darknet的配置

安装过程中自己踩过一些坑,特此将配置流程记录下来,希望对后人有所帮助。

由于写下此文是一时兴起,因此配置过程中没有留下截图,本文图极少,见谅。

在配置环境前请一定留意darknet的readme文件,由于版本更新,可能导致按网上找到文章的版本配置的环境并不适合你下载的darknet,导致不明原因的报错。

AlexeyAB/darknet git地址

我安装版本的环境需求:

CMake >= 3.8

CUDA 10.0

OpenCV >= 2.4

cuDNN >= 7.0 for CUDA 10.0

GPU with CC >= 3.0

on LinuxGCC or Clang, on WindowsMSVC 2015/2017/2019


一、硬件

cpu:i7-7700

gpu:gtx1070


二、前期准备

准备工作如下:

(1)win10安装ubuntu18双系统

(2)安装显卡驱动

(3)安装cuda10.0

(4)安装cudnn7.6

1、win10安装ubuntu18双系统

易踩的坑:

(1)需要注意自己电脑的启动模式,启动模式有uefi与Legacy两种   

(2)系统语言最好选择英文。第一次安装我选择中文,后可能是显卡驱动出错在登陆界面反复横跳无法进入桌面,参照网上方法进入tty,结果中文显示全部为 ■ ,最后没办法解决只能重装系统。

(3)分区参考:我总共为ubuntu留了200G空间,其中“/” 20480M,“swap” 16384M,“eif” 512M(引导ubuntu启动),“/home” 剩余空间

(4)Device for boot loader installation(安装引导启动器的设备)务必选择efi分区的盘符,否则ubuntu可能无法启动

双系统安装过程对于新手较为繁琐,在此不再赘述,推荐一篇详细教程:uefi启动方式详细安装教程

双系统卸载ubuntu(针对UEFI启动方式)

流程:首先将windows置为首选项,并删除ubuntu的启动项,再删除ubuntu占用分区。

千万不要直接删除分区,会导致win也无法启动

可以参考这篇文章

(1)下载easyUEFI

(2)将win的启动项置为首位(这一步也可以通过bios调整)

(3)删除ubuntu启动项

  可以通过重启电脑,看启动的是不是windows检验前面的设置是否成功,前面的设置成功后才能进行接下来的操作

(4)磁盘管理器中删除ubuntu占用磁盘空间,其中efi占用分区不能直接删除,方法如下

         Step 1 首先win+R打开运行,输入Diskpart

         Step 2 输入list disk,显示磁盘

         Step 3 输入要删除EFI分区所在的硬盘,具体在哪个盘可以在磁盘管理器中确认,我的在磁盘0中,输入select disk 0进入磁盘0 

         Step 4 输入list partition,列出磁盘0中的所有分区

         Step 5 通过大小和类型确认你需要删除的分区,efi占用分区类型为系统,我发现分区8为efi占用分区,输入select partition 8,选中分区8

          Step 6 输入delete partition override,删除分区8,override是强制删除分区,必须加上才能删除

这样就取回了被ubuntu占用的全部空间。

2、安装显卡驱动

 自动安装显卡驱动:

sudo ubuntu-drivers autoinstall

安装完成后建议重启电脑

3、CUDA安装

这里安装cuda10.0,原因是我一开始安装的是cuda9.0,make过程中报classifer.o的错,找不到解决方法,将cuda版本换为官方指定的10.0版本后编译正常。

(1)在官网下载CUDA10.0的runfile文件,此处为链接

按个人实际选择

(2)使用sh指令安装

 sudo sh cuda_10.0.130_410.48_linux.run

tips:用户条款可以用Ctrl+C跳过

由于驱动我们已经安装过了,因此这里是否安装驱动填 n,其余填 y,路径保持默认

补丁也通过sh安装

安装完毕后打开.bashrc添加环境变量

sudo gedit ~/.bashrc

在文件最后添加环境变量

export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:/usr/local/cuda/extras/CPUTI/lib64

export CUDA_HOME=/usr/local/cuda-10.0/bin

export PATH=$PATH:$LD_LIBRARY_PATH:$CUDA_HOME

保存对环境变量的修改

source ~/.bashrc

至此,cuda安装完成。

检测cuda安装是否成功

cd/usr/local/cuda/samples/1_Utilities/deviceQuery

sudo make

./deviceQuery

最后输出Result=PASS即安装成功,若为FAIL可能因为安装完显卡驱动后未重启电脑。

4、cuDNN安装

官网下载适合自己的版本,需要登陆才能下载,我下载的是v7.6.5,选择cuDNN Library for Linux

解压后将文件拷贝到cuda相应位置中

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的配置

从git下载源码 下载地址

tips:1、直接下载可能很慢继而出错,可以拉到码云,再从码云下载;

         2、opencv配置起来较为繁琐,容易出错,可直接使用如下命令。

sudoapt-get install libopencv-dev

解压后按需求修改 darknet/Makefile 文件

GPU=1                            #使用CUDA为GPU加速                   

CUDNN=1                       #使用cuDNN为GPU加速

OPENCV=1                     #使用opencv

AVX=0                             #与openmp加速cpu,若出错就置为0

DEBUG=0                       #是否开启YOLO的debug模式

OPENMP=0                    #代表编译过程将引入openmp,可使用多核CPU加速

LIBSO=0                        #编译库darknet.so

ZED_CAMERA=0          #构建具有ZED-3D相机支持的库(应安装ZED SDK)

...

...

NVCC=/usr/local/cuda-10.0/bin/nvcc    #修改为你自己的地址

...

...


编译

make

检验yolo安装是否成功

下载权重文件yolov3.weight     官网地址    网盘地址

将权重文件复制到darknet文件夹下,终端输入:

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

如果你配置了opencv,会跳出新窗口显示检测结果,如果没有则会在darknet文件夹下生成检测结果。

如果没有框可能是因为:

1、weight文件有问题(不知道为什么我的darknet文件夹下有一个yolov3.weight,可能是下载中断造成的,使用这个权重文件检测死活没有框,后来发现是权重文件不全,出错的只有7-8M,正确下载下来的应该是248M)

2、cfg文件,weights文件或data文件不匹配

非常经典的正确的检测结果

至此配置工作全部结束。

这次配置yolov3花费了不少时间,想想看可能是太急躁,执行每一步都要想清楚这一步是做什么的。期间重装ubuntu的过程中甚至根据不靠谱的教程clean了一个磁盘,有一些对我来说非常珍贵的照片就此丢失。

配置过程中走了不少弯路,希望大家别走了。

你可能感兴趣的:(Yolov3:Ubuntu18下AlexeyAB/darknet的配置)