AlexeyAB DarkNet YOLOv3框架解析与应用实践(一)
AlexeyAB DarkNet YOLOv3框架解析與應(yīng)用實(shí)踐(一)
Darknet: C語言中的開源神經(jīng)網(wǎng)絡(luò)
Darknet是一個(gè)用C和CUDA編寫的開源神經(jīng)網(wǎng)絡(luò)框架。它速度快,易于安裝,支持CPU和GPU計(jì)算。您可以在GitHub上找到源代碼,也可以在這里關(guān)于Darknet可以做什么的信息:
- Installing Darknet
Darknet易于安裝,只有兩個(gè)可選依賴項(xiàng):
OpenCV,如果你想要更廣泛的支持圖像類型。
如果你想計(jì)算GPU的話,安裝CUDA。
兩者都是可選的,所以讓我們從安裝基本系統(tǒng)開始。我只在Linux和Mac電腦上測試過。
Installing
The Base System
首先在這里獲取Darknet git存儲(chǔ)庫。這可以通過以下方式實(shí)現(xiàn):
git clone
https://github.com/pjreddie/darknet.git
cd darknet
make
如果這有效,你會(huì)看到一大堆編譯信息飛馳而過:
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…
如果你有任何錯(cuò)誤,試著去修正它們?如果一切看起來都編譯正確,請嘗試運(yùn)行它!
./darknet
你應(yīng)該得到輸出:
usage: ./darknet
使用CUDA編譯
CPU上的Darknet速度很快,但是GPU上的速度快了500倍!你必須有一個(gè)Nvidia的GPU,你必須安裝CUDA。我不會(huì)詳細(xì)介紹CUDA的安裝,因?yàn)樗芸膳隆?/p>
安裝CUDA后,將基本目錄中Makefile的第一行更改為:
GPU=1
現(xiàn)在你可以做這個(gè)項(xiàng)目,CUDA將被啟用。默認(rèn)情況下,它將在系統(tǒng)的第0個(gè)圖形卡上運(yùn)行網(wǎng)絡(luò)(如果正確安裝了CUDA,則可以使用nvidia smi列出圖形卡)。如果要更改Darknet使用的卡,可以給它一個(gè)可選的命令行標(biāo)志-i,例如:
./darknet -i 1 imagenet test cfg/alexnet.cfg
alexnet.weights
如果您使用CUDA編譯,但出于任何原因希望進(jìn)行CPU計(jì)算,則可以使用-nogpu來代替CPU:
./darknet -nogpu imagenet test
cfg/alexnet.cfg alexnet.weights
用OpenCV編譯
默認(rèn)情況下,Darknet使用stb_image.h加載圖像。如果你想更多的支持奇怪的格式(像CMYK jpeg),你可以使用OpenCV代替!OpenCV還允許您查看圖像和檢測,而無需將它們保存到磁盤。
首先安裝OpenCV。如果從源代碼處執(zhí)行此操作,則會(huì)很長且很復(fù)雜,因此請嘗試讓包管理器為您執(zhí)行此操作。
接下來,將Makefile的第2行更改為:
OPENCV=1
完成了!嘗試一下,首先重新做一個(gè)項(xiàng)目。然后使用imtest例程測試圖像加載和顯示:
./darknet imtest data/eagle.jpg
- YOLO:實(shí)時(shí)目標(biāo)檢測
你只看一次(YOLO)是一個(gè)最先進(jìn)的實(shí)時(shí)物體檢測系統(tǒng)。在Pascal Titan X上,它以每秒30幀的速度處理圖像,在COCO test-dev上有57.9%的mAP。
與其他檢測模型的比較
YOLOv3非常快速和準(zhǔn)確。在0.5 IOU處測得的mAP中,YOLOv3與焦距損失相當(dāng),但速度快了約4倍。此外,可以輕松地權(quán)衡速度和準(zhǔn)確性之間的簡單改變模型的大小,無需再訓(xùn)練!
工作原理
先前的檢測系統(tǒng)重新利用分類器或定位器來執(zhí)行檢測。他們將模型應(yīng)用于多個(gè)位置和比例的圖像。圖像的高分區(qū)域被認(rèn)為是檢測。
使用完全不同的方法。將單一的神經(jīng)網(wǎng)絡(luò)應(yīng)用于完整的圖像。該網(wǎng)絡(luò)將圖像分為多個(gè)區(qū)域,并預(yù)測每個(gè)區(qū)域的包圍盒和概率。這些邊界框由預(yù)測的概率加權(quán)。
與基于分類器的系統(tǒng)相比,我們的模型有幾個(gè)優(yōu)點(diǎn)。它在測試時(shí)查看整個(gè)圖像,因此它的預(yù)測由圖像中的全局上下文通知。它也用單一的網(wǎng)絡(luò)評估來預(yù)測,不像R-CNN這樣的系統(tǒng)需要數(shù)千張單一的圖像。這使得它非常快,比R-CNN快1000倍,比R-CNN快100倍。有關(guān)完整系統(tǒng)的詳細(xì)信息,請參閱我們的論文。
總結(jié)
以上是生活随笔為你收集整理的AlexeyAB DarkNet YOLOv3框架解析与应用实践(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三路摄像头后视系统
- 下一篇: AlexeyAB DarkNet YOL