写一个脚本,test_yolov3-tiny.bat,内容如下:
darknet detector test cfg/coco.data cfg/yolov3-tiny.cfg cfg/yolov3-tiny.weights data/dog.jpg -thresh 0.6
pause
双击执行,输出:
darknet detector test cfg/coco.data cfg/yolov3-tiny.cfg cfg/yolov3-tiny.weights data/dog.jpg -thresh 0.6
CUDA-version: 10000 (10020), cuDNN: 7.6.5, CUDNN_HALF=1, GPU count: 1
CUDNN_HALF=1
OpenCV version: 3.2.0
0 : compute_capability = 610, cudnn_half = 0, GPU: GeForce GTX 1080 Ti
net.optimized_memory = 0
mini_batch = 1, batch = 1, time_steps = 1, train = 0
layer filters size/strd(dil) input output
0 conv 16 3 x 3/ 1 416 x 416 x 3 -> 416 x 416 x 16 0.150 BF
1 max 2x 2/ 2 416 x 416 x 16 -> 208 x 208 x 16 0.003 BF
2 conv 32 3 x 3/ 1 208 x 208 x 16 -> 208 x 208 x 32 0.399 BF
3 max 2x 2/ 2 208 x 208 x 32 -> 104 x 104 x 32 0.001 BF
4 conv 64 3 x 3/ 1 104 x 104 x 32 -> 104 x 104 x 64 0.399 BF
5 max 2x 2/ 2 104 x 104 x 64 -> 52 x 52 x 64 0.001 BF
6 conv 128 3 x 3/ 1 52 x 52 x 64 -> 52 x 52 x 128 0.399 BF
7 max 2x 2/ 2 52 x 52 x 128 -> 26 x 26 x 128 0.000 BF
8 conv 256 3 x 3/ 1 26 x 26 x 128 -> 26 x 26 x 256 0.399 BF
9 max 2x 2/ 2 26 x 26 x 256 -> 13 x 13 x 256 0.000 BF
10 conv 512 3 x 3/ 1 13 x 13 x 256 -> 13 x 13 x 512 0.399 BF
11 max 2x 2/ 1 13 x 13 x 512 -> 13 x 13 x 512 0.000 BF
12 conv 1024 3 x 3/ 1 13 x 13 x 512 -> 13 x 13 x1024 1.595 BF
13 conv 256 1 x 1/ 1 13 x 13 x1024 -> 13 x 13 x 256 0.089 BF
14 conv 512 3 x 3/ 1 13 x 13 x 256 -> 13 x 13 x 512 0.399 BF
15 conv 255 1 x 1/ 1 13 x 13 x 512 -> 13 x 13 x 255 0.044 BF
16 yolo
[yolo] params: iou loss: mse (2), iou_norm: 0.75, obj_norm: 1.00, cls_norm: 1.00, delta_norm: 1.00, scale_x_y: 1.00
17 route 13 -> 13 x 13 x 256
18 conv 128 1 x 1/ 1 13 x 13 x 256 -> 13 x 13 x 128 0.011 BF
19 upsample 2x 13 x 13 x 128 -> 26 x 26 x 128
20 route 19 8 -> 26 x 26 x 384
21 conv 256 3 x 3/ 1 26 x 26 x 384 -> 26 x 26 x 256 1.196 BF
22 conv 255 1 x 1/ 1 26 x 26 x 256 -> 26 x 26 x 255 0.088 BF
23 yolo
[yolo] params: iou loss: mse (2), iou_norm: 0.75, obj_norm: 1.00, cls_norm: 1.00, delta_norm: 1.00, scale_x_y: 1.00
Total BFLOPS 5.571
avg_outputs = 341534
Allocate additional workspace_size = 52.43 MB
Loading weights from cfg/yolov3-tiny.weights...
seen 64, trained: 32013 K-images (500 Kilo-batches_64)
Done! Loaded 24 layers from weights-file
Detection layer: 16 - type = 28
Detection layer: 23 - type = 28
data/dog.jpg: Predicted in 3.370000 milli-seconds.
dog: 81%
car: 73%
从上面的输出可以看出yolov3-tiny.cfg里面配置的网络结构。
从上面的网络结构打印信息,可以得出一些初步的结论:
1)总共只有24网络层,比yolo3 107层大为减少。
2)只有两个yolo层,分别是yolo16和yolo23 其大小分别为13x13和26x26 此外,每个yolo层也对应有3个anchors,总共有6个anchors值。
3)yolo层前面是一个1x1的卷积层,该层的输入和输出部分保持width, height以及channels不变。在darknet里面,其卷积公式为:output = (input + padding - kernel_size) / stride + 1。 这里padding = 0.
根据yolov3-tiny.cfg手绘一下网络结构图可以更清楚网络结构流程,有时间可以研究一下使用python脚本怎样绘制网络结构图。