tensorflow2.4與目標檢測API在3060顯示卡上的配置安裝

Deceiver_Ker發表於2022-03-24

目前,由於3060顯示卡驅動版本預設>11.0,因此,其不能使用tensorflow1版本的任何介面,所以學習在tf2版本下的深度學習目標檢測是很有必要的,而且此配置過程同樣適用於任何30系顯示卡配置tf2環境。

一般配置Anaconda比較簡單,這裡便跳過,選用的anaconda版本為Anaconda3-2020.11-Windows-x86_64,可以在清華映象官網上下載。

1,配置安裝conda

本次選用的tensorflow版本為2.4,cuda為11.0,cudnn為8.0,對應python為3.7

首先設定虛擬環境,輸入如下指令:

conda create -n tensorflow24gpu python=3.7

進入環境:

conda activate tensorflow24gpu

離開環境:

conda deactivate

2,安裝cuda與cudnn

輸入如下指令安裝cuda

conda install cudatoolkit=11.0

輸入如下指令安裝cudnn

conda install cudnn==8.0.5.39 -c conda-forge

如下輸入指令安裝tensorflow2.4.0

pip install tensorflow==2.4.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

之後執行測試程式,在某一個目錄下新建一個test.py檔案,並在GPU環境目錄下輸入python test.py。其中內容如下,輸出GPUTrue則安裝正常,test.py程式碼如下

import tensorflow as tf
version = tf.__version__
gpu_ok = tf.test.is_gpu_available()
print("tf version:",version,"\nuse GPU",gpu_ok)

3,tensorflow目標檢測API配置執行

去官網https://github.com/tensorflow/models/tree/archive下載models-archve並解壓檔案到本地硬碟下的某一個碟符下,這裡我解壓到D盤,注意,解壓 路徑不要有中文

配置protoc,下載網址[https://github.com/protocolbuffers/protobuf/releases],這裡我下載的為3.4.0版本win32位,解壓後(位置任意)。接著將bin資料夾下的protoc.exe複製到C:\Windows即可

之後,在models-archive\research\目錄下開啟命令列視窗,輸入:

protoc object_detection/protos/*.proto --python_out=.

若無錯誤,程式將不返回任何資訊

新增環境變數。在Anaconda安裝目錄Anaconda\Lib\site-packages新增一個路徑檔案,如tensorflow_model.pth,必須以.pth為字尾,寫上你要加入的模組檔案所在的目錄名稱

D:\TensorflowModels\models-archive\research
D:\TensorflowModels\models-archive\research\slim

再將解壓目錄,D:\TensorflowModels\models-archive\research\object_detection\packages\tf2下的setup.py檔案複製到D:\TensorflowModels\models-archive\research\,並在research目錄下執行

python -m pip install .

若執行成功如圖上所示。

之後安裝執行模型所需要的一些必要的庫,執行以下指令:

pip install tf_slim

pip install scipy

pip install tf-models-official==2.4.0

需要注意,執行最後一個指令時,會預設給當前環境安裝最高版本的tensorflow2.8環境並解除安裝安裝的tensorflow2.4因此,在執行完最後的安裝tf-models-official後需要重新安裝tensorflow2.4

pip install tensorflow==2.4.0

其中紅包部分是由於部分庫包與tensorflow2.4環境不匹配,降級版本或刪除即可,這裡google-cloud-bigquery一般不會用,刪除即可,執行以下指令

pip install grpcio==1.32.0

pip uninstall google-cloud-bigquery

pip install grpcio-status==1.32.0

完成上述步驟後,執行測試檔案,在research目錄下輸入以下指令:

python object_detection/builders/model_builder_tf2_test.py

輸出以下結果,則配置安裝正確

4,tensorflow目標檢測API圖片執行測試

在tensorflow24gpu的環境下執行以下語句:

conda install nb_conda

去tensorflow-model的github網站下載1.13版本https://github.com/tensorflow/models/tree/r1.13.0,並解壓 ,將models-r1.13.0\research\object_detection下的object_detection_tutorial.ipynb拷貝到models-archive\research\object_detection下

在research資料夾目錄下執行命令:jupyter notebook,

進入網頁介面點選new後修改執行環境為tensorflow24gpu,如下

接著在jupyter中開啟object_detection資料夾,並單擊object_detection_tutorial.ipynb執行試例檔案並在中間執行幾處更改

在imports中插入以下命令

os.environ['CUDA_VISIBLE_DEVICES'] = '/gpu:0'

下載一個他人訓練好的權重檔案https://download.tensorflow.org/models/object_detection/ssd_mobilenet_v1_coco_2017_11_17.tar.gz

解壓並放在一個位置,將檔案地址新增在Variables處,在Variables將程式碼改為:

#What model to download.

#Path to frozen detection graph. This is the actual model that is used for the object detection.

PATH_TO_FROZEN_GRAPH = 'D:/TensorflowModels/ssd_mobilenet_v1_coco_2017_11_17/frozen_inference_graph.pb'

# List of the strings that is used to add correct label for each box.

PATH_TO_LABELS = os.path.join('data', 'mscoco_label_map.pbtxt')

中間PATH_TO_FROZEN_GRAPH的目錄為下載解壓的ssd_mobilenet_v1_coco_2017_11_17訓練集解壓的位置,在將Download Model一塊刪除即可

最後,由於tensorflow1與2的區別,需要將object_detection_tutorial.ipynb程式碼中的tf全部修改為tf.compat.v1

之後點選run all執行

成功的執行結果如下所示:

GPU使用情況如下所示:

相關文章