darknet是一個基於c與cuda輕量級深度學習框架,編譯部署簡單,移植性好,適合初學者上手。下面來介紹一下dark的安裝和簡單使用。html
Darknet深度學習框架是由Joseph Redmon提出的一個用C和CUDA編寫的開源神經網絡框架。它安裝速度快,易於安裝,並支持CPU和GPU(CUDA/cuDNN)計算。且支持opencv(可選,用於圖像和視頻的顯示)和openmp(可選,用於支持for語句的並行處理,能夠加快cpu的並行處理速度並大幅提升框架的檢測效率)。git
YOLO(You Only Look Once)是Joseph Redmon針對darknet框架提出的核心目標檢測算法,做者在算法中把物體檢測問題處理成迴歸問題,用一個卷積神經網絡結構就能夠從輸入圖像直接預測bounding box和類別機率。
YOLO是基於深度學習的端到端的實時目標檢測系統。與大部分目標檢測與識別方法(好比Fast R-CNN)將目標識別任務分類目標區域預測和類別預測等多個流程不一樣,YOLO將目標區域預測和目標類別預測整合於單個神經網絡模型中,實如今準確率較高的狀況下快速目標檢測與識別,更加適合現場應用環境。github
一、YOLO的速度很是快。在cpu上是7秒一幀圖像(開啓openmp的狀況下),在Titan X GPU上的速度是45 fps(frames per second),加速版的YOLO差很少是150fps。
二、YOLO是基於圖像的全局信息進行預測的。這一點和基於sliding window以及region proposal等檢測算法不同。與Fast R-CNN相比,YOLO在誤檢測(將背景檢測爲物體)方面的錯誤率能下降一半多。
三、能夠學到物體的generalizable-representations。能夠理解爲泛化能力強。
四、準確率高。算法
一、位置精確性差
二、召回率低
注:召回率:正確的結果有多少被你給出了網絡
支持person,bicycle,car,motorbike,aeroplane,bus,train
truck,boat等共80中物體的識別(見darknet/data/coco.names)。框架
進入darknet官網,運行學習
$ git clone https://github.com/pjreddie/darknet $ cd darknet $ make
能夠編譯出c版本的darknet,若是須要編譯GPU版本、打開cudnn(cuDNN只是NVIDIA深度神經網絡軟件開發包中的其中一種加速庫)、opencv(跨平臺計算機視覺庫)、openmp(for語句並行處理),可用gedit打開makefile,打開相應的項(注:opencv、cudnn須要另行安裝,GPU、cudnn須要NVIDIA顯卡):ui
GPU=0 CUDNN=0 OPENCV=0 OPENMP=0 DEBUG=0
因爲本人的電腦沒有NVIDIA顯卡,故這裏只說明一下opencv的安裝,先到opencv官網下載opencv2,主要當前最新的版本是opencv4,可是darknet只支持opencv2。而後解壓、安裝:spa
$ unzip opencv-2.4.13.6.zip $ sudo apt-get install cmake $ udo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev $ cd opencv-2.4.13.6 $ mkdir build $ cd build $ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local .. $ make -j7 $ make install
opencv安裝成功,開始編譯opencv的darknet,進入darknet目錄:code
$ vi Makefile GPU=0 CUDNN=0 OPENCV=1 OPENMP=1 DEBUG=0
如上所示,打開opencv和openmp選項,而後wq保存退出。而後執行:
make
程序將在當前目錄下生成darknet文件.
下載官方訓練的權重:到darknet當前目錄:
$ wget https://pjreddie.com/media/files/yolov3.weights
使用官網訓練的權重進行檢測:
$ ./darknet detect cfg/yolov3.cfg yolov3.weights ./data/timg.jpeg
注:該檢測照片是本人從網上下載的一張照片。
不打開OPENMP時檢測一張圖片消耗的時間分別爲(五次):
24.889,23.650,23.705,22.262,23.095,
平均時間爲:
23.520
打開OPENMP檢測一張圖片消耗的時間分別爲(五次):
7.384,7.892,7.627,7.203,7.796
平均時間爲:
7.580s
而檢測的結果相同:
如此可見,使用OPENMP以後,程序的CPU並行效率提升3倍以上。opencv用於打開圖片和視頻,對檢測的效率無提高做用。