当前位置: 首页 > 工具软件 > Titon Toolkit > 使用案例 >

Ubuntu16.04 (TITAN V × 4): Anaconda3+CUDA10.1+cudnn7.5.1+opencv3.4.10+darknet

索卓
2023-12-01

写到最前面, 很多网上帖子写一定要先安装opencv再安装CUDA, 我这里是先安装CUDA再安装opencv的, 我会在装opencv的时候解释原因

一. 资源下载

Ubuntu16.04 desktop版本 提取码: 83it
系统制作软件(U盘):链接: https://pan.baidu.com/s/17JwLFQp576VH0HX9tfizGw 提取码: q5vn
CUDA10.1提取码: g54w
cudnn7.5.1提取码: h8ra
opencv3.4.10 链接: https://pan.baidu.com/s/15eod-x34mziMNfhLMszpLw 提取码: mk74

二. 系统安装与基础设置

1 UEFI 模式开启

(1) Dell电脑, 根据开机提示, 大部分是F2进入BIOS选项(抱歉这里没有截图),
(2) 然后进入BIOS设置相关的选项(BIOS …), 第一项有BIOS和UEFI两种模式, 选择开启UEFI模式,
(3) 关闭secure boot选项, 设置开机启动优先项为U盘启动, 重启顺利进入U盘中的Ubuntu系统

2 一定要装英文系统!!!

(1) 分区的时候选择其它选项
(2) 具体分区:
a. uefi分区 2G 主分区
b. swap分区, 50G 逻辑分区
c. / 分区 150G 主分区
d. /home分区 200G 逻辑分区

3 有线网络连接设置

(1) 右上角有个logo, 编辑连接, 设置ipv4, 选择手动模式, 填写IP\ 网关\ 子网\ DNS
(2) 开启SSH服务, 远程可访问.

安装
(1) sudo apt-get install openssh-server
检查是否成功
(2) sudo ps -e | grep ssh
开启
(3) sudo service ssh start

4 挂载nas网络存储服务器(磁盘阵列)

(1) 安装nfs磁盘管理工具
sudo apt-get install nfs-common
(2) 在Linux下新建一个挂载点(自己创建一个文件夹, 例如/mnt/NAS1)
(3) 手动挂载(IP地址改为自己nas服务器的)
mount -t nfs 192.168.68.1:/share/Public /mnt/NAS1
(3) 随机启动(IP地址换成自己nas服务器的地址)
192.168.68.1:/share/Public /mnt/NAS1 nfs default 0 0

三. Anaconda3 安装

1 官网下载最新版本

这里不建议使用清华源下载, 或者下载旧版本

安装过程中发现旧版本和新版本对~/.bashrc文件的修改方式是不同的

在安装过程中没有提示是否使用conda命令, 默认情况下是无法使用的

2 安装

bash Anaconda3.......sh(根据自己版本来)

安装注意提示全部选择yes

3 查看python版本

自己装的Python3.7 版本和CUDA10.2有冲突, 无法正常使用conda命令, 所以建议降版本:

conda install Python=3.6

4 卸载

(1) 删除anaconda3

rm -rf Anaconda3

不要随便使用sudo命令, 尤其是创建编辑和修改文件的时候, 这会改变文件的访问权限
(2) 在环境中删除anaconda3的引用

gedit ~/.bashrc

删除最后与conda有关的字段
(3) source ~/.bashrc

四. opencv3.4.10 安装

安装官网:https://docs.opencv.org/master/d7/d9f/tutorial_linux_install.html

最关键的是opencv的安装, 坑太多,网上的资源也都是漏洞, 希望这里能找到答案

先来解释为什么觉得CUDA和opencv的安装顺序无所谓:

在安装opencv的时候, 需要cmake, 这里有很多参数可以选择, 其中有一项是WITH_CUDA=(no/off),如果先安装opencv,建议这里选择off, 如果后安装opencv可以选择on, 我的个人理解仅此而已

1 只安装了opencv 没有安装opencv_contrib

方式一

强烈建议能用方式一的尽量使用
(1) 安装(看用途, 可以现在conda创建虚拟环境 conda create -n XXX python=3.6)

conda install -c https://conda.anaconda.org/menpo opencv3

有人说conda安装或者直接pip install python_opencv安装的是阉割版的opencv

但其实安装了之后和按照源码安装在darknet编译的时候遇到的问题是一样的

两种方式我都尝试过, 都能通过测试.

编译darknet遇到的问题后面会写.

(2) 卸载

conda uninstall opencv3

方式二

(1) 将zip文件解压到指定文件夹 anaconda3/opencv-3.4.10
(2)

cd anaconda3/opencv-3.4.10
mkdir build&&cd build

(3) 安装依赖库(这里来自官网)

[compiler] sudo apt-get install build-essential
[required] sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
[optional] sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

(4) cmake

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_PYTHON_EXAMPLES=ON -D PYTHON_DEFAULT_EXECUTABLE=~/anaconda3/bin/python3.6 -D BUILD_opencv_python3=ON -D BUILD_opencv_python2=OFF -D PYTHON3_EXCUTABLE=~/anaconda3/bin/python3.6 -D PYTHON3_INCLUDE_DIR=~/anaconda3/include/python3.6m -D PYTHON3_LIBRARY=~/anaconda3/lib/libpython3.6m.so.1.0 -D WITH_IPP=ON -D INSTALL_CREATE_DISTRIB=ON ..

注意这里要把Python相关的配置填好, 否则安装好的opencv默认是在系统自带Python2.7环境下的
(5) make编译

make -j32(这是开启的进程数,根据自己的电脑配置来)

(6) 安装

sudo make install

(7) 环境配置添加库路径并更新

(1) sudo gedit /etc/ld.so.conf.d/opencv.conf 
//打开后可能是空文件,在文件内容最后添加
/usr/local/lib
(2) sudo ldconfig

(8) 配置bash,执行如下命令

sudo gedit /etc/bash.bashrc  
//在末尾添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
sudo -s
source /etc/profile
sudo updatedb 

(9) 拷贝opencv启用文件到python调用的包中

cp ~/opencv-3.4.10/build/cv2.so(或者是CV2.XXXXXso) ~/anaconda3/lib/python3.6/site-packages/

(10) 测试

cd opencv-3.4.10/samples/cpp/example_cmake 
cmake .
make
./opencv_example

会返回一个左上角有opencv标志的窗口

(11) 卸载
直接删除整个opencv-3.4.10的文件夹
再切换到/usr目录,删除所有opencv相关的文件

sudo find . -name "*opencv*" | xargs sudo rm -rf 

五. CUDA10.1 和 cudnn7.5.1安装

CUDA的安装建议不要装deb版本, 虽然deb版本不用手动关闭X Server, 对Linux kernel、GCC的版本要求没有run的严格, 但是考虑高概率出现循环登陆的问题, 建议装run版本:

1 禁用系统自带的显卡驱动nouveau

(1) 先查看 nouveau 是否被禁用,输入以下命令,若有输出,则说明 nouveau 在运行中

lsmod | grep nouveau

(2) 未禁用的情况下, 修改 /etc/modprobe.d/blacklist.conf 文件, 末尾添加:

blacklist nouveau
options nouveau modeset=0

(3) 更新显卡驱动加载项

sudo update-initramfs –u

(4) 再次输入(1)的命令验证是否禁用成功

2 文本命令行模式运行 runfile 文件安装CUDA

(1) Ctrl + Alt + F1 键进入文本命令行模式,输入用户名和密码

(2) 关闭图像化界面(如果没有lightdm图形化界面管理工具, 退出命令行模式 Ctrl + Alt + F7, 自行安装)

sudo service lightdm stop

(3) cd 到 runfile 文件保存的路径,进行安装

sudo sh cuda_10.1.168_418.67_linux.run --no-opengl-libs

注意参数, cuda和opencv都是调配GPU的底层库, 但是cuda只针对NVIDIA显卡(除了一些老N卡), OpenCL 是通用的框架, 性能稍差一点.
(4) 进入到安装环节, 选择accept安装协议, 接下来有一系列安装选项(实例等, 默认都是勾选的(就是前面有❌))直接安装就行了

(5) 重新进入桌面

sudo service lightdm start

(6) 设置环境变量(如果没有可视化界面, 就用vim吧)

sudo gedit /etc/profile
sudo gedit ~/.bashrc

profile 和 ./bashrc 末尾都加入两行(这里是64位系统, 32位的将lib64改为lib)

export PATH=/usr/local/cuda-10.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

(7) 重启 reboot

(8) 验证驱动版本

cat /proc/driver/nvidia/version 

验证CUDA Toolkit

nvcc -V

查看CUDA、显卡和驱动信息

nvidia-smi

(9) 编译 cuda 提供的 samples

cd /home/xxx/NVIDIA_CUDA-10.1_Samples
make

测试其中的一个实例

cd /home/lxxx/NVIDIA_CUDA-10.1_Samples/bin/x86_64/linux/release
./deviceQuery

如果显示 …PASS
恭喜!!!
(10) CUDA卸载

sudo /usr/local/cuda-10.1/bin/cuda-uninstaller
sudo /usr/bin/nvidia-uninstall

如果找不到uninstaller文件, 暴力卸载

sudo apt-get remove cuda*

sudo apt-get remove --purge cuda*

sudo apt-get update

cd /usr/local/

sudo rm -r cuda-10.1

3 cudnn安装

(1) 进入cudnn解压后的cuda目录

sudo cp lib64/libcudnn* /usr/local/cuda-10.1/lib64/
sudo cp include/cuDNN.h /usr/local/cuda-10.1/include/

(2) 更新cudnn库文件的软链接

cd /usr/local/cuda-10.1/lib64/
sudo chmod +r libcuDNN.so.7.5.1
sudo ln -s libcuDNN.so.7.5.1 libcuDNN.so.5
sudo ln -s libcuDNN.so.7.5.1 libcuDNN.so
sudo ldconfig

注意, 按照这种方式安装, 是没有cudnn的测试实例的
(3) 查看cudnn版本

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

收工…

六. darknet 安装

(1) git下来darknet源码

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

(2) 编辑Makefile文件

cd darknet

‘’’
GPU=0 ⇒ GPU=1
CUDNN=0 ⇒ CUDNN=1
OPENCV=0 ⇒ OPENCV=1


NVCC=/usr/local/cuda-10.1/bin/nvcc


下面还有对cudnn和cuda的路径引用
都替换成自己的安装路径
‘’’
(3) 编译

make -j32

ok, 这里可能会出现关于cudnn或者opencv的问题
分别提示类似
a. 无法找找libcudnn.so
b. ./src/image_opencv.cpp:12:1: error: ‘IplImage’ CvMat 之类的错误(其实源码安装和conda安装都会报这个错误)
这是和opencv版本有关的, 其他版本可能没有这个问题
解决
a.的问题是安装cudnn的时候,没有生成软链接
b. 修改/darknet/src/image_opencv.cpp文件

IplImage src= image;
改为
IplImage* src = (IplImage*)&IplImage(image);

(4) 重新编译

 make clean && make -j32
 类似资料: