项目环境配置:Ubuntu16.04安装显卡驱动、CUDA、CUDNN、为python3编译带cuda等的opencv、pytorch
注:笔记本带有显卡时,在Ubuntu系统下需要安装显卡驱动、CUDA、CUDNN、tensorflow-gpu、pytorch-gpu、编译opencv等这几者需要版本等要求对应。(opencv的编译选项中的CUDA需要匹配安装的cuda的算力,pytorch需根据对应的CUDA选择下载不同的下载命令)
一、用U盘安装ubuntu16.04、16.06系统
根据电脑位数下载ubuntu16.04(可以安装ubuntu18.04,因为其python3的默认版本为python3.6,但是可能运行雷达程序会出问题,因为gcc版本可能过高等原因):(梓豪说16.06装起来很舒服,少了很多bug,装好anaconda就可以使用navigator!!!)
第二次在实验室电脑R720装的是ubuntu18.04(1060GPU),18.04最好使用系统设置里面来安装显卡驱动,因为没有lightdm
http://releases.ubuntu.com/16.04/
一般选择国内的源里面的:https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/16.04/
ubuntu下制作ubuntu16.04的系统启动盘(不需要别的软件,直接格式化优盘,):
https://jingyan.baidu.com/article/5d6edee2c65c2a99eadeecd4.html
# 格式化优盘后
sudo fdisk -l
# 会显示格式化的盘符,下面的/dev/sdc2需要替换成格式化的优盘的盘符
mkfs -t ntfs /dev/sdc2
# 从dash面板搜索qi,可以看到启动盘创建器,点击后选择iso镜像和优盘,等待完成即可
windows下制作ubuntu16.04的优盘启动盘:软件名: Universal-USB-Installer
二、修改用户密码
sudo su
sudo passwd [username]
三、安装显卡驱动
# 显卡驱动网址
https://www.geforce.cn/drivers
# CUDA网址
https://developer.nvidia.com/cuda-toolkit-archive
# CUDNN网址
https://developer.nvidia.com/rdp/cudnn-archive
2、打开终端,首先卸载一下之前安装的(之前没有装过的就不用管了,直接从下一步开始)
$ sudo apt-get --purge remove nvidia-*
3、打开blacklist:
$ sudo gedit /etc/modprobe.d/blacklist.conf
# 在最后添加几行:
blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist nvidiafb
blacklist rivatv
# 然后保存退出。
#这个地方容易出现的问题是明明把nouveau添加到了blacklist里,安装驱动的时候还是会出现这个错误,后面会讲解决办法。
4、 接下来是针对nouveau的双重保险:
# 1、在终端运行
$ lsmod | grep nouveau
# 2、如果没有输出,可以忽略下面这一段,直接开始安装1080的驱动,如果仍有输出,终端输入:
$ sudo gedit /etc/modprobe.d/blacklist-nouveau.conf
# 3、直接写入下面命令,blacklist nouveau 是将Ubuntu自带的显卡驱动加入黑名单
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
# 保存关闭
# 4、再尝试,使禁用 nouveau 真正生效终端输入 : sudo update-initramfs -u
$ sudo update-initramfs -u
$ lsmod | grep nouveau
#如果这样还有输出,reboot一次
切记不要物理重启!!!如果物理重启报错:"Welcome to emergency mode"等无法开机
则按照指示,执行:
$ journalctl -xb
然后在输出的文件中查找受损的分区
/fsck fail
可以看到显示为红色的UUID,然后执行下面命令看知道对应的盘符
$ sudo blkid
# 可以通过UUID得到对应的盘符,然后执行fsck校验并修复文件
$ fsck -y /dev/sda11 #将/dev/sda11改为自己对应的盘符
$ sudo reboot
5、开始安装显卡驱动
# 1、terminal查询集成显卡和独立显卡
$ lspci | grep -i vga
$ lspci | grep -i 3d
# 2、开机时进入BIOS,)禁用自己的secure boot,也就是设置为disable,具体的进入自己bios中找一下,一般在security或者boot里面
# 3、进入系统后,运行下面两行命令,让电脑自己安装合适的显卡驱动
$ ubuntu-drivers devices
$ sudo ubuntu-drivers autoinstall
# 4、重新启动,然后在应用中找到nvidia setting,查看显卡驱动是否安装成功
四、禁止系统自动更新及内核更新
此时系统的显示会恢复正常
https://blog.csdn.net/ezhchai/article/details/80525207
1、禁止系统自动更新
方法一:图形用户界面
方法二、 修改系统配置文件
法二:# dpkg -l是列出所有安装的软件,第一行是ii 第一个i表示desired status为安装, 第二个i表示current status.
# **linux-image** 是linux内核的名称$ sudo dpkg --get-selections |grep linux-image #查看所有已安装及未安装内核的信息
$ uname -a #查看正在使用的内核
$ sudo apt remove linux-image-4.15.0-39-generic #删除当前内核
#禁止内核更新,需要时间检验 例如:$ sudo apt-mark hold linux-image-4.15.0-38-generic
$ sudo apt-mark hold linux-image-x.xx.x-xx-generic
$ sudo apt-mark hold linux-image-extra-x.xx.x-xx-generic
# 如果需要恢复原来的设定的话即允许更新内核,执行如下命令即可:
$ sudo apt-mark unhold linux-image-x.xx.x-xx-generic
$ sudo apt-mark unhold linux-image-extra-x.xx.x-xx-generic
注:
可能会出现重启进不去的情况,有可能是系统自己升级了内核,需要到Advance中选择合适的内核进去
如何删除linux中的旧内核:https://www.linuxidc.com/Linux/2015-09/123227.htm
五、更改ubuntu16.04的源
只有Nvidia的显卡才可以用CUDA和CUDNN
# 1、cuda下载网址,选择历史版本click legacy releases
https://developer.nvidia.com/cuda-downloads
# 2、在下载的文件夹打开terminal,输入对应的:
$ chmod a+x cuda_9.0.176_384.81_linux.run
$ sudo ./cuda_9.0.176_384.81_linux.run
# 3、之后就会开始安装,按q退出说明文件,然后按指令输入就行,一般是yes
# 4、有一个关键是会让你选择是否安装Graphics Driver for Linux-x86_64:XXXX版本,
# 这个地方必须选择no!否则会覆盖之前的驱动
# 5、安装完毕之后,声明环境变量,终端输入:,/etc/profile中设定的变量(全局)的可以作用于任何用户,有些教程是$ sudo gedit ~/.bashrc
#而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系.
$ sudo gedit /etc/profile
# 6、在打开的文件最后加上:
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
# 10.0的话加上如下命令
export CUDA_HOME=/usr/local/cuda-10.0
export PATH=$PATH:$CUDA_HOME/bin:${PATH}
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
# 7、保存并退出
$ source /etc/profile
# 8、验证显卡驱动版本
$ cat /proc/driver/nvidia/version
# 9、验证CUDA版本
$ nvcc -V
# 10、测试cuda的样例
$ cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
$ sudo make
$ ./deviceQuery
2、安装cudnn
(1)下载cudnn有两种方法(别选版本太高的),法一需要登录,现在可以用微信登录了,优势是可以直接点击下载;法二不需要登录,但是不能直接点击,需要右击save...或者复制链接,用迅雷等工具下载,但是下载的不是正常的压缩包,所以不推荐法二。
# 法一:对应cuda10.0的cudnn7.4.2网址(需要登陆,现在可以微信扫码登录):
https://developer.nvidia.com/rdp/cudnn-archive
# 法二:绕过登录,下面是cudnn各个版本的下载网站,不能直接点,需要右击复制链接,或者存储为,选择对应的cuda的cudnn版本下载!!!
https://developer.nvidia.com/rdp/cudnn-archive#a-collapse51b
切记选择 for linux(相比于 for ubuntu 16.04,这个是最全的)!!!

注:适合某个CUDA版本的会有多个cudnn版本都可以,但是运行的时候可能出问题,所以一般不下载太新的cudnn版本
别人的教程有遇到过问题:
一、安装Anaconda3
# 1、下载Anaconda3
# 2、进入到下载文件夹,开始安装anaconda3,根据提示,一路yes
$ cd Downloads/
$ bash Anaconda3-5.2.0-Linux-x86_64.sh
# 3、验证是否安装anaconda成功,下面命令二选一
$ anaconda -V
$ conda --version
# 4、如果未找到命令,说明anaconda3没有将路径配置到系统环境变量中
$ echo 'export PATH="~/anaconda3/bin:$PATH"' >> ~/.bashrc
$ source ~/.bashrc
# 4、或者设置Anaconda环境变量
sudo gedit ~/.bashrc
在其最后一行添加命令:
export PATH="/home/neousys/anaconda3/bin:$PATH"
使其生效
source ~/.bashrc
# 5、再次验证是否成功安装anaconda,还不可以的话就重启一下,shutdown -r now
$ anaconda -V
# 6、为了避免可能发生的错误, 我们可以在命令行输入:conda upgrade --all
先把所有工具包进行升级。
$ conda upgrade --all
# 进入安装的环境env——base或创建的py36
$ source activate base/py36二、子目录及主目录文件夹全部更改权限:
chmod -R 700 Document/三、安装并打开Anaconda-navigator界面,注意点击Lock to Launcher
# 法一
$ source ~/anaconda3/bin/activate root
$ anaconda-navigator
# 法二
$ conda install -c anaconda anaconda-navigator
$ anaconda-navigator四、安装环境
# 1、安装pytorch,需要去pytorch选择选项得到对应的conda安装命令
# 2、安装tensorflow-gpu,先检查pip是否是anaconda的pip:pip -V
# 如果想装caffe的话,必须先装caffe再装tensorflow,参考https://cuijiahua.com/blog/2017/12/dl_1.html
$ pip -V
# 然后安装tensorflow-gpu
pip install tensorflow-gpu
# 3、安装opencv,参考https://blog.csdn.net/qq_24032231/article/details/84062936
#下面带--c是自编译安装的意思,千万别直接conda install opecv3,因为那是安装别人编译好的
conda install --channel https://conda.anaconda.org/menpo opencv3
# 如果之前在anaconda下安装的失败了,卸载参考https://blog.csdn.net/qq_24032231/article/details/84062936
# 查看opencv是否装好
anaconda show menpo/opencv3
或者:
import cv2
cv2.__version__
# 如果运行cv2,报以下错误
ImportError: libSM.so.6: cannot open shared object file: No such file or directory
ImportError: libXrender.so.1: cannot open shared object file: No such file or directory
ImportError: libXext.so.6: cannot open shared object file: No such file or directory
# 解决方案:安装对应的软件依赖包
apt-get install libsm6
apt-get install libxrender1
apt-get install libxext-dev五、通过anaconda来装
###下载requirements.txt中的所有包
pip install -r requirements.txt
# 1、terminal输入命令
$ sudo add-apt-repository ppa:jonathonf/python-3.6
# 2、按Enter确认,并输入:
sudo apt-get update
sudo apt-get install python3.6
# 3、按y确认
# 4、调整Python3的优先级,使得3.6优先级较高
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2
# 5、更改默认值,python默认为Python2,现在修改为Python3
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150
# 6、更新pip
$ sudo apt-get install python3-pip
# 7、检查
python3 -V
# 8、如果要切换到Python2,执行:
$ sudo update-alternatives --config python
九、为python3.6编译带cuda的opencv(通过编译选项,也可以为C、C++、Java编译,也可以编译cuda需知道算力)
1、当在conda环境下通过conda install opencv时,安装的又是阉割版的opencv,有的模块根本没法用.后来google后,了解到这是涉及到opencv作者的版权等种种问题,所以把其他的函数模块封装到了contrib中.
这样就又带来另一个问题,在安装了阉割版opencv的基础上再安装contrib容易导致很复杂的问题.从源码编译opencv又会默认编译到系统环境下的python2.7中.这样在系统环境下工作和在conda环境下工作进行切换,又得通过nano ~/.bashrc更改环境变量,很麻烦.链接:https://www.jianshu.com/p/c42fc8702f2b2、pip可以安装的opencv-python安装并不依赖opencv,只是封装了opencv的Python API,一般情况下也够用。但是如果准备安装完整版本的opencv,这里比较建议将opencv-python卸载,以免之后产生一些不必要的报错3、之前已经安装了OpenCV3.4.3,但是这个版本好像和CUDA9.0不能兼容,导致cuda的模块无法编译,所以这里先把它卸载掉,然后安装opencv3.4.0
https://www.cnblogs.com/arkenstone/p/6490017.html
https://blog.csdn.net/heiheiya/article/details/82590601
https://www.cnblogs.com/beihaidao/p/6773595.html?utm_source=itdadao&utm_medium=referral
装之前必须看一下这个网址:https://blog.csdn.net/dulingwen/article/details/90607767
因为编译的时候选择编译了python接口,所以不需要pip3 install opencv-python或者在anaconda中安装opencv,只需要将~/opencv/build/lib/python3/cv2.cpython-37m-x86_64-linux-gnu.so复~/anaconda3/lib/python3.7/site-packages/文件夹中
如果出现no module named cv2,那就把cv2.so拷到anaconda/lib/python2.7/site-packages下
1 先用which python找到python的安装目录(每个人的不同,可以自行更改),只需要把opencv编译的cv2.so和原始的cv.py拷贝到python安装目录下的site-packages路径下面即可。
例如:
cp opencv_dir/build/lib/cv2.so ENV/lib/python2.7/site-packages/
cp opencv_dir/modules/python/src2/cv.py ENV/lib/python2.7/site-packages/
有的也是复制到这,因为python安装的位置不同
/usr/local/lib/python2.7/site-packages
2 测试python例子
在opencv_dir/samples/python2可以找到python的测试用例,同理可以运行那些绿色的可执行文件,例如:
./find_obj.py
安装Anaconda3后,如果使用python和python3,那么默认变为Anaconda3的python
这时如果想切换默认python为原始独立python,
1. sudo gedit ~/.bashrc
2. 添加 alias python3=’/usr/bin/python3.5‘
3. source ~/.bashrc
1、github网站上下载3.4.0版本的opencv和opencv_contrib包
最开始安装的3.4.3版本,但是不兼容。卸载已经安装的opencv参考: https://blog.csdn.net/heiheiya/article/details/82590601
https://github.com/opencv
# 1、下载,除了从github上直接下载,也可以git clone或者
$ wget https://github.com/opencv/opencv/archive/3.4.0.zip
$ wget https://github.com/opencv/opencv_contrib/archive/3.4.0.zip
# 2、解压压缩包
$ tar -zxvf opencv...tar.gz
# 或者
$ unzip opencv-3.4.0.zip
# 将contrib解压到opencv文件夹下
$ unzip opencv_contrib.3.4.0.zip -d opencv-3.4.0/
2、安装依赖
$ sudo apt-get install build-essential
$ sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev qt5-default
$ sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev # 处理图像所需的包
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev # 2、3和上面重复了
$ sudo apt-get install libxvidcore-dev libx264-dev # 处理视频所需的包
$ sudo apt-get install libatlas-base-dev gfortran # 优化opencv功能
$ sudo apt-get install ffmpeg
3、编译opencv并配置环境变量(配路径参考:https://blog.csdn.net/heiheiya/article/details/82497211)
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv4.1.0 -D OPENCV_EXTRA_MODULES_PATH=/home/y760/Downloads/opencv-4.1.0/opencv_contrib-4.1.0/modules -D CUDA_CUDA_LIBRARY=/usr/local/cuda/lib64/stubs/libcuda.so -D CUDA_ARCH_BIN=6.1 -D CUDA_ARCH_PTX="" -D WITH_CUDA=ON -D WITH_TBB=ON -D PYTHON_DEFAULT_EXECUTABLE=/usr/bin/python3 -D BUILD_opencv_python3=ON -D BUILD_opencv_python2=OFF -D PYTHON3_EXCUTABLE=/usr/bin/python3 -D PYTHON_INCLUDE_DIR=/usr/include/python3.6m -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 -D WITH_NVCUVID=ON -D BUILD_opencv_cudacodec=OFF -D BUILD_TIFF=ON ..
修改完路径后从mkdir build开始重新编译
装完后测试参考:https://blog.csdn.net/cocoaqin/article/details/78163171
# 好像第九步编译完opencv,不用install opencv-python就可以在python中import cv2
$ pip3 install opencv-python# 安装制定版本的opencv-python,如果直接运行不可以就需要先下载whl了
$ pip3 install opencv_python‑3.4.0‑cp36‑cp36m‑linux_amd64.whl
# 上述命令有时会报错
opencv_python‑3.2.0‑cp35‑cp35m‑win_amd64.whl,它的三个关键字是(‘cp35', ‘cp35m', ‘win_amd64'),但我电脑里的pip并没有与之完全对应的,因而出现了不supported的现象。解决方案当然就是更新pip了。使用更新指令python -m pip install --upgrade pip就可以解决问题了。
import cv2 img = cv2.imread("./cat.jpg")
cv2.namedWindow("Image")
cv2.imshow("Image", img)
cv2.waitKey (0)
cv2.destroyAllWindows()
(base) nihao@nihao-Nuvo-6108GC:~/Desktop$ python cat.py
OpenCV(3.4.1) Error: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script) in cvNamedWindow, file /opt/conda/conda-bld/opencv-suite_1527005194613/work/modules/highgui/src/window.cpp, line 618
Traceback (most recent call last):File "cat.py", line 4, in cv2.namedWindow("Image")
cv2.error: OpenCV(3.4.1) /opt/conda/conda-bld/opencv-suite_1527005194613/work/modules/highgui/src/window.cpp:618: error: (-2) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function cvNamedWindow
但是上面的安装可能不能读取视频,需要下述指令
sudo apt-get install openssh-server
测试是否安装成功
ps -s | grep ssh
启动ssh:
/etc/init.d/ssh start
查看IP
ifconfig
外部链接
ssh parallels@10.211.55.5
链接成功的效果:
cd /
ls
十二、 安装 Pycharm
https://blog.csdn.net/qq_15192373/article/details/81091278
https://blog.csdn.net/qq_31531635/article/details/79963188
https://blog.csdn.net/zzc15806/article/details/81669591
1、下载
从官网(http://www.jetbrains.com/pycharm/download/#section=linux)下载Community版 for Linux。并将下载好的文件copy到想安装的目录下。
2、安装
$ cd home/zhichao/pycharm
$ tar -xfz pycharm-community-2017.1.4.tar.gz
$ cd pycharm-community-2017.1.4/bin
$ ./pycharm.sh出现Complete-Installation提示框,如图5,如果需要导入之前安装版本的配置的话,就选第一个,没有就选第二个。所以这里选第二个,直接点OK,如图5;如果需要保留原来版本的配置,则选择第一个,否则选择第二个,这里我选择第二个。 参考:https://blog.csdn.net/qq_15192373/article/details/81091278
然后将说明翻到最下面,选择Accept。
安装完成后,会弹出PyCharm Initial Configuration框,PyCharm初始化配置。
Keymap scheme:键盘方案,选择Eclipse,意思是设置Pycharm为Eclipse快捷键
ide theme:皮肤主题,默认Intellij。可根据自己喜欢选其他的
Editor colors and fonts:编辑器的主题,可以点击下面的“Click to hide preview”进行预览,我这里选择的是 Darcula
然后下面的Create desktop entry 默认打勾就行了
最后点击OK,完成设置,这样pycharm就安装好了。然后就是配置pycharm
1. 点击File-Default Settings-Project Interpreter
2. 选择Project Interpreter最右边的设置,选择Add..,选择System interpreter,右边的路径选择anaconda3/bin/python3.6,选择OK
3. 选择绿标“+”号,搜索pytorch,然后出现pytorch-gpu,选择Install Package
4. 搜索opencv,然后出现opencv,选择Install Package
5. 搜索tensor flow,然后出现tensorflow-gpu,选择Install Package
---------------------
作者:丶Minskyli
来源:CSDN
原文:https://blog.csdn.net/qq_31531635/article/details/79963188
版权声明:本文为博主原创文章,转载请附上博文链接!
$ sudo pip uninstall tensorflow
$ sudo pip install tensorflow-gpu #for python2.7 GPU support
十三、Ubuntu连接网线却无法连接网络的问题
问题:右上角网络那里点开,显示的device not managed
解决:参考 https://blog.csdn.net/s_e_itachi/article/details/79605679
# 1、打开终端
$ sudo vi /etc/NetworkManager/NetworkManager.conf
# 2、修改[ifupdown]中的managed的值,将false改为true
# 3、保存关闭,重启电脑即可
十四、运行程序报的warning(未解决)
warning:
/home/neousys/.local/lib/python3.6/site-packages/sklearn/utils/linear_assignment_.py:21: DeprecationWarning: The linear_assignment_ module is deprecated in 0.21 and will be removed from 0.23. Use scipy.optimize.linear_sum_assignment instead.
DeprecationWarning)
https://www.programcreek.com/python/example/91391/sklearn.utils.linear_assignment_.linear_assignment
https://docs.scipy.org/doc/scipy-0.18.1/reference/generated/scipy.optimize.linear_sum_assignment.html
https://www.programcreek.com/python/example/97225/scipy.optimize.linear_sum_assignment
问题:
Scanning dependencies of target opencv_cudev
make[2]: *** No rule to make target '/usr/lib/x86_64-linux-gnu/libGL.so', needed by 'lib/libopencv_cudev.so.3.4.0'. Stop.
make[2]: *** Waiting for unfinished jobs....
https://blog.csdn.net/fb_941219/article/details/83549720
十五、编写C++项目的OPENCV程序
https://blog.csdn.net/DumpDoctorWang/article/details/82259357
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
