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版本會略有不同, 僅供參考!
發佈了412 篇原創文章 · 獲贊 222 · 訪問量 69萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章