yolov3 中 CNN 的真实层数是多少?

mah*_*ghi 3 python object-detection conv-neural-network yolo

我真的对 yolov3 的架构感到困惑。我已经阅读了有关它的文档和论文。有人说它有 103 个卷积层,其他人说它有 53 个层。但是当你计算 cfg 文件中的卷积层时(下载后)它大约是 75!...这里遗漏了什么?我该怎么做才能找到它?这个问题对我们很重要,因为我们需要在论文中引用这个架构,我们需要知道确切的大小层数...帮帮我伙计们

gam*_*n67 6

根据 AlexeyAB(非常流行的分叉暗网版本的创建者和 YOLO v4 的创建者)https://groups.google.com/forum/?nomobile=true#!topic/darknet/9WppEzRouMU

Yolo 有
75 个 cnn 层(卷积层)+ 31 个其他层(shortcut、route、upsample、yolo)=总共 106 个层。

请记住,Yolo V3 在 82,94,106 层的 3 个不同尺度上进行检测https://gist.github.com/fabito/a49bb6a5593594f26275bc90baba6e32


Ede*_*koh 1

在这种情况下,该模型中的层数可能是可变的。论文中说Darknet53有53层。但在他们的train.py文件中,他们根据您正在使用的暗网模型对层数进行了限制。具体来说:

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
Run Code Online (Sandbox Code Playgroud)

这段代码表示,如果您使用的是 Darknet convul​​sion 74 文件,则层数的截止将为 75。如果您使用的是 Darknet convul​​sion 15 文件,则层数的截止将为 15 层。

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

此外,如果你查看他们的权重Repo,你会发现,如果你只是从他们的 Github 上拉取数据而不进行任何自定义,那么就会发现 75 层的截止值,所以他们的文件中似乎有 75 层。

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