ubuntu下一條命令安裝darknet、opencv、cuda、cudnn並讓yolo模型跑起來

本文用到的腳本文件等資源已經上傳,也可以直接下載使用:

cpu腳本:https://download.csdn.net/download/lishan132/12540007

gpu腳本:https://download.csdn.net/download/lishan132/12540017

cudnn-linux-64-v7.6:https://download.csdn.net/download/lishan132/12540033

一條命令即是指一條運行腳本的命令  sh 腳本名.sh

 

摘要:本文以儘可能少的步驟和安裝命令,在最短的時間內搭建yolo的運行環境,實現讓yolo在你的電腦上跑起來的目的,這些簡化的命令是作者在多次安裝之後的經驗下總結的,希望對剛入手yolo的朋友有所幫助。yolo的運行環境有darknet、opencv、cuda、cudnn,根據硬件情況,又可分爲cpu版本和gpu版本兩種,其中gpu環境是在cpu的環境基礎上增加了cuda和cudnn。必須注意的是,只有nvidia的顯卡才支持gpu運行環境。

 

本機硬件設備信息如下:

cpu:Intel core i7-4790

gpu:GTX 1080ti

內存:DDR3L 三星 16GB

硬盤:SSD 華鑫雲720G

操作系統:Ubuntu18.04.4 LTS 桌面版 64位

一、cpu版本

沒有nvidia顯卡的朋友只能用cpu跑yolo模型,cuda、cudnn不用安裝,只需要安裝darknet(必須)和opencv(可選)即可

編寫cpu下的自動化處理腳本

在任意位置新建一個文件,後綴名爲sh,複製下列代碼到文件中,保存退出後,只需要一條命令運行此腳本即可。

下面是腳本文件的具體內容

#!/bin/bash
#auther:lishan
#time:2020/6/19
#funcation:搭建yolo訓練環境cpu版本,只安裝darknet和opencv(可選) 
#instruction:此腳本僅供參考,可自行修改命令,特別是下載速度過慢時,可註釋掉wget開頭的命令(#爲註釋符),
#            並用其它方式將對應文件放到darknet目錄下
#attention:腳本測試時使用操作系統爲ubuntu18.04 LTS 桌面版64位,cpu爲 Intel core i7-4790
#darknet官網:https://pjreddie.com/darknet/yolo/
#opencv官網:https://opencv.org/ 
#--------------------------------------------------------------------
#更新軟件源
sudo apt update
 
#安裝必要工具
sudo apt install git gcc g++ make -y
 
#安裝文本編輯器
sudo apt install gedit -y
 
#安裝圖片查看器
sudo apt install eom -y
 
#下載darknet
cd ~
git clone https://github.com/pjreddie/darknet.git
 
#編譯darknet
cd ~/darknet
make
 
#下載yolov3權重文件
#若下載過程中,網絡較差,可用其他方法下載
wget -c https://pjreddie.com/media/files/yolov3.weights
 
#下載yolov3-tiny權重文件
#wget -c https://pjreddie.com/media/files/yolov3-tiny.weights
 
#運行yolov3進行圖片測試
./darknet detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights data/dog.jpg
 
#查看檢測圖片結果
eom predictions.jpg
 
#安裝opencv
sudo apt install libopencv-dev -y
 
#編輯Makefile文件
#修改OPENCV=1,OPENMP=1
gedit Makefile
 
#重新編譯
make
 
#再次運行yolov3進行圖片測試
./darknet detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights data/dog.jpg

 一條命令運行腳本

sh 腳本名.sh

不出意外的話(網速正常),5分鐘之後,你應該能得到這樣的效果,此處檢測時間爲19.007486秒

關閉圖片後會自動安裝opencv,並打開一個文檔,編輯Makefile文件內容如下

保存後,關閉文檔,腳本繼續運行,並再次運行yolov3進行圖片測試

使用opencv後,檢測完成後會自動打開圖片,到此腳本執行完畢,整個過程在10分鐘以內

由於開啓了openmp,使用多核編程,檢測速度有所提升,此處檢測時間爲5.730782秒

檢測速度的提升是由於openmp的原因,opencv並不會提高檢測速度

 測試檢測效果的命令介紹如下:

./darknet detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights data/dog.jpg
命令拆解 含義
./  當前目錄(darknet目錄)
./darknet     運行當前目錄下的名爲darknet文件
dector test 運行指令類型:測試     (使用detect指令替代時,數據文件默認爲cfg/coco.data,不用再單獨指定)
cfg/coco.data  數據指向文件路徑(文件內容有數據的類別數、類別名、訓練集的圖片路徑、驗證集的圖片路徑等)
cfg/yolov3.cfg yolo網絡模型配置文件路徑(文件內容有網絡的層數、每一層的參數、學習率、激活函數等等)
yolov3.weights yolo網絡的權重文件路徑,darknet官網提供
data/dog.jpg 待檢測圖片路徑

darknet/data目錄下還有一些其他圖片可供測試,你也可以將命令中檢測圖片的路徑指向你希望的圖片文件

二、gpu版本

有nvidia顯卡的朋友可以用cpu或者gpu跑yolo模型,使用gpu時darknet、opencv、cuda、cudnn最好全部安裝

在安裝cuda和cudnn之前需要先確認nvidia顯卡驅動是否已經成功安裝

強調:只有nvidia的顯卡才支持cuda和cudnn,如果沒有符合條件的顯卡,請不要花費時間來安裝cuda和cudnn

打開終端,輸入nvidia-smi,查看是否輸出顯卡信息以及支持的cuda版本

nvidia-smi

 

圖中信息顯示了:顯卡驅動版本爲440.59,支持的cuda最高版本爲10.2,顯卡型號爲GTX 108系列

如果沒有輸出類似上述的圖片,請先安裝顯卡驅動,再執行後面的cuda、cudnn安裝操作

這裏給出了ubuntu操作系統下安裝驅動的一些方法以供參考,如果能成功,這是最好的,如果不能成功,請參考其他教程,直到成功安裝驅動

ubuntu系列操作系統只需兩條命令完成驅動的安裝,沒有其他繁瑣的操作(親測有效)

ubuntu-drivers devices
sudo ubuntu-drivers autoinstall

驅動安裝完成後需要重啓才能生效

reboot

下面是顯卡驅動安裝的自動化腳本

英偉達顯卡驅動官網下載頁面 https://www.nvidia.cn/Download/index.aspx?lang=cn

#顯卡驅動安裝方法參考
#強調:只有nvidia的顯卡才支持cuda和cudnn,如果沒有符合條件的顯卡,請不要花費時間來安裝cuda和cudnn
#方法1: 在ubuntu的 軟件和更新 中的 附加驅動 選項選擇安裝(命令行下的ubuntu-drivers devices)
#方法2: 在官網下載對應顯卡驅動文件,運行驅動安裝文件
#安裝完成後需要重啓系統
#直到在終端輸入nvidia-smi可以看到顯卡信息爲止
#英偉達顯卡驅動官網下載 https://www.nvidia.cn/Download/index.aspx?lang=cn

#顯卡驅動安裝法1(推薦)
#搜索ubuntu系統檢測到的驅動
ubuntu-drivers devices

#自動安裝合適的驅動
sudo ubuntu-drivers autoinstall

#顯卡驅動安裝法2
#查看顯卡信息
#lspci | grep -i nvidia

#官網下載GTX 1080ti Linux-64驅動
#wget -c http://cn.download.nvidia.com/XFree86/Linux-x86_64/440.82/NVIDIA-Linux-x86_64-440.82.run

#運行驅動安裝文件
#sudo sh NVIDIA-Linux*.run

#驅動安裝完成後需要重啓生效
#reboot

下面的一系列操作都認爲你已經成功安裝了顯卡驅動,並通過終端命令nvidia-smi,輸出了顯卡的相關信息

 

提前下載cuda和cudnn文件

官網下載cuda文件(可選),鏈接https://developer.nvidia.com/cuda-toolkit-archived

官網下載cudnn文件(可選),鏈接:https://developer.nvidia.com/rdp/cudnn-download

提示:官網下載cudnn必須註冊登錄

注意:cuda與cudnn的版本需要一一對應
cudnn 7.6.5 <--> cuda9.0、cuda9.2、cuda10.0、cuda10.1、cuda10.2
cudnn 8.0.0 <--> cuda10.2、cuda11.0

本機下載cuda10.0,cudnn7.6,文件放在主目錄下 ~/

一定將文件放在主目錄下,因爲腳本中會到主目錄下尋找文件,如果希望放在其它位置,請修改腳本中對應的cd 命令後爲你指定的路徑

#到主目錄下解壓文件
cd ~
tar -xzvf cudnn*.tgz

驅動安裝成功、文件下載並放好位置後,就可以執行下面的shell腳本文件了

編寫gpu下的自動化處理腳本

#!/bin/bash
#auther:lishan
#time:2020/6/19
#funcation:搭建yolo訓練環境gpu版本,安裝darknet + opencv + cuda + cudnn
#instruction:此腳本僅供參考,可自行修改命令,特別是下載速度過慢時,可註釋掉wget開頭的命令(#爲註釋符),
#            並用其它方式將對應文件放到darknet目錄下
#attention:腳本測試時使用操作系統爲ubuntu18.04 LTS 桌面版64位,gpu爲GTX 1080ti
 
#darknet官網:https://pjreddie.com/darknet/yolo/
#opencv官網:https://opencv.org/
#nvidia官網:https://www.nvidia.cn/
#運行腳本之前先確認顯卡驅動已經安裝成功,輸入nvidia-smi,查看是否有輸出
 
#--------------------------------------------------------------------
################## part one: darkent ######################
#更新軟件源
sudo apt update
  
#安裝必要工具
sudo apt install git gcc g++ make -y
 
#安裝文本編輯器
sudo apt install gedit -y
 
#安裝圖片查看器
sudo apt install eom -y
 
#安裝視頻播放器
sudo apt install  vlc -y
 
#下載darknet
cd ~
git clone https://github.com/pjreddie/darknet.git
  
#下載yolov3權重文件
#若下載過程中,網絡較差,可用其他方法下載
cd ~/darknet
wget -c https://pjreddie.com/media/files/yolov3.weights
 
#下載yolov3-tiny權重文件
#wget -c https://pjreddie.com/media/files/yolov3-tiny.weights
   
#--------------------------------------------------------------------
################## part two: opencv ######################
#安裝opencv
sudo apt install libopencv-dev -y
 
#--------------------------------------------------------------------
################## part three: cuda ######################
#instruction: 本機顯卡爲GTX 1080ti,下載cuda版本爲10.0
#在安裝cuda之前,請自行安裝顯卡驅動,安裝方法請參考其他教程
#note:腳本默認已經安裝好顯卡驅動

#--------------------------------------------------------------------
#方法1:自動安裝(目前安裝的最新版本爲9.1,所以需要自行下載cudnn7.6)
#cuda與cudnn版本需要一一對應
#cudnn 7.6.5 <--> cuda9.0、cuda9.2、cuda10.0、cuda10.1、cuda10.2
#cudnn 8.0.0 <--> cuda10.2、cuda11.0

#自動安裝
sudo apt install nvidia-cuda-toolkit -y

#默認安裝位置是/usr/lib/cuda/,需要移動到/usr/local/
sudo mv /usr/lib/cuda/ /usr/local/

#-------------------------------------------------------------------- 
#方法2:官網下載安裝
#cuda官網下載:https://developer.nvidia.com/cuda-toolkit-archive
#打開官網,根據自己的顯卡型號找到需要的版本鏈接,替換掉wget -c 後的鏈接地址
#或者提前下載好文件之後放在主目錄下(~/),並註釋wget命令

#cd ~
#下載cuda 10.0.130_410.48_linux
#wget -c https://developer.nvidia.com/compute/cuda/10.0/Prod/local_installers/cuda_10.0.130_410.48_linux
 
#下載cuda 9.0.176_384.81_linux
#wget -c https://developer.nvidia.com/compute/cuda/9.0/Prod/local_installers/cuda_9.0.176_384.81_linux-run
 
#運行cuda安裝文件
#sudo sh cuda*linux.run
#第一次選擇n,後面選擇y
 
#--------------------------------------------------------------------
#添加環境變量
echo "export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}" >> ~/.bashrc
echo "export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}" >> ~/.bashrc
 
#更新環境變量
source ~/.bashrc
 
#--------------------------------------------------------------------
################## part four: cudnn ######################
#cuda與cudnn版本需要一一對應
#cudnn 7.6.5 <--> cuda9.0、cuda9.2、cuda10.0、cuda10.1、cuda10.2
#cudnn 8.0.0 <--> cuda10.2、cuda11.0
 
#下載cudnn 7.6.5
# 請通過官網下載  https://developer.nvidia.com/compute/machine-learning/cudnn/secure/7.6.5.32/Production/10.0_20191031/cudnn-10.0-linux-x64-v7.6.5.32.tgz
# 並移動到主目錄(~/)下
 
#到主目錄下解壓文件
cd ~
tar -xzvf cudnn*.tgz
 
#複製cudnn文件到上一步安裝的cuda中 
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 /usr/local/cuda/lib64/libcudnn*
 
#--------------------------------------------------------------------
#編譯darknet
cd ~/darknet
 
#編輯Makefile文件
#GPU=1,CUDNN=1,OPENCV=1,OPENMP=1
gedit Makefile
 
#編譯
make
 
#運行yolov3進行圖片測試
./darknet detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights data/dog.jpg

 以上所有所有工作完成後,一條命令運行腳本,自動安裝

安裝完成後會自動打開一個文檔,修改Makefile文件,內容如下

 

提示:安裝的cuda對應GPU功能,cudnn對應CUDNN功能,opencv對應OPENCV,cpu多核對應OPENMP,

符合對應條件即可將其值改爲1 

保存並退出後,腳本繼續運行
如果一切正常(網速良好),你會看到這樣的效果,整個過程(不包括cuda和cudnn文件的下載)在15分鐘以內

 與cpu檢測的時間相比,此處gpu爲0.038935秒,前面cpu檢測爲5.730782秒,檢測時間相差147倍左右

 

最後在gpu下跑一下yolo的其他示例

2、調用電腦攝像頭實時視頻檢測

./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights

 我的臺式主機沒有連接攝像頭,所有這裏沒有測試

3、檢測視頻文件

./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights <video file>

<video file>爲你的視頻文件相對darknet目錄的位置,視頻需要自己提前準備

例如,將1.mp4文件放在darknet目錄下,然後執行下面命令

./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights 1.mp4

 視頻檢測結果後面放上

如果安裝過程中出現任何問題,首先依次檢查四個環境是否安裝成功

1、測試darknet:

./darknet

 2、測試opencv

opencv_version

3、測試cuda

nvcc -V

 你應該得到類似這樣的圖

 

 4、測試cudnn

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

然後修改darknet目錄下的Makefile文件,修改開頭幾行的值爲0或1,以便下一步測試對應功能是否正常。然後執行make命令,最後再次檢測,如果正常通過,說明Makefile文件中開頭幾行中值爲1的對應項工作正常

 

 

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