AlexeyAB DarkNet YOLOv3框架解析与应用实践(三)
AlexeyAB DarkNet YOLOv3框架解析與應(yīng)用實(shí)踐(三)
ImageNet分類(lèi)
您可以使用Darknet為1000級(jí)ImageNet挑戰(zhàn)賽分類(lèi)圖像。如果你還沒(méi)有安裝Darknet,你應(yīng)該先安裝。
使用預(yù)先訓(xùn)練的模型分類(lèi)
下面是安裝Darknet、下載分類(lèi)權(quán)重文件和在圖像上運(yùn)行分類(lèi)器的命令:
git clone https://github.com/pjreddie/darknet.git
cd darknet
make
wget
https://pjreddie.com/media/files/darknet19.weights
./darknet classifier predict cfg/imagenet1k.data
cfg/darknet19.cfg darknet19.weights data/dog.jpg
本例使用Darknet19模型,您可以在下面有關(guān)它的信息。運(yùn)行此命令后,您將看到以下輸出:
ayer
filters size input output
0
conv 32 3 x 3 / 1
256 x 256 x 3 ->
256 x 256 x 32 0.113 BFLOPs
1
max 2 x 2 / 2 256 x 256 x
32 -> 128 x 128 x
32
2
conv 64 3 x 3 / 1
128 x 128 x 32 ->
128 x 128 x 64 0.604 BFLOPs
3
max 2 x 2 / 2 128 x 128 x
64 -> 64 x
64 x 64
4
conv 128 3 x 3 / 1
64 x 64 x 64
-> 64 x 64 x 128
0.604 BFLOPs
5
conv 64 1 x 1 / 1
64 x 64 x 128 ->
64 x 64 x 64
0.067 BFLOPs
6
conv 128 3 x 3 / 1
64 x 64 x 64
-> 64 x 64 x 128
0.604 BFLOPs
7
max 2 x 2 / 2 64 x
64 x 128 -> 32 x
32 x 128
8
conv 256 3 x 3 / 1
32 x 32 x 128 ->
32 x 32 x 256 0.604 BFLOPs
9
conv 128 1 x 1 / 1
32 x 32 x 256 ->
32 x 32 x 128 0.067 BFLOPs
10
conv 256 3 x 3 / 1
32 x 32 x 128 ->
32 x 32 x 256 0.604 BFLOPs
11
max 2 x 2 / 2 32 x
32 x 256 -> 16 x
16 x 256
12
conv 512 3 x 3 / 1
16 x 16 x 256 ->
16 x 16 x 512 0.604 BFLOPs
13
conv 256 1 x 1 / 1
16 x 16 x 512 ->
16 x 16 x 256 0.067 BFLOPs
14
conv 512 3 x 3 / 1
16 x 16 x 256 ->
16 x 16 x 512 0.604 BFLOPs
15
conv 256 1 x 1 / 1
16 x 16 x 512 ->
16 x 16 x 256 0.067 BFLOPs
16
conv 512 3 x 3 / 1
16 x 16 x 256 ->
16 x 16 x 512 0.604 BFLOPs
17
max 2 x 2 / 2 16 x
16 x 512 -> 8 x
8 x 512
18
conv 1024 3 x 3 / 1
8 x 8 x 512 ->
8 x 8 x1024
0.604 BFLOPs
19
conv 512 1 x 1 / 1
8 x 8 x1024 ->
8 x 8 x 512 0.067 BFLOPs
20
conv 1024 3 x 3 / 1
8 x 8 x 512 ->
8 x 8 x1024 0.604 BFLOPs
21
conv 512 1 x 1 / 1
8 x 8 x1024 ->
8 x 8 x 512 0.067 BFLOPs
22
conv 1024 3 x 3 / 1
8 x 8 x 512 ->
8 x 8 x1024 0.604 BFLOPs
23
conv 1000 1 x 1 / 1
8 x 8 x1024 ->
8 x 8 x1000 0.131 BFLOPs
24
avg 8 x 8 x1000
-> 1000
25
softmax
1000
Loading weights from
darknet19.weights…Done!
data/dog.jpg: Predicted in 0.769246
seconds.
42.55%: malamute
22.93%: Eskimo dog
12.51%: Siberian husky
2.76%: bicycle-built-for-two
1.20%: mountain bike
Darknet在加載配置文件和權(quán)重時(shí)顯示信息,然后對(duì)圖像進(jìn)行分類(lèi)并打印圖像的前10個(gè)類(lèi)。海藻是一種混合品種的狗,但她有很多軟弱無(wú)力,所以我們認(rèn)為這是一個(gè)成功的!
您也可以嘗試使用其他圖像,如禿鷹圖像:
./darknet classifier predict cfg/imagenet1k.data
cfg/darknet19.cfg darknet19.weights data/eagle.jpg
生成:
…
data/eagle.jpg: Predicted in 0.707070 seconds.
84.68%: bald eagle
11.91%: kite
2.62%: vulture
0.08%: great
grey owl
0.07%: hen
不錯(cuò)!
如果未指定圖像文件,則在運(yùn)行時(shí)將提示您輸入圖像。這樣,您就可以在一行中對(duì)多個(gè)對(duì)象進(jìn)行分類(lèi),而無(wú)需重新加載整個(gè)模型。使用命令:
./darknet classifier predict cfg/imagenet1k.data
cfg/darknet19.cfg darknet19.weights
然后您將得到一個(gè)提示,如下所示:
…
25: Softmax Layer: 1000 inputs
Loading weights from darknet19.weights…Done!
Enter Image Path:
每當(dāng)你厭倦了分類(lèi)圖像,你可以使用Ctrl-C退出程序。
在ImageNet上驗(yàn)證
到處都可以看到這些驗(yàn)證集編號(hào)。也許你想再檢查一下這些模型的實(shí)際工作情況。我們來(lái)吧!
首先需要下載驗(yàn)證圖像和cls
loc注釋。你可以把它們弄到這里,但你得記帳!下載完所有內(nèi)容后,您應(yīng)該有一個(gè)包含ILSVRC2012_bbox_val_v3.tgz和ILSVRC2012_img_val.tar的目錄。首先我們打開(kāi)包裝:
tar -xzf ILSVRC2012_bbox_val_v3.tgz
mkdir -p imgs && tar xf ILSVRC2012_img_val.tar
-C imgs
現(xiàn)在我們有了圖像和注釋,但我們需要標(biāo)記圖像,以便Darknet能夠評(píng)估其預(yù)測(cè)。我們使用這個(gè)bash腳本來(lái)實(shí)現(xiàn)這一點(diǎn)。它已經(jīng)在腳本/子目錄中了。我們只需再次獲取并運(yùn)行它:
wget
https://pjreddie.com/media/files/imagenet_label.sh
bash imagenet_label.sh
這將生成兩個(gè)內(nèi)容:一個(gè)名為labeled/的目錄,其中包含指向圖像的重命名符號(hào)鏈接;另一個(gè)名為inet.val.list的文件,其中包含標(biāo)記圖像的路徑列表。我們需要將此文件移動(dòng)到Darknet中的data/子目錄:
mv inet.val.list
/darknet/data
現(xiàn)在你終于可以驗(yàn)證你的模型了!先把darknet重新make出來(lái)。然后運(yùn)行驗(yàn)證例程,如下所示:
./darknet classifier valid cfg/imagenet1k.data
cfg/darknet19.cfg darknet19.weights
注意:如果不使用OpenCV編譯Darknet,那么就無(wú)法加載所有ImageNet圖像,因?yàn)槠渲幸恍﹫D像是stbúu image.h不支持的奇怪格式。
如果不使用CUDA編譯,您仍然可以在ImageNet上驗(yàn)證,但這將需要相當(dāng)長(zhǎng)的時(shí)間。不推薦。 預(yù)先訓(xùn)練的模型
這里有各種用于ImageNet分類(lèi)的預(yù)訓(xùn)練模型。準(zhǔn)確度在ImageNet上測(cè)量為單crop驗(yàn)證準(zhǔn)確度。GPU計(jì)時(shí)是在Titan X上測(cè)量的,CPU計(jì)時(shí)是在單核Intel i7-4790K(4 GHz)上運(yùn)行的。在OPENMP中使用多線程應(yīng)該與cpu的比例成線性關(guān)系。
Alxnet
開(kāi)始創(chuàng)新的模式!最初的模型是瘋狂的分裂GPU的事情,所以這是一些后續(xù)工作的模型。
· Top-1
Accuracy: 57.0%
· Top-5
Accuracy: 80.3%
· Forward
Timing: 3.1 ms/img
· CPU Forward
Timing: 0.29 s/img
· cfg file
· weight file (238 MB)
Darknet參考模型
這個(gè)模型設(shè)計(jì)得很小但是很強(qiáng)大。它獲得了與AlexNet相同的前1名和前5名的性能,但參數(shù)只有1/10。它主要使用卷積層,而沒(méi)有在末端的大型完全連接層。它的速度大約是AlexNet在CPU上的兩倍,這使得它更適合一些視覺(jué)應(yīng)用。
· Top-1 Accuracy:
61.1%
· Top-5
Accuracy: 83.0%
· Forward
Timing: 2.9 ms/img
· CPU Forward
Timing: 0.14 s/img
· cfg file
· weight file (28 MB)
VGG-16
牛津大學(xué)的視覺(jué)幾何小組為ILSVRC-2014比賽開(kāi)發(fā)了VGG-16模型。它具有很高的分類(lèi)精度和廣泛的應(yīng)用前景。我把這個(gè)版本改編自Caffe預(yù)先訓(xùn)練的模型。它被訓(xùn)練為另外6個(gè)階段,以適應(yīng)特定于darknet的圖像預(yù)處理(而不是平均減法darknet調(diào)整圖像介于-1和1之間)。
· Top-1
Accuracy: 70.5%
· Top-5
Accuracy: 90.0%
· Forward
Timing: 9.4 ms/img
· CPU Forward
Timing: 4.36 s/img
· cfg file
· weight file (528 MB)
Extraction
開(kāi)發(fā)了這個(gè)模型作為GoogleNet模型的一個(gè)分支。它不使用“初始”模塊,只使用1x1和3x3卷積層。
· Top-1
Accuracy: 72.5%
· Top-5
Accuracy: 90.8%
· Forward
Timing: 4.8 ms/img
· CPU Forward
Timing: 0.97 s/img
· cfg file
· weight file
(90 MB)
Darknet19
我修改了提取網(wǎng)絡(luò),使之更快更準(zhǔn)確。這個(gè)網(wǎng)絡(luò)是一種融合了darknet參考網(wǎng)絡(luò)和特征提取以及眾多論文(如網(wǎng)絡(luò)中的網(wǎng)絡(luò)、初始和批量規(guī)范化)的思想。
· Top-1
Accuracy: 72.9%
· Top-5
Accuracy: 91.2%
· Forward
Timing: 6.2 ms/img
· CPU Forward
Timing: 0.87 s/img
· cfg file
· weight file
(80 MB)
Darknet19
448x448
我用一個(gè)更大的輸入圖像大小448x448,為10多個(gè)時(shí)期訓(xùn)練了Darknet19。該模型性能明顯更好,但速度較慢,因?yàn)檎麄€(gè)圖像更大。
· Top-1
Accuracy: 76.4%
· Top-5
Accuracy: 93.5%
· Forward
Timing: 11.0 ms/img
· CPU Forward
Timing: 2.96 s/img
· cfg file
· weight file
(80 MB)
Resnet
50
出于某種原因,人們喜歡這些網(wǎng)絡(luò),即使他們是如此緩慢。
· Top-1
Accuracy: 75.8%
· Top-5
Accuracy: 92.9%
· Forward
Timing: 11.4 ms/img
· CPU Forward
Timing: 1.13 s/img
· cfg file
· weight file
(87 MB)
Resnet
152
出于某種原因,人們喜歡這些網(wǎng)絡(luò),即使他們是如此緩慢。
· Top-1
Accuracy: 77.6%
· Top-5
Accuracy: 93.8%
· Forward
Timing: 28.6 ms/img
· CPU Forward
Timing: 3.31 s/img
· cfg file
· weight file
(220 MB)
Densenet
201
我Densenet!他們是如此深沉,如此瘋狂,工作如此出色。像Resnet一樣,仍然很慢,因?yàn)樗鼈冇泻芏鄬?#xff0c;但至少它們工作得很好!
· Top-1
Accuracy: 77.0%
· Top-5
Accuracy: 93.7%
· Forward
Timing: 32.6 ms/img
· CPU Forward
Timing: 1.38 s/img
· cfg file
· weight file
(67 MB)
總結(jié)
以上是生活随笔為你收集整理的AlexeyAB DarkNet YOLOv3框架解析与应用实践(三)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: AlexeyAB DarkNet YOL
- 下一篇: AlexeyAB DarkNet YOL