YOLOV4 cfg解读

通过网络可视化工具netron可以查看cfg网络构图,其中可以查看每层网络的基本信息及编号,编号很重要,特别是route和shortcut层。

YOLOV4 cfg解读

1、卷积层

根据设定的参数可以获得每层输出的特征图尺寸:

YOLOV4 cfg解读

1×1卷积:可以降低计算量

3×3卷积:可以对filter个数进行调整

YOLOV4 cfg解读YOLOV4 cfg解读

[convolutional]
batch_normalize=1
filters=32
size=3
stride=1
pad=1
activation=mish

# Downsample

[convolutional]
batch_normalize=1
filters=64
size=3
stride=2
pad=1
activation=mish

2、Shortcut和Route层

shortcut在cfg中的内容都是一样的

[shortcut]
from=-3
activation=linear

其中from=-3表示从当前层倒数第三个层(convolutional层或也是shortcut层),其主要作用起到跨层连接(add)。如下图:(也可以通过编号查看

YOLOV4 cfg解读 YOLOV4 cfg解读

 

route层是一个环路,有几种情况。如layers为一个或多个负值。主要作用:特征融合操作 使用concatenate拼接

[route]
layers = -2
...
...

[route]
layers = -1,-7

如果在两条主线组成的环路中,可按照当前层逆时针顺序获得layers的序号(也可以通过编号相减获得)

YOLOV4 cfg解读

还有一些情况,在upsample之后,layers值为正值,发现就是与route直接连接的conv层的编号

[upsample]
stride=2

[route]
layers = 85

......
......
......
[upsample]
stride=2

[route]
layers = 54

spp层有点复杂,感觉环路走向不明,通过查看编号就可以解释layers=-1,-3,-5,-6

### SPP ###
[maxpool]
stride=1
size=5

[route]
layers=-2

[maxpool]
stride=1
size=9

[route]
layers=-4

[maxpool]
stride=1
size=13

[route]
layers=-1,-3,-5,-6
### End SPP ###

获得各层序号,并相减

YOLOV4 cfg解读

concatenate和add区别

上采样、下采样、YOLO层等参数可以参考这篇

 

 

参考:

https://blog.csdn.net/weixin_41560402/article/details/106119774

https://www.cnblogs.com/sdu20112013/p/11099244.html

https://zhuanlan.zhihu.com/p/150127712

 

 

上一篇:pycharm简单使用


下一篇:ResNet50结构