AlexeyAB DarkNet YOLOv3框架解析与应用实践(三)
AlexeyAB DarkNet YOLOv3框架解析與應用實踐(三)
ImageNet分類
您可以使用Darknet為1000級ImageNet挑戰賽分類圖像。如果你還沒有安裝Darknet,你應該先安裝。
使用預先訓練的模型分類
下面是安裝Darknet、下載分類權重文件和在圖像上運行分類器的命令:
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模型,您可以在下面有關它的信息。運行此命令后,您將看到以下輸出:
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在加載配置文件和權重時顯示信息,然后對圖像進行分類并打印圖像的前10個類。海藻是一種混合品種的狗,但她有很多軟弱無力,所以我們認為這是一個成功的!
您也可以嘗試使用其他圖像,如禿鷹圖像:
./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
不錯!
如果未指定圖像文件,則在運行時將提示您輸入圖像。這樣,您就可以在一行中對多個對象進行分類,而無需重新加載整個模型。使用命令:
./darknet classifier predict cfg/imagenet1k.data
cfg/darknet19.cfg darknet19.weights
然后您將得到一個提示,如下所示:
…
25: Softmax Layer: 1000 inputs
Loading weights from darknet19.weights…Done!
Enter Image Path:
每當你厭倦了分類圖像,你可以使用Ctrl-C退出程序。
在ImageNet上驗證
到處都可以看到這些驗證集編號。也許你想再檢查一下這些模型的實際工作情況。我們來吧!
首先需要下載驗證圖像和cls
loc注釋。你可以把它們弄到這里,但你得記帳!下載完所有內容后,您應該有一個包含ILSVRC2012_bbox_val_v3.tgz和ILSVRC2012_img_val.tar的目錄。首先我們打開包裝:
tar -xzf ILSVRC2012_bbox_val_v3.tgz
mkdir -p imgs && tar xf ILSVRC2012_img_val.tar
-C imgs
現在我們有了圖像和注釋,但我們需要標記圖像,以便Darknet能夠評估其預測。我們使用這個bash腳本來實現這一點。它已經在腳本/子目錄中了。我們只需再次獲取并運行它:
wget
https://pjreddie.com/media/files/imagenet_label.sh
bash imagenet_label.sh
這將生成兩個內容:一個名為labeled/的目錄,其中包含指向圖像的重命名符號鏈接;另一個名為inet.val.list的文件,其中包含標記圖像的路徑列表。我們需要將此文件移動到Darknet中的data/子目錄:
mv inet.val.list
/darknet/data
現在你終于可以驗證你的模型了!先把darknet重新make出來。然后運行驗證例程,如下所示:
./darknet classifier valid cfg/imagenet1k.data
cfg/darknet19.cfg darknet19.weights
注意:如果不使用OpenCV編譯Darknet,那么就無法加載所有ImageNet圖像,因為其中一些圖像是stbúu image.h不支持的奇怪格式。
如果不使用CUDA編譯,您仍然可以在ImageNet上驗證,但這將需要相當長的時間。不推薦。 預先訓練的模型
這里有各種用于ImageNet分類的預訓練模型。準確度在ImageNet上測量為單crop驗證準確度。GPU計時是在Titan X上測量的,CPU計時是在單核Intel i7-4790K(4 GHz)上運行的。在OPENMP中使用多線程應該與cpu的比例成線性關系。
Alxnet
開始創新的模式!最初的模型是瘋狂的分裂GPU的事情,所以這是一些后續工作的模型。
· 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參考模型
這個模型設計得很小但是很強大。它獲得了與AlexNet相同的前1名和前5名的性能,但參數只有1/10。它主要使用卷積層,而沒有在末端的大型完全連接層。它的速度大約是AlexNet在CPU上的兩倍,這使得它更適合一些視覺應用。
· 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
牛津大學的視覺幾何小組為ILSVRC-2014比賽開發了VGG-16模型。它具有很高的分類精度和廣泛的應用前景。我把這個版本改編自Caffe預先訓練的模型。它被訓練為另外6個階段,以適應特定于darknet的圖像預處理(而不是平均減法darknet調整圖像介于-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
開發了這個模型作為GoogleNet模型的一個分支。它不使用“初始”模塊,只使用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
我修改了提取網絡,使之更快更準確。這個網絡是一種融合了darknet參考網絡和特征提取以及眾多論文(如網絡中的網絡、初始和批量規范化)的思想。
· 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
我用一個更大的輸入圖像大小448x448,為10多個時期訓練了Darknet19。該模型性能明顯更好,但速度較慢,因為整個圖像更大。
· 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
出于某種原因,人們喜歡這些網絡,即使他們是如此緩慢。
· 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
出于某種原因,人們喜歡這些網絡,即使他們是如此緩慢。
· 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一樣,仍然很慢,因為它們有很多層,但至少它們工作得很好!
· 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)
總結
以上是生活随笔為你收集整理的AlexeyAB DarkNet YOLOv3框架解析与应用实践(三)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AlexeyAB DarkNet YOL
- 下一篇: AlexeyAB DarkNet YOL