yolov3中的route和shortcut层

1、shortcut层
shortcut层的输入层一般是两个(目前还没出现多余两个的情况),实现两个张量相加,例如:
yolov3中的route和shortcut层_第1张图片
对应的cfg文件中的层为:

#4
[convolutional]
batch_normalize=1
filters=64
size=1
stride=1
pad=1
activation=mish
#5
[convolutional]
batch_normalize=1
filters=32
size=1
stride=1
pad=1
activation=mish
#6
[convolutional]
batch_normalize=1
filters=64
size=3
stride=1
pad=1
activation=mish
#7
[shortcut]
from=-3
activation=linear

cfg文件中shortcut层紧接的那一层为shortcut层的一个输入层,另外一个输入层为from指定的层,例如from=-3指的是该shortcut层的前面第三层。

2、route层
route层作用相当于引入和concat两个操作,当route的输入只有一个时,就只有引入的作用,当输入大于一个的时候,会将所有的引入再执行一步concat,增加route层的输出维度。yolov4中route层的输入可以是1、2或4个,例如SPP模块:
yolov3中的route和shortcut层_第2张图片
最下面的一个route层有四个输入,对应的在cfg文件中的代码为:

[convolutional]
batch_normalize=1
filters=512
size=1
stride=1
pad=1
activation=leaky

### 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 ###

route层的layers参数制定了该route层的输入有哪些,方法和shortcut相同,-1指的是该route层往前的第1层。

你可能感兴趣的:(yolov3中的route和shortcut层)