YOLOV4編譯

      在〈YOLOV4編譯〉中尚無留言

yolo v4的辨識效能比 yolo v3還快。本篇說明如何在Windows 下將yolo v4的原始碼編譯成可在 Windows 10 可執行的 darknet.exe

環境安裝

Visual Studio 2019

請參照本人所寫的 VS簡介及安裝 

CUDA Toolkit & cudnn

請參照本站編寫之 TensorFlow安裝

OpenCV

請到 https://opencv.org/releases/ 下載最新的Windows版本
解開後,將 opencv 目錄copy 到 c:\底下

然後在系統變數新增如下
變數名稱 : OpenCV_DIR
變數值 : C:\opencv\build

編譯Yolo V4

下載 Yolo V4 原始碼

請到 Yolo github下載原始碼,解開後的目錄為 darknet-master。為了方便管理,請在d:\之下新增yolo4目錄,然後將darknet-master 移到 d:\yolo4之下

copy cuda library

請將
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.x\extras\visual_studio_integration\MSBuildExtensions
目錄下的四個檔案,copy 到
C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VC\v160\BuildCustomizations , 

然後複製 CUDA 11.x.props及CUDA 11.x.targets二個檔案,並改名為 CUDA 11.1.props及CUDA 11.1.targets

無法開啟檔案 cudnn.lib

在編譯時,會出現找不到 cudnn.lib的錯誤訊息,請將

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\lib\cudnn.lib copy 到
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\lib\x64

編譯yolo v4

開啟Visual Studio 2019,選擇開啟專案,並開啟 d:\yolo4\darknet-master\build\darknet\darknet.sln專案,然後設定為 release及 x64版本,如下圖所示

然後按下 建置/建置方案,此時就會開始編譯。編譯完成後,在
d:\yolo4\darknet-master\build\darknet\x64 目錄下就會多出 darknet.exe這個執行檔了。

最後請將x64 copy 到d:\yolo4之下

copy 相關Library

1. 將C:\opencv\build\x64\vc15\bin\opencv_world455.dll copy 到 d:\yolo4\x64 目錄之下
2. 將C:\opencv\build\x64\vc15\bin\opencv_videoio_ffmpeg455_64.dll copy到 d:\yolo4\x64 目錄
3. 請到官網 https://github.com/AlexeyAB/darknet/releases/ 下載權重 yolov4.weights ,並 copy 到 d:\yolo4\x64目錄

上述紅色為OpenCv版本號,2022/02最新版本為4.5.5版本

偵測

偵測圖片

進入 command mode並進入 d:\yolo4\x64 目錄,輸入如下指令

#test為偵測圖片,demo為偵測影片
darknet.exe detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights -thresh 0.25

然後再輸入照片的完整目錄,即可看到成果了。

偵測影片

一樣是進入 d:\yolo4\models 目錄,然後下達如下指令

darknet.exe detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights test.mp4 -out_filename test1.mp4

致於辨識的效能,需視影片ROI(Region of Interest)的數量而定。如下的影片,在nVidia RTX3080Ti 顯卡的偵幅可達到27 fps 以上。如果使用 nVidia Geforce GTX 1050Ti,只能達到 7 fps左右。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *