YOLO3实现目标检测(VS2015+OPENCV3.4.2+YOLO3+CUDA10.0+CUDNN7.5)
本人YOLOv3剛剛?cè)肟?#xff0c;走了不少彎路,自己摸索了一下,首先給大家配置一下yolo3,后續(xù)會有具體的算法分析講解。安裝VS2015+opencv3.4.2,這個就不用多說了吧,網(wǎng)上很多教程可以參考,主要是安裝好opencv,添加環(huán)境變量后,切記勿忘,重啟一下電腦。
本文電腦:windows7+i7-7700cpu+內(nèi)存16G+顯卡P620
一、github下載darknet。鏈接:https://github.com/AlexeyAB/darknet
二、安裝cuda10.0,安裝過程直接默認。安裝之前需要了解cuda對應(yīng)的顯卡驅(qū)動,我的電腦支持cuda10.0,直接下載安裝就行。下面有個對比圖,可以參考一下。
安裝完成后,接下來需要設(shè)置環(huán)境變量:
添加完成后在系統(tǒng)變量path的末尾添加:
%CUDA_LIB_PATH%; %CUDA_BIN_PATH%; %CUDA_SDK_LIB_PATH%; %CUDA_SDK_BIN_PATH%; C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\lib\x64; C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin; C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.0\common\lib\x64; C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.0\bin\win64;下面檢查一下cuda安裝是否成功:
cmd 運行 nvcc -V
上面顯示已經(jīng)安裝成功,可以再檢查一下相應(yīng)的環(huán)境變量目錄
上述可以看到之前添加的環(huán)境變量,如果cuda是自定義安裝的,改為自己的安裝路徑即可。
三、安裝cudnn v7.5
注意cudnn版本與cuda版本兼容問題。你可以通過鏈接下載:https://developer.nvidia.com/rdp/cudnn-download,下載前需要注冊會員。里面會顯示和cuda對應(yīng)的版本。安裝cudnn后,里面有個cuda文件夾。將cudnn里面的bin、include、lib文件下的文件分別復(fù)制到cuda安裝的bin、include、lib文件夾下,如下圖所示。
四、用VS2015打開darknet-master/build/darnet文件,你會發(fā)現(xiàn)里面有g(shù)pu和no_gpu版本,本文是基于gpu版的。但請不要直接打開darknet.sln,這一步很重要。
首先用notepad++或者寫字板打開darknet.vcxproj,有兩處CUDA版本的配置,默認的是10.0。因為我是安裝的cuda10.0,所以不用修改。但是很多小伙伴安裝的不是這個版本,所以會出現(xiàn)darknet.sln打不開的情況。假如你安裝的是9.0,就把CUDA10.0.targets改為CUDA9.0.targets,修改兩處即可。
五、打開darknet.sln之后,設(shè)置為Release x64模式。然后開始進行相關(guān)庫的配置,主要就是配置opencv、cuda、cudnn的相關(guān)庫。
因為本人之前已經(jīng)新建了自己的opencv屬性頁,所以vs2015打開darknet.sln之后,直接在它的屬性管理器中Release64中添加屬性頁即可,opencv就配置好了。
大家也可以pthreadVC2、cuda相關(guān)的庫文件目錄加到上面去。
測試圖像:darknet.exe detector test data/coco.data yolov3.cfg yolov3.weights -i 0 -thresh 0.25 bird.jpg
下面是具體參數(shù)顯示:可以看出時間是81ms,還湊合
再測試一個,時間大概也是80ms。不過大家可以看出yolo3功能的強大,很多小目標都可以檢測到,效率還可以。
可以給大家分享一個提高檢測效率的方法,就是使用yolo3-tiny.weights,但是有時候會存在檢測準確率下降的問題,可以看一下下面的測試,用的是tiny版本,檢測時間是11ms。大大提高了檢測效率。
備注:
我用的yolo3版本可以檢測80種目標,如:人、自行車、汽車、船、鳥…因為具體的工程需要,沒必要檢測這么多目標的時候,可以在源碼中修改。但是你會發(fā)現(xiàn),當你檢測一個圖像,假如你原本可以識別上面的兩種目標,但你只標記識別了一種,但是測試時間和識別兩種目標時間一樣。
另外,本人也在做相關(guān)的視頻檢測,調(diào)用攝像頭進行實時檢測,我用的是yolo3.weights,幀率是12FPS。用tiny版本時,幀率可以達到65FPS,但是檢測準確率會下降。后續(xù)會有具體的代碼詳解以及更改調(diào)試,感興趣的朋友可以一起學(xué)習,共同進步。
總結(jié)
以上是生活随笔為你收集整理的YOLO3实现目标检测(VS2015+OPENCV3.4.2+YOLO3+CUDA10.0+CUDNN7.5)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Gym导入Atari游戏环境报错
- 下一篇: 出现opencv error: asse