最新版 yolov3 Windows10 +cuda10+cudnn7.4.1+vs2017社区版+opencv 3.4.0 + GPU1060

影像辨識-YOLO darknet編譯建置方法

 

最近開始研究影像辨識的套件

於是找到一個目前非常火紅YOLO

其官方網站:https://pjreddie.com/darknet/yolo/

而其效果就如首頁這張圖

擁有相當高的mAP-50(越高越好)以及執行效率(越快越好)
转发自 http://yy-programer.blogspot.com/2019/01/yolo-darknet.html

官方的github連結:https://github.com/pjreddie/darknet

恩...就是一個說明很簡短的gitlab首頁

反而比較有名的是AlexeyAB的fork版本,github連結為:https://github.com/AlexeyAB/darknet

乍看之下真的會以為這個才是官方版本... XDD

底下的說明內容非常完整

所以目前也是以此版本下載進行測試,如下圖:


下載完後在build\darknet資料夾有幾個相關的方案檔,如下圖:
 


主要針對darknet以及yolo_cpp_dll這兩個方案檔


這裡有一篇大陸的介紹,算是相當完整:https://www.zhihu.com/appview/p/45845454

也是透過這篇才能比較順利的進行建置

但有些地方需要進行調整及差異的就在此補充說明


目前採用的開發IDE是MSVS2017(需安裝C++開發套件)

以及目標環境是windows10、Cuda10.0

Cuda 10.0的下載位置:https://developer.nvidia.com/cuda-downloads?target_os=Windows&target_arch=x86_64&target_version=10

以及所搭配的cuDNN:https://developer.nvidia.com/rdp/cudnn-download

以及該套件所需參考的openCV:https://sourceforge.net/projects/opencvlibrary/files/opencv-win/3.4.0/opencv-3.4.0-vc14_vc15.exe/download


由於開發的環境並沒有支援cuda的顯卡

因此在安裝Cuda 10.0時,可僅安裝相關的開發套件,如下圖:
 

一定要安裝development跟Visual Studio Integration
(其他應該都可以不用安裝)


而cuDNN下載後執行就進行解壓縮動作,解完資料夾如下:
 


這些資料夾內的檔案之後會需要進行搬移,等等再進行說明


OpenCV下載後執行也是進行解壓縮動作,解出來的資料夾如下:
 


待會兒會需要include跟x64這兩個資料夾的path,所以請把openCV放置在你認為適合的位置


接著用VS2017開啟darknet.sln會出現以下畫面:
 


由於原先該作者是用VS2015開發的,所以就點選確定進行專案升級

開啟後該方案會停在Debug、Win32的組態環境
 


對著方案右鍵,選擇組態管理員,將其組態改成release、x64
 


改完之後就可以進行建置,第一次建置會出現這樣的錯誤:
 


於是對著專案按右鍵->屬性,進行cuda path的設定:

預設的安裝位置會在:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0


設定完之後再進行建置:
 


會出現cudnn的error

這時候就將剛剛解壓縮的cudnn的三個資料夾bin、include、lib中的檔案(共三個檔案)

複製到cuda的安裝目錄:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0 相對應的資料夾內

cudnn\cuda\bin的cudnn64_7.dll 複製到 CUDA\v10.0\bin裡面

cudnn\cuda\bin的cudnn.h 複製到 CUDA\v10.0\include裡面

cudnn\cuda\lib\x64\cudnn.lib 複製到 CUDA\v10.0\lib\x64裡面
 


接著再進行建置:
 


會出現OpenCV的錯誤

於是再針對專案按右鍵->屬性,設定VC++目錄以及連結器

VC++目錄中,先在Include目錄加入OpenCV的include path

build\include、build\include\opencv、build\include\opencv2 這三個路徑
 


以及程式庫目錄中加入OpenCV的lib path

build\x64\vc14\lib 這一個路徑
 


接著在連結器的輸入頁面的其他相依性加入

opencv_world340.lib
 


以上都完成後再進行建置,就終於能建置成功了!
 


建置成功,會在專案的資料夾build\darknet\x64產生一個darknet.exe

即可透過該指令進行物件辨識的測試


該執行檔會依賴於build\darknet\x64裡面的pthreadGC2.dll、pthreadVC2.dll 這兩個元件

以及cudnn:cudnn64_7.dll、openCV:opencv_world340.dll、ffmpeg:opencv_ffmpeg340_64.dll

將這五個dll以及exe都放置於同一個資料夾中才能正常執行
 

目前測試採用coco資料集 以及 yolo3的model

所需的資料有:yolov3.weights、yolov3.cfg、coco.data、coco.names

yolov3.weights比較麻煩需上網下載:https://pjreddie.com/media/files/yolov3.weights

其他三個在下載的build\darknet\x64\cfg以及data資料夾中可找到

這些檔案的配置如下:

yolov3.cfg、yolov3.weights 放在與執行檔同一層資料夾

coco.data放在cfg資料夾

coco.names放在data資料夾

然後在build\darknet\x64\data的資料夾內有一個labels的資料夾

也要將該資料夾放置到目標的data資料夾裡面

利用命令提示字元執行

 

darknet.exe detect yolov3.cfg yolov3.weights Bird2.png

Bird2.png就是要進行影像辨識的檔名,放在與exe同一個目錄下

執行結果如下:


這樣就表示成功,花費了27.95 ms

辨識的結果會在執行目錄下產出一個predictions.jpg
 


以上就是建置darknet.sln產生出exe以及執行exe的方式

若要測試影片

則執行的命令如下:

darknet.exe detector demo cfg/coco.data yolov3.cfg yolov3.weights yourVideo.mp4

yourVideo.mp4就是你所要測試的影片檔

執行結果如下:

執行後會跳出一個新視窗,該視窗會顯示標記所有辨識到的物件

而原本的console視窗會不斷跳出辨識物件的資訊,以及辨識影片的FPS

這個darknet.exe的執行方法可以協助做第一步的影片測試

除了測試辨識效果外也能初步確認GPU顯卡的計算效能

算是相當方便!


重點提醒:若要測試影片檔,一定要將所參考的opencv_ffmpeg340_64.dll

放置到執行目錄,否則會出現如下的錯誤訊息:
 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值