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