TensorFlow2 (Windows) 環境建置 與 YOLOv4 起手式實作
0.前言
本文主要是記錄在Windows10 系統中安裝 Anaconda,並在 TensorFlow2的框架下,運行YOLOv4。本文章乃筆者參考 <Github:hunglc007/tensorflow-yolov4-tflite> 與 <YOLOv4+tensorflow2.0訓練自己的數據> 進行的實作紀錄。
1.環境建置
1.1 Anaconda安裝教學
Anaconda安裝教學,請參考< Anaconda安裝不求人 : 超簡單的8個步驟,一次就成功 !! >
1.2.在Anaconda中建立虛擬環境與安裝TensorFlow2.x
Step0. 列出系統中所有虛擬環境
使用 conda env list 指令。
source:Greatway9999Step1. 建立指定Python版本的虛擬環境
使用 conda create --name [虛擬環境命名] python=[版本號] 指令。
例如建立名為 myenvtf2 且 Python 版本為 3.6 的虛擬環境,指令如下:
conda create --name myenvtf2 python=3.6
source:Greatway9999Step2. 安裝TensorFlow2.x套件與相依套件
安裝TensorFlow2.X後也要安裝相依套件(cudnn與cudatoolkit),TensorFlow2.X才能順利運行。關於TensorFlow2.X對應的cudnn與cudatoolkit版本,可參考 TensorFlow官網。
此處以安裝TensorFlow2.5版為例,記得先啟動剛建的虛擬環境( activate myenvtf2 ),在你啟動的虛擬環境中,依序輸入以下指令。
pip install tensorflow-gpu==2.5.0
conda install cudnn==8.2.1
conda install cudatoolkit==11.3.1
備註:
- 筆者使用pip指令安裝cudnn和cudatoolkit未成功安裝,改用conda指令才順利安裝cudnn和cudatoolkit。建議讀者可依據實際遇到的情形,彈性使用pip或conda指令進行套件安裝。
- 搜尋指定套件的所有版本號,指令為conda search 套件名稱 ,例如 conda search cuda。
- 若不小心裝錯套件,移除套件的指令為 pip uninstall 套件名稱==版本號,例如pip uninstall tensorflow==2.5.0。
- 若要刪除指定虛擬環境,指令為conda env remove --name 虛擬環境名稱,例如conda env remove --name myenvtf2。
Step3. 檢查套件是否成功安裝
使用 conda list 指令檢查 TensorFlow2.5、cudnn與cudatoolkit是否成功安裝。指令輸入後,系統中安裝的套件名稱、版號等資訊就會被列出。
2.部署YOLOv4
2.1. 下載權重文件並放置指定位置
下載來源:
https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v3_optimal/yolov4.weights
下載後的權重請放置於tensorflow-yolov4-tflite-master\data 的資料夾中。
2.2.權重檔轉換
權重檔yolov4.weights需轉換成在tensorflow環境下使用的檔案類型。轉換步驟如下:
Step1.進入指定路徑
從anaconda prompt中利用 "cd" 指令進入到tensorflow-yolov4-tflite-master路徑中。
ex. cd C:\Users\OOO\OOOOO\tensorflow-yolov4-tflite-master
Step2.輸入轉換指令
進到指定位置後輸入以下指令:
python save_model.py --weights ./data/yolov4.weights --output ./checkpoints/yolov4-416 --input_size 416 --model yolov4
2.3.測試與問題排除指引
2.3.1 圖片測試
請在tensorflow-yolov4-tflite-master路徑下,輸入以下指令:
python detect.py --weights ./checkpoints/yolov4-416 --size 416 --model yolov4 --image ./data/kite.jpg --output ./data/kite_d.jpg
source:Greatway9999
倘若出現以下錯誤:
After saving the model, running detection with 'python detect.py --weights ./checkpoints/yolov4-416 --size 416 --model yolov4 --images ./data/images/kite.jpg' give me an error of:
cv2.error: OpenCV(4.5.2) :-1: error: (-5:Bad argument) in function 'rectangle' > Overload resolution failed: > - Can't parse 'pt1'. Sequence item with index 0 has a wrong type > - Can't parse 'pt1'. Sequence item with index 0 has a wrong type > - Can't parse 'rec'. Expected sequence length 4, got 2 > - Can't parse 'rec'. Expected sequence length 4, got 2
如下圖
回到tensorflow-yolov4-tflite-master/ 路徑下,輸入以下指令,應可正常運行。
python detectvideo.py --weights ./checkpoints/yolov4-416 --size 416 --model yolov4 --image ./data/road.mp4 --output ./data/road_d.mp4
2.3.2 影片測試
這部份就交由讀者自行試試囉。小提示如下供參:
請在tensorflow-yolov4-tflite-master路徑下,輸入以下指令:
python detectvideo.py --weights ./checkpoints/yolov4-416 --size 416 --model yolov4 --image ./data/road.mp4 --output ./data/road_d.mp4
---
參考資料:
- Windows安裝Tensorflow-gpu(tf2.5、tf2.0以上、tf1.14~1.13及1.12以下共存版本)、CUDA Toolkit、CUDNN、Pycharm的安裝經驗分享
- Github:hunglc007/tensorflow-yolov4-tflite
- YOLOv4+tensorflow2.0訓練自己的數據
- cv2.error: OpenCV(4.5.2) : -1 : error: (-5:Bad argument) in function ‘rectangle‘
- OpenCV(4.5.2) 👎 error: (-5:Bad argument) in function 'rectangle' #368
0 留言