写到最前面, 很多网上帖子写一定要先安装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) Dell电脑, 根据开机提示, 大部分是F2进入BIOS选项(抱歉这里没有截图),
(2) 然后进入BIOS设置相关的选项(BIOS …), 第一项有BIOS和UEFI两种模式, 选择开启UEFI模式,
(3) 关闭secure boot选项, 设置开机启动优先项为U盘启动, 重启顺利进入U盘中的Ubuntu系统
(1) 分区的时候选择其它选项
(2) 具体分区:
a. uefi分区 2G 主分区
b. swap分区, 50G 逻辑分区
c. / 分区 150G 主分区
d. /home分区 200G 逻辑分区
(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
(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
这里不建议使用清华源下载, 或者下载旧版本
安装过程中发现旧版本和新版本对~/.bashrc文件的修改方式是不同的
在安装过程中没有提示是否使用conda命令, 默认情况下是无法使用的
bash Anaconda3.......sh(根据自己版本来)
安装注意提示全部选择yes
自己装的Python3.7 版本和CUDA10.2有冲突, 无法正常使用conda命令, 所以建议降版本:
conda install Python=3.6
(1) 删除anaconda3
rm -rf Anaconda3
不要随便使用sudo命令, 尤其是创建编辑和修改文件的时候, 这会改变文件的访问权限
(2) 在环境中删除anaconda3的引用
gedit ~/.bashrc
删除最后与conda有关的字段
(3) source ~/.bashrc
安装官网: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) 安装(看用途, 可以现在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
CUDA的安装建议不要装deb版本, 虽然deb版本不用手动关闭X Server, 对Linux kernel、GCC的版本要求没有run的严格, 但是考虑高概率出现循环登陆的问题, 建议装run版本:
(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)的命令验证是否禁用成功
(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
(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
收工…
(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