安装过程中自己踩过一些坑,特此将配置流程记录下来,希望对后人有所帮助。
由于写下此文是一时兴起,因此配置过程中没有留下截图,本文图极少,见谅。
在配置环境前请一定留意darknet的readme文件,由于版本更新,可能导致按网上找到文章的版本配置的环境并不适合你下载的darknet,导致不明原因的报错。
我安装版本的环境需求:
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安装是否成功
将权重文件复制到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了一个磁盘,有一些对我来说非常珍贵的照片就此丢失。
配置过程中走了不少弯路,希望大家别走了。