iT邦幫忙

2022 iThome 鐵人賽

DAY 20
0
AI & Data

Object Detection and Image Processing with Python系列 第 20

《第20天》YOLOv4本地端訓練(Windows)

  • 分享至 

  • xImage
  •  

環境安裝

  1. 開啟Pycharm新專案:

    1.1 點擊New Project開啟新專案

    1.2 點擊New enviroment using,選擇Vitualenv後輸入專案名稱,再點擊Create。

  2. 到Github下載WongKinYiu/PyTorch_YOLOv4

  3. 解壓縮後將PyTorch_YOLOv4-master資料夾移動到Pycharm專案資料夾內,並更名為YOLOv4。

  4. 在Pycharm內點選Terminal,並依序輸入以下指令

    4.1 進入YOLOv4資料夾:cd .\YOLOv4\

    4.2 修正requirements.txt

    • 修正前

    • 修正後

    4.3 安裝需求套件:pip install -r requirements.txt

    4.4 安裝CUDA與Torch

    • 我是使用RTX2060s,測試可行的版本如下。pip install torch==1.10.0+cu113 torchvision==0.11.1+cu113 torchaudio===0.10.0+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html


模型推論(detect.py檔)

  1. 預訓練模型yolov4權重

    1.1 下載預訓練模型yolov4權重

    1.2 放到YOLOv4資料夾,用以執行detect.py測試是否部署環境成功。

  2. data/samples資料夾內的bus照片複製成8張,可測試單張及多張照片的GPU推論速度)

  3. 在Terminal輸入推論指令

    3.1 單張照片gpu推論:python detect.py --source data/samples/bus1.jpg --cfg cfg/yolov4.cfg --weights yolov4.weights --conf 0.25 --img-size 640 --device 0

    • 執行結果:載入模型+1張圖片推論,花費了0.047秒。

    • 推論結果

    3.2 多張照片gpu推論:python detect.py --source data/samples --cfg cfg/yolov4.cfg --weights yolov4.weights --conf 0.25 --img-size 640 --device 0

    • 執行結果

      • 載入模型+第1張圖片推論,花費0.048秒
      • 第2~8張圖片,1張圖片推論平均時間為0.0244秒。

    • 推論結果

    3.3 參數說明

    • --cfg 後面放參數設定的檔案路徑,如:cfg/yolov4.cfg
    • --weights 後面放推論時讀取的weight檔案路徑,如:yolov4.weights
    • --source 後面放要推論的圖片或資料夾路徑,如:data/samples
    • --conf 後面放confidence的閾值,如:0.25
    • --iou-thres後面放NMS的閾值,如:默認0.5
    • --img-size 待推論圖片輸入模型的尺寸,如:640
    • --save_result 是否儲存圖片推論結果,如:True
    • --device 指定推論GPU的編號,如:0

模型訓練(train.py檔)

  1. YOLO txt格式

    1.1 資料集下載

    • 下載datasets1:從coco128中擷取部分資料。

    • 將datasets1資料集解壓縮,並移到YOLOv4下的data資料夾內。

    1.2 下載預訓練模型yolov4權重,並放到YOLOv4資料夾內。

    1.3 修改coco.yaml參數檔檔

    • train與val資料夾路徑。(編號1)
    • nc:dataset1中共有80個類別。(編號2)
    • names:字串格式輸入類別名稱。(編號3)

    1.4 修改coco.names

    • 模型訓練完成後,會讀取val資料集與coco.name進行驗證,並計算mAP。
    • dataset1中共有80個類別,換行輸入所有類別。

    1.5 修改cfg/yolov4.cfg

    • classes:dataset1有80個類別,故第968、1055、1142行需為80。

    • filters:dataset1有80個類別,filters=(類別數量+5)*3,故第961、1048、1135行需為255。

    1.6 執行訓練:python train.py --batch-size 2 --img 640 640 --data coco.yaml --cfg cfg/yolov4.cfg --weights yolov4.weight --device 0 --name yolov4 --epochs 10 --notest

    • 訓練過程(若顯存低於8G,建議使用--notest,僅在最後一回合訓練結束後,執行test)

    • 訓練結果

    1.7 Demo測試:python detect.py --source data/samples --cfg cfg/yolov4.cfg --weights runs/train/yolov4/weights/last.pt --conf 0.25 --img-size 640 --device 0

    • 推論過程


小結

下一站,我們前往「Scaled YOLOv4本地端訓練(Windows)」,分享如何設置環境,並進行訓練與推論。

讓我們繼續看下去...


參考資料

  1. WongKinYiu/PyTorch_YOLOv4

上一篇
《第19天》YOLOv7解析(二)
下一篇
《第21天》Scaled YOLOv4本地端訓練(Windows)
系列文
Object Detection and Image Processing with Python30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言