本文用到的腳本文件等資源已經上傳,也可以直接下載使用:
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的對應項工作正常