ubuntu16.04+cuda8.0+cudnn+opencv3.1.0+darknet(yolo v3)

本文详细记录了在Ubuntu16.04上安装CUDA8.0、CUDNN、OpenCV3.1.0的过程,包括NVIDIA驱动的安装、CUDA配置、CUDNN的添加以及OpenCV的编译,过程中遇到的错误和解决方案一并给出。
部署运行你感兴趣的模型镜像

第一个+号之后全部手动

正儿八经装了我两个礼拜 要哭了

 

 

1. NVIDIA-SMI 384.111 已安装 在这里就不提中间的曲折心酸了

2. 感谢分享  稍后上传百度云盘 CUDA+CUDNN (8.0+5.1)官网下载不了  还有配套的 opencv3.1.0opencv_contrib-3.1.0

首先调整python默认为2.7  我觉得这个环境下适应性更高

sudoupdate-alternatives --install /usr/bin/python python /usr/bin/python2 100

sudoupdate-alternatives --install /usr/bin/python python /usr/bin/python3 150

sudoupdate-alternatives --config python

选择需要的那个版本

安装CUDA:

      sudo sh cuda_8.0.27_linux.run   

或者

      sudo chmod +x cuda_8.0.27_linux.run    # 为*_linux.run 添加可执行权限

./cuda_9.0.176_384.81_linux.run             安装

      或者

      sudo dpkg -i cuda-xxxx-xxxx-xxxx-1_amd64.deb

      sudo apt update

      sudo apt install cuda

     

 

疯狂按空格 直到 100%

 

按照提示走走走走(提示中不选择安装nvidia驱动and 不安装opengl)

    会有一段worning 提示说让你装个啥啥啥  不管  就是安装好了 略略略

结束后,

      sudo reboot  //重启电脑

      sudo vim ~/.bashrc  //修改bashrc文件 添加路径什么的 (有的教程还需要修改 sudo gedit/etc/bash.bashrc  这个文件我也改了)

      在文件最后添加如下内容

      按 i 进入 insert 模式

exportCUDA_HOME=/usr/local/cuda-8.0

exportPATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}

exportLD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

      输入  :wq  保存退出   如果按 : 没有直接退出Insert模式  就先按以下Esc键  再输入  :wq  保存退出

      输入 nvcc -V 查看nvcc版本信息是否对应下载的版本

我还改了

      sudo gedit /etc/profile 文件  添加 两行

exportPATH=/usr/local/cuda-8.0/bin

 LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64 

 

重启 sudo reboot 后配置生效

 

 

 

安装cudnn

      emmm 直接解压缩 unzip 啊什么什么的

      我提供的是 tgz文件  通过 tar zxvfcudnn-8.0-linux-x64-v5.1.tgz

      解压到当前目录(我这里是 home)下  然后可以看到有一个 cuda文件夹 右下角有一个小锁的那个

      解压后会出现一个 cuda 的文件夹 形式如下

      cuda| 

    | include  |

              | cudnn.h

| lib64     | 

| *(5个文件)

      cd cuda 进入这个文件夹

sudo cpinclude/cudnn.h /usr/local/cuda-8.0/include/

sudo cp lib64/*/usr/local/cuda-8.0/lib64/

还有教程后面有一大堆,我这里没有做那些

 

如果系统里有多个CUDA版本  且需要用到

将~/.bashrc 或 ~/.zshrc 下与cuda相关的路径都改为 /usr/local/cuda/ 而不使用 /usr/local/cuda-8.0/或/usr/local/cuda-9.0/。

 

#在切换cuda版本时

rm -rf/usr/local/cuda#删除之前创建的软链接

sudo ln -s/usr/local/cuda-8.0/ /usr/local/cuda/

nvcc --version #查看当前 cuda 版本

nvcc: NVIDIA (R)Cuda compiler driver

Copyright (c)2005-2016 NVIDIA Corporation

Built onMon_Jan_23_12:24:11_CST_2017

Cuda compilationtools, release 8.0, V8.0.62

#cuda8.0 切换到 cuda9.0

rm -rf/usr/local/cuda

sudo ln -s/usr/local/cuda-9.0/ /usr/local/cuda/

nvcc --version

 

 

 

检查是否正确安装

cd~/NVIDIA_CUDA-8.0_Samples

make

1.   编译出现问题 应该是第三个例子里面 cannot find –lnvcuvid

进入 那个文件夹  找到findgllib.mk文件打开

修改 差不多第60行的代码

UBUNTU_PKG_NAME=”nvidia-367”-----nvidia-384  自己的显卡版本,这个是找不到文件夹的问题

切换路径 : cd~/NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release

终端输入 :$ ./deviceQuery

 

2.   编译出现问题 第二个例子里面  cannot find –lglut  编译第二个文件的时候出错

      建立连接 宝宝终于知道为什么我目录下找不到这个文件了  因为人家不叫 lglut.so  人家叫 libglut.so

      1)找到本地的libglut.so 文件路径 ,在终端执行:locatelibglut.so  命令;

出现两行路径名称

/usr/lib/libGL.so.x

/usr/lib/x86_64-linux-gnu/libglut.so.x.y.z

2)建立链接: sudo ln -s (后一个路径)/usr/lib/x86_64-linux-gnu/libglut.so.x.y.z(前一个路径)/usr/lib/libGL.so

完美解决问题  感谢大佬

 

编译结束之后   会出现一个  Finished building CUDA samples. 编译完成啦!

下面就是运行编译生成的二进制文件。

 

编译后的二进制文件 默认存放在~/NVIDIA_CUDA-7.5_Samples/bin中。

切换路径 : cd~/NVIDIA_CUDA-7.5_Samples/bin/x86_64/linux/release

终端输入 :$ ./deviceQuery

出来两列信息数据 

再检查一下系统和CUDA-Capabledevice的连接情况

      终端输入 : $ ./bandwidthTest   很多网上教程这里写错了  写成了 sandwidthTest  害人不浅

结果:abc@abc-Lenovo-ideapad-300S-14ISK:~/NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release$./bandwidthTest

 

[CUDA BandwidthTest] - Starting...

Running on...

 

 Device 0: GeForce 920M

 Quick Mode

 

 Host to Device Bandwidth, 1 Device(s)

 PINNED Memory Transfers

   Transfer Size (Bytes)    Bandwidth(MB/s)

   33554432            1526.6

 

Result = PASS

 

NOTE: The CUDASamples are not meant for performance measurements. Results may vary when GPUBoost is enabled.

 

 

 CUDA完美安装!喜大普奔!撒花!

下面进入惨绝人寰的opencv安装测试  emmm 很恐怖的!

 


2.安装OpenCV  3.1.0  一个同学的配置是这样 我就不考虑什么最新版本了  就是参照人家的环境来配  然鹅天下环境相似千千万,问题都tm不一样

      OPENCV直接官网下载  进入git库 点击release 选择最新版本或者需要的版本  比如我这里是 3.1.0

      首先安装依赖包   三条命令

sudo apt-getinstall build-essential

sudo apt-getinstall cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-devlibswscale-dev

sudo apt-getinstall python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-devlibtiff-dev libjasper-dev libdc1394-22-dev

 

      解压缩 opencv.zip 和 同版本contrib.zip 文件  就在home文件夹下就可以

unzip 两个文件

cd ~/opencv  //也有可能是 opencv-3.1.0

mkdir build 

cd build

cmake -DCMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -DOPENCV_EXTRA_MODULES_PATH=<path to opencv_contrib/modules/> ..

//这一步会下载ippicv_linux_20151201.tgz

//如果之前安装好CUDA的话,默认编译会花费很长时间。

//可以使用cmake -DWITH_CUDA=OFF ..

//cmake 十分非常超级无敌建议看官方文档安装  cmake后面跟的一大串是根据自己需求来的  看官方文档最轻松和安全

Sudo make  很漫长而且一堆错误 唉 又来了

Error 01  ../../../../graphcuts.cpp  NppiGraphcutState has not been declared  

修改  打开这个.cpp文件  将 第45行

#if !defined(HAVE_CUDA) || defined (CUDA_DISABLER)

改为

#if !defined(HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDA_VERSION >= 8000)

 

Error 02 一个什么java的什么什么 create 路径失败

然后最神奇的来了  我重新 cmake 、make了一遍,然后就过了。。。过了。。。了。。。我找这个问题还找了半个多小时 啥也没找到 = =

 

sudo make install

//配置路径

sudo sh -c 'echo"/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'

sudo ldconfig

 

在 sudo ldconfig 的时候 出了个error  大概就是 libcudnn.so.5 is not asymbolic link.

上网查了一下  查找相关路径下冲突的文档  用

sudo ln –sf /usr/local/cuda-8.0/lib64/libcudnn.so.5.1.10/usr/local/cuda-8.0/lib64/libcudnn.so.5

sudo ldconfig


测试安装是否成功,查看这篇:

ubuntu opencv3.1 编译demo报错http://blog.youkuaiyun.com/u011440558/article/details/78213796

 

测试安装是否成功,查看这篇

cd opencv-3.1.0/samples

cmake .

出现错误  好像是fin  

Error 1

detect_mser.cpp.oundefined reference to symble 'glMatrixMode'

 

没找到问题  先放着  暂时用不到

 


 

安装 Darknet

参考官网和https://www.cnblogs.com/chay/p/8052354.html

git clonehttps://github.com/pjreddie/darknet.git

cd ~/darknet

配置Makefile

 

1 GPU = 1      //使用GPU

2 CUDNN = 1    //使用cuDNN

3 OPENCV = 1   //使用OPENCV

修改下面的 nvcc =/usr/local/cuda-8.0/bin/nvcc

遇见的问题

Error1.cudnn.h No suchfile balabalabala   在include/darknet.h中 找到 引入cudnn.h的那一行,用绝对路径替换掉

Error 2 不能找到 –lippicv 这个库

https://blog.youkuaiyun.com/dengshuai_super/article/details/51895120

感谢大佬

别的库使用一下软链接就可以了  这个需要手动复制过去 我用的方法三 感觉很好

Error 3  这个问题我没遇上过  说不定有人会遇到呢  所以先放着

如果使用OpenCV 3.2.0,会出现“error: unknowntype name ‘CvCapture’”。

那么,在报错的文件中,#ifdef OPENCV 模块中添加下面这行代码:

#include"opencv2/videoio/videoio_c.h"


问题解决了~


编译

make -j8

./darknet

显示

usage: ./darknet<function> 

 


剩下的  比如说要识别图片还是视频还是外接摄像头实时处理啦  dark net官网都有写  一切的一切看官网 很完美的  我都实现了


您可能感兴趣的与本文相关的镜像

PyTorch 2.5

PyTorch 2.5

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值