我真的与yolov3的架构感到困惑。我已经阅读了有关它的文档和论文。有人说它有103个卷积层,其他人说它有53层。但是,当您计算.cfg文件中的卷积层(下载后)时,大约是75!...这里错过了什么?我该怎么办?这个问题对我们很重要,因为我们需要在论文中引用这种体系结构,我们需要知道这些层的确切大小...
根据Alexeyab(非常受欢迎的叉网版的创建者和Yolo V4的创建者)https://groups.google.com/forum/?nomobile=true=true#true#topic/dopic/dopic/daparknet/9wppezroumu
yolo有
75个CNN层(卷积层) 其他31个其他层(快捷方式,路线,Upsample,Yolo)= 106层。
请记住,Yolo V3确实在3个不同的尺度上进行检测,在第82,94,106层https://gist.github.com/fabito/a49bb6a5593594f2626275bc90bc90baba60baba60baba622
在这种情况下看起来,该模型中可能会有一个可变的层。在论文中,它说Darknet53有53层。但是在他们的train.py文件中,他们基于您使用的DarkNet模型的层数有一个截止数量。具体:
def load_darknet_weights(self, weights, cutoff=-1):
# Parses and loads the weights stored in 'weights'
# cutoff: save layers between 0 and cutoff (if cutoff = -1 all are saved)
weights_file = weights.split(os.sep)[-1]
# Try to download weights if not available locally
if not os.path.isfile(weights):
try:
os.system('wget https://pjreddie.com/media/files/' + weights_file + ' -O ' + weights)
except IOError:
print(weights + ' not found')
# Establish cutoffs
if weights_file == 'darknet53.conv.74':
cutoff = 75
elif weights_file == 'yolov3-tiny.conv.15':
cutoff = 15
这件代码说,如果您使用的是Darknet urkulsion 74文件,则层数的截止数将为75。您正在使用Darknet urkulsion 15文件,将在15层处有一个截止。
因此,您需要检查您下载的DarkNet文件并确定所使用的版本。基于此,我会选择75,因为您似乎使用了darknet54.conv.74
此外,如果您查看他们的权重仓库,您可以看到,如果您只是从他们的github中进行拉动而没有自定义,则可以使用75层的截止,因此,他们的文件中似乎有75层。
值得注意的是,他们的论文于2018年4月发表,因此在那个时候,他们可以在Github上为CNN增加更多层。
yolo v3 具有107 layers ,您还应计算快捷方式,路线层, uplample层和 yolo层(总计32)。因此,总共有75 32 = 107 层。当您在快捷方式或路由层中看到索引时,您会发现我们从0计数。Div>