AI笔记: python、opencv、tensorflow、cuda&cudnn软件环境的搭建

关于各个软件环境的说明

  • python是深度学习使用的一门语言,封装比较高级,语言表达很简洁,实现复杂网络模型的时候比较易读,所以不用偏底层的c++语言, 目前选择的版本是3.6或3.7
  • opencv是python的一个库, 什么是库呢?库是集合了同一类函数的集合。opencv就是图像处理, 视频处理的库
  • anaconda 可以理解为一种容器,可以和docker以及nodejs的nvm做下对比, 在我们系统上有很多软件会因不同版本可能产生的不兼容, anaconda隔离了版本之间的不兼容,是个独立容器, 安装完成后自带python等软件
  • 备注:anaconda如果下载的默认是3.x版本的python, 那么在anacoda虚拟环境中安装软件的时候, 使用pip即可, 如果使用pip3的话装的软件可能会不在conda list的软件列表中,在虚拟环境下, python就是python3命令, pip就是pip3命令, 退出虚拟环境即可恢复原配置

Anaconda的安装

1 ) 下载和安装

  • 在搜索引擎搜索anaconda进入它的官网,点击download,选择版本下载,如:
  • Windows下载:https://repo.anaconda.com/archive/Anaconda3-2019.10-Windows-x86_64.exe
  • Mac下载:https://repo.anaconda.com/archive/Anaconda3-2019.10-MacOSX-x86_64.pkg
  • Linux下载:https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86_64.sh
  • 安装时注意选项和权限的相关问题

2 )相关常用命令

  • 查看安装的软件集合 $ conda list
  • 在用户目录下执行 $ conda activate 可以看到前面多个base的提示,这里是一个总的虚拟环境,这个命令执行默认是在用户目录下操作,在其他目录下执行会报错
  • 创建其他虚拟环境 $ conda create -n tf1 python==3.7
    • 这里指定其他虚拟环境的名称为:tf1
    • python的环境是3.7的版本
  • 退出虚拟环境 $ conda deactivate tf1
  • 删除虚拟环境 $ conda remove tf1 --all
  • 查看当前存在的虚拟环境 $ conda env list 或 $ conda info -e
  • 更多使用方式请自行搜索

3 ) 关于jupyter notebook的说明

  • anaconda的安装后会自带jupyter notebook工具
  • 在使用$ jupyter notebook 的时候,$ pwd 是什么,当前的工作空间就是什么

Cuda&Cudnn的安装(N卡选择,推荐安装)

1 ) cuda的安装

  • cuda是nvidia厂商提供的运算平台,用于加速的流处理器模块是软件和硬件的集合,用显卡来加速运算
  • 首先确认自己的电脑的显卡是否为N卡, 如果不是可以跳过此步骤
  • 通过搜索引擎,进入cuda的官网选择版本, 以下以windows作为例子:
    • cuda官网找到 windows 64 10 exe(local)的版本进行下载, 注意cuda版本和tf是有对应关系的,下载错误可能存在问题
    • 下载安装后选择自定义安装, 只选择CUDA, 其他三项不选勾掉即可,要记住安装的位置路径,用于之后cudnn文件的拷贝

2 ) cudnn的安装

  • cudnn是nvdia提供的额外服务,是用来加速深度学习模块的工具,需要官网注册开发者的身份再来进行下载
  • 注册开发者并且登录后,访问:developer.nvidia.com/rdp/cudnn-download
  • 与cuda版本对应,选择 cudnn library for windows10, 具体版本也选择10.0的
  • cudnn下载好之后直接解压处理,是个压缩包, 解压后直接复制,按照同目录粘贴过去即可
  • cuda的目录一般在C/program files/Nvidia GPU computing Toolkit/cuda/v10.0
  • 将cudnn中对应的文件完全粘贴替换即可!

3 ) 测试是否安装成功

  • 重新打开一个新的终端:$ nvcc -V
  • 输出类似下面的信息即成功!
    nvcc: NVIDIA (R) Cuda compiler driver
    Copyright (c) 2005-2018 NVIDIA Corporation
    Built on Sat_Aug_25_21:08:04_Central_Daylight_Time_2018
    Cuda compilation tools, release 10.0, V10.0.130
    

Opencv的安装

1 )安装

  • 进入conda的虚拟环境中$ conda activate 再进行安装,执行下面的命令
  • $ pip install opencv-python==3.4.2.16 -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com
  • $ pip install opencv-contrib-python==3.4.2.16 -i https://pypi.doubanio.com/simple/
  • - i 参数表示使用其他源
  • --trusted-host 参数表示信任该源的主机地址
  • 上面两条命令不可顺序颠倒,否则会产生覆盖和报错, 在安装opencv-python的时候就添加了trusted-host,所以下面的opencv-contrib-python不用添加了
  • opencv-python的版本更新到了4.x, 更新版本后因版权的缘故将sift函数被删除了,此处我们使用3.4的版本

2 ) 测试是否安装成功

  • 在python环境中进行测试 $ python
    >>> import cv2 # 这一步不报错,说明opencv安装成功
    >>> sift = cv2.xfeatures2d.SIFT_create() # 这一步不报错说明contrib包安装成功
    

TensorFlow的安装

1 ) 分类安装

  • 进入conda安装tensorflow, $ conda activate tf1 (不加tf1默认是base, tf1是我创建的虚拟环境)
  • $ pip install tensorflow==1.14 这个是CPU的版本,没有N卡的用户直接安装, 一些A卡的Mac用户也可以选择此项
  • $ pip install tensorflow-gpu==1.14 这个是GPU的版本,比较麻烦,先安装cuda和cudnn, 我们之前已经配置安装了
  • 如果下载太慢的话可以使用国内的源,这里提供一个清华的源:后加 -i https://pypi.tuna.tsinghua.edu.cn/simple 参数即可, 下载速度飞快
  • 然后发生了一个错误!
    ERROR: THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE. If you have updated the package versions, please update the hashes. Otherwise, examine the package contents carefully; someone may have tampered with them.
    
  • 解决错误:$ pip install --upgrade tensorflow-gpu==1.14 -i https://pypi.tuna.tsinghua.edu.cn/simple
    • 网上找到的解决方案, 添加了 --upgrade 参数
    • 这里只能重新下载
    • 建议一开始就使用这条命令来下载

2 ) 测试tensorflow是否安装成功

  • 在conda虚拟环境中,进入python环境 $ python
    >>> import tensorflow as tf
    >>> greeting = tf.constant("Hello tensorflow!")
    >>> ses = tf.Session() # 启动一个会话
    >>> res = ses.run(greeting) # 使用会话执行greeting计算模块
    >>> print(res)
    >>> ses.close()
    
  • 通过屏幕信息可以查看到在启动会话后的GPU信息,如:
    2020-02-21 08:37:07.201020: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library nvcuda.dll
    2020-02-21 08:37:07.361835: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1640] Found device 0 with properties:
    name: GeForce RTX 2080 major: 7 minor: 5 memoryClockRate(GHz): 1.59
    pciBusID: 0000:01:00.0
    2020-02-21 08:37:07.366723: I tensorflow/stream_executor/platform/default/dlopen_checker_stub.cc:25] GPU libraries are statically linked, skip dlopen check.
    2020-02-21 08:37:07.371966: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1763] Adding visible gpu devices: 0
    2020-02-21 08:37:07.376013: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
    2020-02-21 08:37:07.383803: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1640] Found device 0 with properties:
    name: GeForce RTX 2080 major: 7 minor: 5 memoryClockRate(GHz): 1.59
    pciBusID: 0000:01:00.0
    2020-02-21 08:37:07.388199: I tensorflow/stream_executor/platform/default/dlopen_checker_stub.cc:25] GPU libraries are statically linked, skip dlopen check.
    2020-02-21 08:37:07.393190: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1763] Adding visible gpu devices: 0
    2020-02-21 08:37:08.506285: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1181] Device interconnect StreamExecutor with strength 1 edge matrix:
    2020-02-21 08:37:08.509243: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1187]      0
    2020-02-21 08:37:08.510397: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1200] 0:   N
    2020-02-21 08:37:08.514244: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1326] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 6257 MB memory) -> physical GPU (device: 0, name: GeForce RTX 2080, pci bus id: 0000:01:00.0, compute capability: 7.5)
    
  • 其他问题:测试时,如果出现下列错误信息,是因为cuda的版本和tf的版本不兼容,如:cuda10.2与tf1.14, 建议cuda回退到cuda10或升级tf到相关版本(具体版本没有试过>1.14):
    ImportError: Could not find 'cudart64_100.dll'. TensorFlow requires that this DLL be installed in a directory that is named in your %PATH% environment variable. Download and install CUDA 10.0 from this URL: https://developer.nvidia.com/cuda-90-download-archive
    
    • 网上有人通过在bin目录下的cudart64_102.dll文件改名为cudart64_100.dll这样也能解决,但是这样很可能会有潜在的问题
    • 上面的错误信息中的链接: https://developer.nvidia.com/cuda-90-download-archive, 下载的是9版本的cuda, 所以也不推荐
    • cuda历史版本链接:https://developer.nvidia.com/cuda-toolkit-archive 找到对应的10.0版本重新下载安装即可

3 ) 相关说明

  • 我们的深度学习,神经网络主要用到的数据是图片和视频,拿图片来说,在电脑储存形式是很多像素点形成的矩阵,每个像素点是0-255的数字,再做图像处理的时候实际上是在做矩阵的运算,可以认为它是一个并行化程度很高的,同时运行很多个小的计算, 如果使用CPU进行加速的时候, CPU有16核、最多32核,一次最多只能执行32次计算。

  • 而在显卡中,GPU有很多的计算单元, 可以同时进行几千个运算, 如果是N卡还可以使用加速器, 并且兼容cuda,如果兼容的话, 那么就安装这个GPU版本, 如果显卡是集成显卡, 直接选择CPU版本, 如果速度慢的话,可以使用云服务器来跑,有很多厂商提供相关服务

  • 与tf框架类似框架:mxnet pytorch等

    • tensorflow 是谷歌出品的框架, 便于部署,工业界应用广泛,已经升级到2.x版本,但是之前很多项目是基于1.x的
    • pytorch 便于使用,学术界用于快速实现自己的想法
    • mxnet 使用率的尚不广泛

Pycharm的安装

  • 下载pycharm选择community社区版,主要是免费,pycharm功能很全面
  • New Project / Pure Python / location 自己选地址 / Existing interpreter 选择在anoconda中配置的虚拟环境下的东西
  • 选择Conda Environment ,默认显示刚才已安装的python解释器了,Make available to all projects,点击创建即可!
  • 等Pycharm底下的indexing 创建索引更新等操作结束后, 点击 ADD CONFIGURATION… 配置 点击 + 选择python, 默认解释器即可!
  • 后期再进入项目的时候,直接点击settings设置找到Project/Project Interpreter下配置即可!
  • 其他注意事项:在项目面板中新建python文件时需要特别注意不要使用关键名,如:opencv,容易发生循环调用冲突导致的错误
  • 不同的pycharm版本会略有不同, 仅供参考!

你可能感兴趣的:(AI,Python)