darknet是一个开源的深度学习框架,非常小巧,不用其他库的支持就能直接运行。但是作者还是支持了cuda和opencv更加方便加速训练以及显示。下面我们开始进行darknet+cuda+opencv的安装。
安装顺序一定要注意,不然出现错误非常麻烦。darknet安装顺序可以随意,但是opencv一定要cuda前面安装。不然报错很难解决只能重装系统。
这里我们安装的版本是opencv3.2.0+cuda8.0,由于需要利用tensorlfow进行后续的开发,所以cuda需要选择cuda8。tensorlfow暂时不支持cuda9。
参考Ubuntu下编译opencv并生成python链接库详细教程-吐血编译系列
wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.2.0.zip
unzip opencv.zip# 此时会生成一个opencv3.2.0
cd opencv-3.2.0
#创建一个文件夹
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j4
make install
在执行cmke的时候会一直卡在ICV: Downloading ippicv_linux_20151201.tgz…,网上提到一种方法,就是下载这个压缩包,然后进行替换之后重新执行改名命令。但是笔者尝试之后发现再次cmake是还是会出现错误,所以这种方法并不可行。
发现很多人都漏了一点。当我们下载完之后,替换原来的linux_20151201.tgz,还需要关掉网络下载-DWITH_IPP=OFF。避免再次下载。
所以重新执行的指令为
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -DWITH_IPP=OFF ..
make -j4
make install
sudo gedit /etc/ld.so.conf.d/opencv.conf
执行下面指令
sudo ldconfig
打开另一个opencv的配置文件
sudo gedit /etc/bash.bashrc
在里面添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
进入build文件夹所有文件,重新编译。
删除
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -DWITH_IPP=OFF ..
make -j4
make install
这里我选择的是samples/python里面的例子
进入到该文件家,执行
python turing.py
测试成功。
或者直接利用darknet进行测试。这里后面再讲。
去NVIDIA官网查看自己的显卡是那种驱动
比如说我的显卡是gtx1050ti,对应查到的版本是NVIDIA-384
Ubuntu系统集成的显卡驱动程序是nouveau,它是第三方为NVIDIA开发的开源驱动,我们需要先将其屏蔽才能安装NVIDIA官方驱动。
将驱动添加到黑名单blacklist.conf中,但是由于该文件的属性不允许修改。所以需要先修改文件属性。
查看属性
$sudo ls -lh /etc/modprobe.d/blacklist.conf
修改属性
$sudo chmod 666 /etc/modprobe.d/blacklist.conf
用gedit打开
$sudo gedit /etc/modprobe.d/blacklist.conf
在该文件后添加以下几行:
blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist rivatv
blacklist nvidiafb
按Ctrl+Alt+F1进入命令行模式,关闭图形系统
关闭图形界面
sudo service lightdm stop
安装N卡驱动程序
sudo apt install nvidia-384
重新启动图形系统
sudo service lightdm start
上面的命令执行后会自动转到图形界面,因为之前Ubuntu系统集成的显卡驱动程序nouveau被禁用了,这时候可能无法显示图形界面,此时再按下Ctrl+Alt+F1进入命令行模式,输入reboot 重启计算机即可。
最新的CUDA更新到了cuda9,由于实验需要tensorflow进行后期操作。但是tensorflow只支持到cuda8。
所以在这里选择安装CUDA8
由于官网上面找不到CUDA8,这里用wget下载
wget --no-check-certificate https://developer.nvidia.com/compute/cuda/8.0/prod/local_installers/cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64-deb
我们会得到一个本地deb文件
sudo dpkg -i cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64.deb.44-1_amd64-deb
跟新缓存包
sudo apt-get update
安装CUDA
sudo apt-get install cuda
在自己的.bashrc的最后添加以下代码
sudo gedit ~/.bashrc
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
使环境变量生效
source ~/.bashrc
nvcc -V
进入cuda的安装目录,我的安装目录为/usr/local/cuda/samples,执行make,并且等待10分钟左右。
可以在Samples里面找到bin/x86_64/linux/release/目录,并切换到该目录 运行deviceQuery程序
sudo ./deviceQuery
进入darknet官网可以查看相关指令
下面还是讲指令贴上来
git clone https://github.com/pjreddie/darknet.git
cd darknet
make
在官网下载cudnn,下载压缩包cuDNN v6.0 Library for Linux,不要下载deb文件
下载完成之后解压得到一个cuda文件夹。对文件进行复制。
sudo cp cuda/include/cudnn.h /usr/local/cuda-8.0/include#
sudo cp -a cuda/lib64/libcudnn* /usr/local/cuda-8.0/lib64
安装完成。
注意有两个cuda文件夹,一个是cuda一个是cuda-8.0,这里的文件对应之前设置的环境变量的路径。重点内容
2017.12.11
英伟达真tm有毒,前段时间系统崩掉,重装cuda莫名其妙的。官网找半天只有cuda9。
各个版本cuda,找了半天才找到。。。。
使用tensorflow的时候会遇到ImportError: libcudart.so.8.0: cannot open shared object file: No such file or directory
注意创建/usr/local/cuda to /usr/local/cuda-8.0的软链接
https://github.com/tensorflow/tensorflow/issues/5343
在makefile文件中,修改配置文件
OPENCV=1
GPU=1
重新编译
make clean
make -j4#我的cpu为四核四线程
出现如下错误
前面环境变量设置出现了错误。nvcc并没有设置到环境变量当中。重新设置环境变量。
然后讲makefile的NVCC设置为
NVCC=/usr/local/cuda-8.0/bin/nvcc
重新编译,然后测试
./darknet imtest data/eagle.jpg
发现配置成功
opencv3.2.0和cuda的配置真的崩溃。花了好几天时间,系统都重装了好几次,好在最后还是成功了。总算可以进行下一步。
如果大家遇到同样的问题欢迎留言。
.