0.前言

本文主要是記錄在Windows10 系統中安裝 Anaconda,並在 Pytorch 的框架下,運行YOLOv4。本文章乃筆者參考 <Github:hunglc007/tensorflow-yolov4-tflite> 與  <YOLOv4+tensorflow2.0訓練自己的數據> 進行的實作紀錄。



1.環境建置

1.1 Anaconda安裝教學

Anaconda安裝教學,請參考< Anaconda安裝不求人 : 超簡單的8個步驟,一次就成功 !! >


1.2.在Anaconda中建立虛擬環境與安裝 Pytorch

Step0. 列出系統中所有虛擬環境 

使用 conda env list 指令。


Step1. 建立指定Python版本的虛擬環境

使用 conda create --name [虛擬環境命名] python=[版本號] 指令。

例如建立名為 Pytorch 且 Python 版本為 3.6 的虛擬環境,指令如下:

conda create --name pytorch python=3.6


Step2. 安裝 Pytorch 套件與相依套件

記得先啟動剛建的虛擬環境( activate pytorch ),在你啟動的虛擬環境中。

接著使用 nvcc -V 指令查適用的cuda版本。

source:Greatway9999

請讀者先查詢自己的GPU適用的何種 cuda 版本後。可至 Pytorch 官網 查詢。

筆者的GPU為RTX 2060適用版本為 pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=10.1。因此輸入以下指令進行安裝。

conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=10.1 -c pytorch

Step3. 測試是否成功安裝

在虛擬環境中輸入 python 指令,接著一行一行輸入以下指令。

import torch

print(torch.cuda.is_available)

print(torch.cuda.device())

source:Greatway9999

如沒出現錯誤碼,代表cuda已成功安裝。


2.部署YOLOv4

參考< PyTorch Yolov4配置 >文章,將實作過程記錄下來。


2.1. 下載YOLOv4與權重

承上說明,YOLOv4與權重來源原為 https://github.com/WongKinYiu/PyTorch_YOLOv4。後來存在某些bug,所以改採 https://github.com/Tianxiaomo/pyTorch-YOLOv4

在你的工作路徑中,下載YOLOv4,指令如下:

git clone https://github.com/Tianxiaomo/pyTorch_YOLOv4.git

source:Greatway9999


2.1.環境配置

依據作者提供的 requirements.txt 進行安裝。指令如下:

pip install -r PyTorch_YOLOv4/requirements.txt

筆者在安裝過程中,跑出以下套件未裝的提示訊息。只要將這些套件也存在requirements.txt,即可一起安裝,節省時間。

  • entrypoints
  • ipykernel>=4.4
  • ipython>=4
  • jupyter-client
  • psutil
  • pyzmq>=18
  • tornado>=5.1
  • traitlets>=4.3
  • Shapely


備註:

  1. 若出現 No Such file or directory等錯誤提示,代表是路徑選擇的問題,只要指定你電腦中的正確路徑即可解決。
  2. 安裝過程當中若出現有些套件未安裝的錯誤提示,只要把這些套件寫入requirements.txt,再重新輸入pip install -r PyTorch_YOLOv4/requirements.txt,即可安裝。這種安裝方法會比一個套件就要輸入一次 pip install [套件名稱] 來的有效率。
  3. 若出現ImportError: No module named ‘yaml’ 錯誤提示,代表卻少yaml套件,解決方法為輸入指令 pip install pyyaml,進行安裝。
  4. 若出現ImportError: No module named ‘pycocotools’ 錯誤提示,代表卻少pycocotools套件,解決方法為到Anaconda 官網輸入指令(如下圖所示) conda install -c conda-forge pycocotools,進行安裝。
source:Anaconda 官網


2.2.測試與問題排除指引

2.3.1 圖片測試

請在pytorch-YOLOv4-master路徑下,輸入以下指令:

python demo.py -cfgfile ./cfg/yolov4.cfg -weightfile ./weights/yolov4.weights -imgfile ./data/giraffe.jpg 

source:Greatway9999

若程式運行正常的話,會得到以下測試結果。

source:Greatway9999

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

如下圖:

經查,輸入到cv2.rectangle()這個函數中兩個的座標不能是浮點數的類型, 要轉換成整數才行,於是就使用int()強制類型轉換,程式碼即可成功運行。debug說明如下:

Step1.在pytorch-YOLOv4-master\tool 路徑下開啟 utils.py 這支程式

Step2.在該程式中的指定行數將程式碼修改如下,並進行存檔:

Line 140 -> cv2.rectangle(img, (np.int(x1),np.int(y1)), (np.int(c3[0]), np.int(c3[1])), rgb, -1)
Line 141 -> img = cv2.putText(img, msg, (c1[0], int(np.float32(c1[1] - 2))), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 0), bbox_thick // 2, lineType=cv2.LINE_AA)

-本文結束-


如對於在Pytorch框架下使用YOLOv4訓練自定義資料集有興趣,請參考< 在Pytorch框架下以YOLOv4訓練自定義資料集 >。

---

參考資料:

#Pytorch #Anaconda #YOLOv4

0 留言