在VS2019環(huán)境下使用Opencv調(diào)用GPU版本YOLOv4算法的詳細(xì)過程
前言
隨著人工智能的不斷發(fā)展,機(jī)器學(xué)習(xí)這門技術(shù)也越來越重要,很多人都開啟了學(xué)習(xí)機(jī)器學(xué)習(xí),本文就介紹了windows下YOLO的環(huán)境搭建流程。
一、相關(guān)知識儲備
1. YOLO是什么?
- YOLO是一種實(shí)時目標(biāo)檢測算法,它是第一個平衡所提供檢測的質(zhì)量和速度的算法。通常,這類最強(qiáng)大的模型,都是建立在卷積神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上,這次也不例外。所謂「目標(biāo)檢測模型」,我們的意思是,我們不僅可以用它來找出給定照片中存在的對象,還可以用它來指示它們的位置和數(shù)量。除其他外,這種模型在機(jī)器人和汽車工業(yè)中都有應(yīng)用,因此檢測速度至關(guān)重要。自2015年以來,該算法已經(jīng)進(jìn)行了三次迭代,還有為
TinyYOLO 等移動設(shè)備設(shè)計的變體。移動版本的精度有限,但計算要求也較低,運(yùn)行速度更快。
2.CPU&GPU
- CPU(Central Processing
Unit)是指中央處理器,決定著手機(jī)的運(yùn)行速度。一般來說芯片數(shù)字越大代表著型號越新,因此我們在選擇CPU的時候應(yīng)該選擇名稱中所帶數(shù)字較大的。
- GPU(Graphics Processing
Unit)是指圖像處理器,在手機(jī)上用于游戲畫面的渲染,通常GPU的型號越新,頻率越高,意味著游戲的畫面展示速度越快。
- CPU和GPU二者對于用戶來說是缺一不可,前者負(fù)責(zé)計算數(shù)據(jù),后者負(fù)責(zé)顯示內(nèi)容,構(gòu)造后端運(yùn)算,前端顯示的前后搭配。
3.什么是CUDA
- CUDA(Compute Unified Device Architecture),顯卡廠商N(yùn)Vidia推出的運(yùn)算平臺。CUDA™是一種由NVIDIA推出的通用并行計算架構(gòu),該架構(gòu)使GPU能夠解決復(fù)雜的計算問題。它包含了CUDA指令集架構(gòu)(ISA)以及GPU內(nèi)部的并行計算引擎。
- 通過CUDA架構(gòu),視頻播放軟件可以充分挖掘NVIDIA系列顯卡的GPU并行計算能力,輕松進(jìn)行高清影片的播放,與軟件高清解碼相比,CPU占用可以下降一半以上。當(dāng)然,CUDA的應(yīng)用領(lǐng)域絕不僅僅是視頻、圖形、游戲,包括各種3D和建模,醫(yī)療、能源、科學(xué)研究等,到處都可見到這種技術(shù)架構(gòu)的應(yīng)用
4.什么是cuDNN
- NVIDIA cuDNN是用于深度神經(jīng)網(wǎng)絡(luò)的GPU加速庫。它強(qiáng)調(diào)性能、易用性和低內(nèi)存開銷。NVIDIA
cuDNN可以集成到更高級別的機(jī)器學(xué)習(xí)框架中,如加州大學(xué)伯克利分校的流行caffe軟件。簡單的,插入式設(shè)計可以讓開發(fā)人員專注于設(shè)計和實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)模型,而不是調(diào)整性能,同時還可以在GPU上實(shí)現(xiàn)高性能現(xiàn)代并行計算。
5.什么是OpenCV
- OpenCV是一個基于Apache2.0許可發(fā)行的跨平臺計算機(jī)視覺和機(jī)器學(xué)習(xí)軟件庫,可以在Linux、Windows、Android和Mac
OS操作系統(tǒng)上運(yùn)行。它輕量級而且高效——由一系列 C 函數(shù)和少量 C++
類函數(shù)構(gòu)成,同時提供了Python、Ruby、MATLAB等語言的接口,實(shí)現(xiàn)了很多圖像處理和計算機(jī)視覺方面的通用算法。
二、系統(tǒng)與環(huán)境要求
1.硬件環(huán)境
- Windows10系統(tǒng)+GPU顯卡
2.軟件環(huán)境
- CUDA,cuDNN,VS2019,OpenCV
三、相關(guān)環(huán)境下載
1.NVIDIA下載驅(qū)動
https://developer.nvidia.com/cuda-10.1-download-archive-update2
打開NVIDIA官網(wǎng)驅(qū)動程序下載頁面,選擇適合你顯卡的驅(qū)動,下載并安裝。
2.CUDNN下載
點(diǎn)擊:https://developer.nvidia.com/rdp/cudnn-download 注冊個賬戶,然后下載對應(yīng)版本加速庫
3.VS2019下載
https://visualstudio.microsoft.com/zh-hans/downloads/
4.opencv下載
https://opencv.org/opencv-4-5-0/
四、安裝與配置
1.顯卡驅(qū)動安裝
選擇自定義安裝:
全部勾選,點(diǎn)擊下一步:
使用默認(rèn)的安裝路徑:
2.配置CUDA環(huán)境變量
右鍵“我的電腦”選擇屬性,點(diǎn)擊“高級系統(tǒng)設(shè)置”->“環(huán)境變量”。
可以看到CUDA默認(rèn)寫入了2條環(huán)境變量信息,但這些還不夠,點(diǎn)擊新建,添加以下環(huán)境變量:
根據(jù)你CUDA的實(shí)際安裝路徑配置變量值,但我建議你安裝CUDA時使用默認(rèn)的路徑,避免出現(xiàn)各種奇葩問題。
然后在系統(tǒng)變量中找到Path,雙擊打開并加入以下變量值:
然后打開控制臺,輸入:nvcc -V
如果輸出CUDA版本等相關(guān)信息,說明CUDA安裝成功。
3.CUDNN安裝
將解壓后的文件,覆蓋到CUDA的安裝目錄下
4.OpenCV安裝
下載完成后雙擊打開,該exe是個自解壓程序,選擇一個解壓目錄,解壓完成后,將解壓出來的opencv文件夾復(fù)制到c盤根目錄下。
五、YOLO下載和編譯
1.YOLO下載
點(diǎn)擊 https://github.com/AlexeyAB/darknet
下載YOLO。
下載到本地后,解壓,將darknet-master重命名為darknet
2.復(fù)制編譯依賴文件
將c:/opencv/build/x64/vc15/bin目錄下的opencv_ffmpeg340_64.dll、opencv_world340.dll復(fù)制到D:\darknet\build\darknet\x64目錄下
3.修改darknet.vcxproj文件
打開文件找到兩處有CUDA版本號的地方(一般55 & 307行附近)將這里的10.1改為自己的版本號,然后保存
4.YOLO編譯
用vs2019打開 darkne\build\darknet\darknet.sln 確定彈出的升級窗口,設(shè)置為Release,x64編譯 生成可執(zhí)行文件
5.YOLO+VS環(huán)境配置
右鍵darknet工程,選擇屬性。
然后點(diǎn)擊VC++目錄,編輯包含目錄,將以下路徑添加到包含目錄中
點(diǎn)擊庫目錄,把以下內(nèi)容添加到庫目錄中。
點(diǎn)擊鏈接器->輸入,在附加依賴項中添加
編譯過程可能會出現(xiàn)很多警告,但只要最終提示生成:成功1個,失敗0個,則表示編譯成功。
六、YOLO環(huán)境測試
windows+r,輸入cmd,進(jìn)入自己對應(yīng)的build/darknet/x64下
執(zhí)行
darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
如果出現(xiàn)CUDA版本信息,說明YOLO可以通過GPU來進(jìn)行目標(biāo)識別了。
總結(jié)
以上就是今天要講的內(nèi)容,本文僅僅簡單介紹了如何在VS2019環(huán)境下使用Opencv調(diào)用GPU版本YOLOv4算法。
到此這篇關(guān)于如何在VS2019環(huán)境下使用Opencv調(diào)用GPU版本YOLOv4算法的文章就介紹到這了,更多相關(guān)Opencv調(diào)用GPU版本YOLOv4算法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
HTTP提交方式之PUT詳細(xì)介紹及POST和PUT的區(qū)別
這篇文章主要介紹了HTTP提交方式之PUT詳細(xì)介紹及POST和PUT的區(qū)別,本文簡潔易懂,需要的朋友可以參考下2014-07-07antd通過 filterDropdown 自定義按某天時間搜索功能
這篇文章主要介紹了antd通過 filterDropdown 自定義按某天時間搜索功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-08-08Scala項目構(gòu)建工具sbt和IntelliJ IDEA環(huán)境配置詳解
這篇文章主要介紹了Scala項目構(gòu)建工具sbt和IntelliJ IDEA環(huán)境配置,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10Typora配置PicGo時提示Failed?to?fetch的問題解決(typora圖像問題)
這篇文章主要介紹了Typora配置PicGo時提示Failed?to?fetch的問題解決(typora圖像問題),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04編程語言里的靜態(tài)、動態(tài)、強(qiáng)類型、弱類型等概念介紹
這篇文章主要介紹了編程語言里的靜態(tài)、動態(tài)、強(qiáng)類型、弱類型等概念介紹,需要的朋友可以參考下2015-05-05