darknet開源地址:https://github.com/pjreddie/darknet
darknet作者維護官網:https://pjreddie.com/darknet/
darknet作者給出的安裝教程:https://pjreddie.com/darknet/install/
darknet是yolo算法的作者Joseph Redmon使用c語言編寫的一個開源卷積神經網絡訓練框架
如果項目中用到了yolo,darknet框架是你的不二之選
一、Linux下安裝darknet
ctrl+T打開一個linux終端,輸入以下命令
git clone https://github.com/pjreddie/darknet.git
這條命令將會從github上克隆darknet最新的版本文件到當前目錄下
你也可以先通過cd命令進入到指定的目錄下,再使用git clone命令
出現錯誤,未安裝git,按照提示進行修復
sudo apt-get update
sudo apt install git
成功clone到本地,可以在主目錄下看到darknet文件夾
下面開始編譯,先安裝make
sudo apt install make
sudo apt install make-guile
又出現錯誤了,按照網上教程,刪除這兩個文件
sudo rm -r -f /var/lib/dpkg/lock-frontend
sudo rm -r -f /var/lib/dpkg/lock
sudo rm -r -f /var/cache/apt/archives/lock
sudo rm -r -f /var/cache/apt/archives
依次安裝make和make-guile,也可以只安裝make,安裝完成如下
執行make命令,出現錯誤,gcc也沒安裝
原諒這是我是剛安裝好的linux,只安裝了一個搜狗輸入法和wps
sudo apt install gcc
再執行make命令進行編譯,結果發現g++也沒安裝,
此時已經出現了太多的錯誤,但這對於我這樣的新手來說error是家常便飯
根據《論程序員的自我修養》一書,我們也不能摔鍵盤,要靜下心來查錯,繼續安裝
sudo apt install g++
再次執行make,終於成功了
安裝完成後,darknet文件目錄下多出了一些文件
測試安裝結果
./darknet
當出現圖中所示結果時,說明我們已經能夠使用darknet框架,可以開始yolo訓練之旅了
我們可以先使用imtest
例程測試圖像加載和顯示,看一下效果
./darknet imtest data/eagle.jpg
出現了一堆長相一樣的老鷹的圖像,測試成功
根據提示信息,發現我們沒有安裝OpenCV
我們最好安裝一下OpneCv,除非你有理由不想安裝,因爲這樣可以方便的處理各種格式的圖像
如果不安裝OpenCV,直接跳到第三步,也是可以使用darknet的
二、OpenCV安裝
詳細教程可參考:https://www.cnblogs.com/zzy1024/p/11405641.html
執行cd命令,跳轉到指定目錄下
1、從github上克隆OpenCV核心庫到本地
cd ..
git clone https://github.com/opencv/opencv.git
當發現下載速度比較慢的時候可以考慮直接從github上下載zip文件到本地
下載地址:https://github.com/opencv/opencv
2、克隆OpenCV的擴展庫OpenCV_Contrib到本地,如果不安裝擴展庫,也是可以使用OpenCV的,但是建議安裝
git clone https://github.com/opencv/opencv_contrib.git
同樣,如果覺得下載過慢,可以直接到github下載zip文件到本地
github 下載地址:https://github.com/opencv/opencv_contrib
移動擴展庫文件到opencv目錄下,並提取文件(解壓)
注意文件名後綴,git clone時沒有master後綴,使用zip下載時有master後綴
3、添加opencv所需要的依賴庫
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
第一條命令安裝了一個build-essential庫,可以方便的進行編譯
編譯程序有了這個軟件,它才知道頭文件和庫函數在哪,最後才形成一個開發環境。
第二條命令安裝了一個cmake、git等等軟件,其中cmake是一個跨平臺的編譯工具
第二條命令安裝了一些庫,包括python等等
如果執行第三條安裝命令時出錯,再執行下面的命令解決
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
再執行第三條命令
4、開始編譯OpenCV
在opencv目錄下創建文件夾 build(可以根據自己習慣命名)
cd opencv
mkdir build
cd build
在編譯前查看opencv_contrib文件夾名稱,如果採用git下載,那就是這個名稱
如果是zip下載後解壓,文件名就是opencv_contrib_master,可以考慮重命名爲opencv_contrib
使用cmake編譯opencv_contrib擴展庫源文件到當前目錄下
注意命令中結尾的擴展庫源文件名要與實際保持一致,請自行確認
cmake -D CMAKE_INSTALL_PREFIX=/usr/local -D CMAKE_BUILD_TYPE=Release -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ..
編譯成功
使用make編譯opencv
cd opencv/build
make
編譯過程非常漫長,如果處理器有多個核的話,可以使用以下命令加快編譯速度
make -j8
參數8代表使用8核,根據自己的硬件情況選擇 ,make命令默認使用1核
make編譯成功
注意:可能會發生internal compiler error: Killed (program cc1plus)錯誤
這是因爲虛擬機內存不足,可以考慮暫時給虛擬機分配大一點的內存,編譯完成後再恢復原來的設置
安裝python接口
sudo apt-get install python-opencv
5、測試安裝結果
python
import cv2
當沒有出現任何錯誤提示時,表示我們可以在python程序中使用OpenCV了
三、yolo下載
如果安裝了OpenCV,打開darknet目錄下的Makefile文件,將第三行改爲OPENCV=1
在darknet-->cfg目錄下(config的縮寫),可以看到yolo模型各種版本的配置文件
只有配置文件還不行,需要下載yolo網絡訓練權重文件
我們下載yolov3的權重文件(已經訓練好的文件),執行以下命令
cd darknet
wget https://pjreddie.com/media/files/yolov3.weights
權重文件237MB左右,同樣,如果覺得下載過慢,可以使用一些下載工具,比如xdown,複製鏈接,下載即可
再從windows下複製粘貼文件到darknet目錄下
當然你可以放在任意位置,但是要記住它的路徑,因爲後面需要用到這個文件
回過頭來,在darknet->data文件夾下有幾張示例圖片,比如這張經典的小狗
我們將嘗試使用剛纔下載的yolov3權重文件和yolov3的配置文件對這張小狗進行檢測
運行一下檢測效果
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
上面的命令表示:運行darknet框架進行檢測,其中
配置文件爲darknet/cfg/yolo3.cfg
權重文件爲darknet/yolov3.weights
待檢測圖片爲darknet/data/dog.jpg
輸出檢測圖片默認保存在darknet下
下面是見證奇蹟的時刻
識別到三個物體,分別是dog、truck、bicycle,花費時間33秒左右,如果使用GPU,這個時間要短一些
保存的圖片在darknet目錄下,名字爲predictions.jpg
你可以嘗試使用data目錄下的其他圖片進行檢測
未完待續,下一節我們將討論yolo模型的一些理論知識
附1 xdown下載鏈接(只支持windows):https://xdown.org/
附2 XDM下載鏈接(支持windows、linux、mac)https://subhra74.github.io/xdm/
安裝命令:
#進入文件所在目錄,根據自己情況修改
cd 下載/xdm-setup-7.2.10
#運行安裝腳本
sudo sh install.sh
雙擊啓動XDM
新建一個下載任務,粘貼下載鏈接
附3:Chrome瀏覽器的中文翻譯
進行深度學習時,我們不可避免的會瀏覽英文網頁,對於英語基礎不是很好的朋友來說,這似乎是一種痛苦。
所以我推薦使用Chrome瀏覽器,因爲在瀏覽英文網頁時,鼠標右鍵可以看到翻譯中文模式,如下
但是我還是建議大家克服英語的恐懼,從一些常見的單詞慢慢熟悉,通過單詞翻譯軟件,有意識的記憶,
日積月累,英語網頁的閱讀速度會慢慢提高