Ubuntu18.04下復現YOLOv4(YOLOv3亦可)

承接上文,復現一下Alexey Bochkovskiy的YOLOv4,本文先從環境配置開始,最後實現一幀圖像的檢測,如何訓練自己的數據不在本文討論範圍(可能是下一篇),這裏不得不佩服AB大佬,GitHub點開全是乾貨,無論是windows下還是linux下,操作流程非常詳細,而且如果你之前已經成功復現了YOLOv3那麼只需要改動一點參數就能使用YOLOv4,對接完美簡直不要太方便。

項目地址:https://github.com/AlexeyAB/darknet

環境準備:Ubuntu18.04      1050TI     Anaconda(非必需)

Step1:github下載項目

可以直接github網頁下載,也可以git命令下載,文件夾改名爲darknet放在/home下

Step2:環境配置

看一下作者給出的配置要求,相比起很多代碼,這個requirements其實只需要最基本的cuda、cudnn就行,opencv都不是必須要安裝的(opencv是個坑,大坑。。。。)

需要強調的是,企圖在anaconda虛擬環境用conda install來裝cudatoolkit和cudnn是不成功的,必須本地編譯安裝CUDA和cuDNN才能成功。

簡單說一下,gcc不用管,cmake、cuda、cudnn是需要安裝的,opencv看情況,不裝的話檢測結果會以jpg文件的形式保存

那麼,只要CUDA和cudnn安裝完整個YOLO的環境配置就完成了

1. CUDA安裝(前提條件:nvidia顯卡驅動已安裝)

官網下載CUDA10.0,或者以上版本,根據顯卡驅動的版本來決定(可參考CUDA版本問題cuda與cudnn匹配問題

找到下載的run文件,執行命令:

sudo chmod a+x cuda_10.0.130_410.48_linux.run
sudo sh cuda_10.0.130_410.48_linux.run

然後多按按空格把聲明讀完,注意後面有一個位置會問你裝不裝驅動,由於這裏我們提前安裝了顯卡驅動,一定要選N

安裝完成後,還需要添加環境變量

sudo gedit ~/.bashrc

# 文件末尾添加以下內容
export CUDA_HOME=/usr/local/cuda 
export PATH=$PATH:$CUDA_HOME/bin 
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

# 保存修改後更新一下
source ~/.bashrc

最後測試一下CUDA是否安裝成功,選擇一個sample

cd /usr/local/cuda/samples/1_Utilities/deviceQuery 
sudo make
./deviceQuery

結果顯示Resule=pass就是安裝成功!

2. cuDNN安裝(前提條件:nvidia顯卡驅動已安裝,CUDA已安裝  官網下載需要nvidia賬號)

cuDNN的版本問題可參考https://blog.csdn.net/hesongzefairy/article/details/104457091

 官網下載相應的版本,這裏官方其實也貼心的給出了匹配的版本

下載完成之後解壓,然後cd進文件夾執行以下拷貝命令:

sudo cp cuda/include/cudnn.h /usr/local/cuda/include/ 
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/ 
sudo chmod a+r /usr/local/cuda/include/cudnn.h 
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

完成之後,查看cuDNN的版本號,有版本號即是安裝成功

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

3. cmake安裝

這裏我是在anaconda虛擬環境中直接conda install裝的cmake,其他的安裝方法可自行百度

Step3:在linux上編譯Darknet

使用cmake生成CMakeLists.txt可以自動檢測已經安裝的依賴

mkdir build-release
cd build-release
cmake ..
make
make install

依次執行上面的命令即可編譯darknet

github上給出各種各樣的編譯情況,不使用cmake的方法,可以自行查閱github網址

Step4:單幀測試

首先需要下載yolov4的權重文件,放在/darknet文件夾中即可

權重百度雲鏈接:鏈接:https://pan.baidu.com/s/1ILfTuUrQxtNBU5DdNw7hoQ  提取碼:ffm8

在/darknet/data文件夾中有幾張圖片可供測試,這裏我們直接用這幾張經典的圖片

./darknet detect cfg/yolov4.cfg yolov4.weights data/dog.jpg

./darknet detect cfg/yolov4.cfg yolov4.weights data/person.jpg

那麼最後,yolov4的復現其實個v3沒有什麼區別,這就是大佬的厲害之處,yolov3可以完美對接上yolov4,如果你還想用yolov3來檢測,那麼同樣只需要準備好v3的權重文件,然後將上面的命令改成v3即可運行

./darknet detect cfg/yolov3.cfg yolov3.weights data/person.jpg

這樣就簡單的實現了yolo最基本的檢測功能,還有更多的功能大家可以自己去github上研究,Alexey Bochkovskiy大佬真的寫的非常詳細,還有很多功能如:視頻檢測、放在手機上運行等等,包括訓練自己的數據都有很詳細的步驟,後面如果有時間,我還會嘗試用自己的數據集來訓練看看,v4的性能確實十分有誘惑力!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章