YOLO中的route层
在读取yolo 的 cfg 时候,我们会发现yolo中存在一个特殊的结构 :route 层, 我们不必对其感到困惑,如果我们将他看做为keras中的concatenate层,是不是就好理解多了,本质上,他是一个融合层,它的作用是在当前层引出之前卷积所得到的特征层。
以YOLOv3为例:
[route]
layers = -4
[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky
[upsample]
stride=2
[route]
layers = -1, 61
可以看到,route只有一个参数layers
,说明了route层并不对对传入的特征进行任何的操作,只是起到一个总结和传递的作用,事实上,它相当于中转作用,不涉及卷积计算,并且,当layer取值为正时,输出这个正数对应的层的特征,如果layer取值为负数,输出route层向后退layer层对应层的特征。
比如,layer = -2 ,表示引出前两层的conv输出的特征图。而且,注意到,route层之前一般是yolo层或者upsample层,它的前一个conv不用管,后面会有route来接它,且它的后一个conv是接到它的输出。