linux下darknet深度學習框架上手

  darknet是一個基於c與cuda輕量級深度學習框架,編譯部署簡單,移植性好,適合初學者上手。下面來介紹一下dark的安裝和簡單使用。html

1.darknet源碼的下載和編譯

1.1 darknet介紹

  Darknet深度學習框架是由Joseph Redmon提出的一個用C和CUDA編寫的開源神經網絡框架。它安裝速度快,易於安裝,並支持CPU和GPU(CUDA/cuDNN)計算。且支持opencv(可選,用於圖像和視頻的顯示)和openmp(可選,用於支持for語句的並行處理,能夠加快cpu的並行處理速度並大幅提升框架的檢測效率)。git

1.2 YOLO算法

1.2.1 算法簡介

  YOLO(You Only Look Once)是Joseph Redmon針對darknet框架提出的核心目標檢測算法,做者在算法中把物體檢測問題處理成迴歸問題,用一個卷積神經網絡結構就能夠從輸入圖像直接預測bounding box和類別機率。
  YOLO是基於深度學習的端到端的實時目標檢測系統。與大部分目標檢測與識別方法(好比Fast R-CNN)將目標識別任務分類目標區域預測和類別預測等多個流程不一樣,YOLO將目標區域預測和目標類別預測整合於單個神經網絡模型中,實如今準確率較高的狀況下快速目標檢測與識別,更加適合現場應用環境。github

1.2.2 算法的優勢:

  一、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。能夠理解爲泛化能力強。
  四、準確率高。算法

1.2.3 算法的缺點:

一、位置精確性差
二、召回率低
注:召回率:正確的結果有多少被你給出了網絡

1.2.4

  支持person,bicycle,car,motorbike,aeroplane,bus,train
truck,boat等共80中物體的識別(見darknet/data/coco.names)。框架

2. darknet源碼編譯

  進入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

3. 檢測圖片

  使用官網訓練的權重進行檢測:

$ ./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
  而檢測的結果相同:
clipboard.png  如此可見,使用OPENMP以後,程序的CPU並行效率提升3倍以上。opencv用於打開圖片和視頻,對檢測的效率無提高做用。

相關文章
相關標籤/搜索