AlexeyAB DarkNet YOLOv3框架解析與應用實踐(一)


AlexeyAB DarkNet YOLOv3框架解析與應用實踐(一)

Darknet:  C語言中的開源神經網絡             

Darknet是一個用C和CUDA編寫的開源神經網絡框架。它速度快,易於安裝,支持CPU和GPU計算。您可以在GitHub上找到源代碼,也可以在這里閱讀更多關於Darknet可以做什么的信息:

1.  Installing Darknet

Darknet易於安裝,只有兩個可選依賴項:             

OpenCV,如果你想要更廣泛的支持圖像類型。             

如果你想計算GPU的話,安裝CUDA。             

兩者都是可選的,所以讓我們從安裝基本系統開始。我只在Linux和Mac電腦上測試過。

Installing The Base System

首先在這里獲取Darknet git存儲庫。這可以通過以下方式實現:

git clone https://github.com/pjreddie/darknet.git

cd darknet

make

如果這有效,你會看到一大堆編譯信息飛馳而過:

mkdir -p obj

gcc -I/usr/local/cuda/include/  -Wall -Wfatal-errors  -Ofast....

gcc -I/usr/local/cuda/include/  -Wall -Wfatal-errors  -Ofast....

gcc -I/usr/local/cuda/include/  -Wall -Wfatal-errors  -Ofast....

.....

gcc -I/usr/local/cuda/include/  -Wall -Wfatal-errors  -Ofast -lm....

如果你有任何錯誤,試着去修正它們?如果一切看起來都編譯正確,請嘗試運行它!

./darknet

你應該得到輸出:

usage: ./darknet <function>

使用CUDA編譯             

CPU上的Darknet速度很快,但是GPU上的速度快了500倍!你必須有一個Nvidia的GPU,你必須安裝CUDA。我不會詳細介紹CUDA的安裝,因為它很可怕。             

安裝CUDA后,將基本目錄中Makefile的第一行更改為:

GPU=1

現在你可以做這個項目,CUDA將被啟用。默認情況下,它將在系統的第0個圖形卡上運行網絡(如果正確安裝了CUDA,則可以使用nvidia smi列出圖形卡)。如果要更改Darknet使用的卡,可以給它一個可選的命令行標志-i<index>,例如:

./darknet -i 1 imagenet test cfg/alexnet.cfg alexnet.weights

如果您使用CUDA編譯,但出於任何原因希望進行CPU計算,則可以使用-nogpu來代替CPU:

./darknet -nogpu imagenet test cfg/alexnet.cfg alexnet.weights

OpenCV編譯            

 默認情況下,Darknet使用stb_image.h加載圖像。如果你想更多的支持奇怪的格式(像CMYK jpeg),你可以使用OpenCV代替!OpenCV還允許您查看圖像和檢測,而無需將它們保存到磁盤。             

首先安裝OpenCV。如果從源代碼處執行此操作,則會很長且很復雜,因此請嘗試讓包管理器為您執行此操作。            

 接下來,將Makefile的第2行更改為:

OPENCV=1

完成了!嘗試一下,首先重新做一個項目。然后使用imtest例程測試圖像加載和顯示:

./darknet imtest data/eagle.jpg

2. YOLO:實時目標檢測

你只看一次(YOLO)是一個最先進的實時物體檢測系統。在Pascal Titan X上,它以每秒30幀的速度處理圖像,在COCO test-dev上有57.9%的mAP。

與其他檢測模型的比較             

YOLOv3非常快速和准確。在0.5 IOU處測得的mAP中,YOLOv3與焦距損失相當,但速度快了約4倍。此外,可以輕松地權衡速度和准確性之間的簡單改變模型的大小,無需再訓練!

 

 

 

 工作原理             

先前的檢測系統重新利用分類器或定位器來執行檢測。他們將模型應用於多個位置和比例的圖像。圖像的高分區域被認為是檢測。             

使用完全不同的方法。將單一的神經網絡應用於完整的圖像。該網絡將圖像分為多個區域,並預測每個區域的包圍盒和概率。這些邊界框由預測的概率加權。

與基於分類器的系統相比,我們的模型有幾個優點。它在測試時查看整個圖像,因此它的預測由圖像中的全局上下文通知。它也用單一的網絡評估來預測,不像R-CNN這樣的系統需要數千張單一的圖像。這使得它非常快,比R-CNN快1000倍,比R-CNN快100倍。有關完整系統的詳細信息,請參閱我們的論文。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM