目前,由於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使用情況如下所示: