yolov3中CNN层的实际数量是多少?

时间:2019-03-01 16:32:59

标签: python conv-neural-network object-detection yolo

我真的对yolov3的架构感到困惑,我已经阅读了有关它的文档和论文。有人说它有103个卷积层,有些人说它有53层。在cfg文件中(下载后),大约需要75个!...这里遗漏了什么?我应该怎么做?这个问题对我们很重要,因为我们需要在论文中引用此体系结构并且我们需要知道图层的确切大小...帮帮我

2 个答案:

答案 0 :(得分:3)

根据AlexeyAB(非常受欢迎的Darknet版本的创建者)https://groups.google.com/forum/?nomobile=true#!topic/darknet/9WppEzRouMU

Yolo有
75个cnn层(卷积层)+ 31个其他层(快捷方式,路径,上采样,yolo)= 106层。

请记住,Yolo V3确实以3种不同的比例进行检测,分别位于第82、94、106层。

答案 1 :(得分:1)

在这种情况下,looks like的模型中可以有可变数量的层。在paper中,它说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 convul​​sion 74文件,则层数的截止值为75。如果您使用Darknet convul​​sion 15文件,则将截止15层。 。

因此,您需要检查下载的哪个Darknet文件并确定使用的版本。基于此,我将选择75,因为您似乎使用了darknet54.conv.74

此外,如果您查看他们的weights回购,则可以看到,如果仅从他们的Github中提取内容而未进行自定义,则有75层的截止值,因此看来文件中有75层。

值得注意的是,他们的论文于2018年4月发表,因此在那时,他们可以在Github上的CNN中添加更多层。