YOLOv4手把手安裝流程
最近在課堂上學到YOLOv3的安裝與使用方法,由於老師上課時講得比較快,且我想自己實作YOLOv4模型(國產模型,要多多支持!),所以自己整理一份從安裝到實作的筆記,方便之後可以回顧,並和大家分享。因為文章較長,我分成兩篇文章,第一篇文章是如何在Windows上安裝YOLOv4套件,第二篇則是進行YOLOv4的實作。
本篇文章主要說明如何在Windows上安裝YOLOv4套件,安裝流程主要參考YOLOv4套件作者Alexey Bochkovskiy在Github:AlexeyAB/darknet 的說明文件。
另一篇文章:YOLOv4手把手實作應用,主要說明如何用YOLOv4套件進行實作,訓練一個能夠辨識筆電、鍵盤及滑鼠三個類別的模型。
由於套件可能還會持續更新,安裝或使用方法可能會有改變,本文僅提供參考。詳細內容可直接閱讀套件作者的Github說明文件。
一、 安裝環境
本篇文章是在Win10作業系統環境下,安裝YOLOv4模型GPU版本,以下為硬體及軟體版本資訊:
- 硬體(桌電)
- CPU:Intel i7-8700
- 記憶體:16 GB
- GPU:NVIDIA RTX 2070Ti
- 軟體
- 作業系統:Windows 10
- CUDA:11.1
- cuDNN:8.0.4
- OpenCV:4.5.1
- Cmake:3.20.1
- Visual Studio 2017
二、 安裝前置作業
由於套件持續更新,此處的版本僅提供參考,建議直接到套件作者的Github: AlexeyAB/darknet再確認整個安裝流程。
- 安裝Visual Studio 2017(記得要安裝英文語言套件)
下載Windows版本的OpenCV解壓縮後,將opencv資料夾放到電腦中某一個位置(我自己是放在C:\Users\User路徑下),並將此路徑新增到環境變數的Path內:
# [openv資料夾放置的目錄]\opencv\build\x64\vc15\bin
C:\Users\User\opencv\build\x64\vc15\bin
以及設定環境變數值:
# [openv資料夾放置的目錄]\opencv\build
OpenCV_DIR = C:\Users\User\opencv\build
- 安裝Cmake(版本>=3.18)
三、 安裝流程
套件作者在Github說明文件中,推薦在Windows環境使用vcpkg
來進行編譯,但我個人試作時並沒有成功。後來改採另一個方法,以Cmake來編譯。
Windows版本不用像Linux要特別去設定Makefile以開啟GPU版本,Cmake會自行判斷環境變數偵測電腦是否有裝GPU及CUDA,若有安裝則會自動裝YOLOv4模型的GPU版本。
1. 下載Github專案
開啟命令提示字元:
# 切換到想要放置的目錄位置(可自行修改)
cd C:\Users\User
# 以下取自Github說明文件:
git clone https://github.com/AlexeyAB/darknet.git
2. Cmake建立編譯文件
打開Cmake-gui:
按下圖的畫面輸入相關設定,路徑設定請選擇git clone下載的資料夾:
接下來Cmake會開始檢查環境,若沒有問題,即可按下Generate
:
系統提示畫面最後兩行如下,若相同則代表沒問題:
3. 開始編譯
打開darknet目錄中的Darknet.sln
檔案(以VS2017開啟):
在右側選擇ALL_BUILD
,點選右鍵選擇建置:
建置完後畫面如下:
接下來在右側選擇INSTALL
,點選右鍵選擇建置:
建置完後畫面如下:
上述步驟做完後,在darknet目錄中,可以看到darknet.exe
,這個即為YOLOv4模型的主程式,待會會以此程式來進行訓練及預測:
4. 範例測試
為測試程式是否能夠正常運作,此處我們執行以下指令:
# 切換到darknet資料夾
cd C:\Users\User\darknet
# 複製darknet.exe檔案到子目錄
cp darknet.exe .\build\darknet\x64\
# 切換到執行程式的資料夾
cd C:\Users\User\darknet\build\darknet\x64
下載YOLOv4權重,請點選這裡下載。下載後將yolov4.weights
放置到C:\Users\User\darknet\build\darknet\x64
目錄內。
接著繼續執行指令,以訓練好的YOLOv4模型來預測照片:
darknet detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights data/dog.jpg
如果有跑出圖片,代表YOLOv4套件安裝成功!
comments powered by Disqus