【问题标题】:What is the real number of CNN layers in yolov3?yolov3中CNN的真实层数是多少?
【发布时间】:2019-03-01 16:32:59
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      looks like 在这种情况下,此模型中的层数可能是可变的。在paper 中,它说 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
      

      这段代码是说,如果您使用 Darknet convul​​sion 74 文件,则层数的截止值为 75。如果您使用的是 Darknet convul​​sion 15 文件,则会在 15 层处截止.

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

      此外,如果您查看他们的weights Repo,您​​会发现如果您只是从他们的 Github 中拉取并且不进行自定义,那么您会看到有 75 层的截止,因此他们的文件中似乎有 75 层。

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

      【讨论】:

      • 非常感谢。这真的很有帮助。我计算了我下载的文件中的所有卷积层,大约有 75 层。根据你所提到的,我认为 75 是正确的答案跨度>
      • 据我了解,Yolo 在 3 个不同的尺度上进行检测,它们位于第 82,94,106 层。这就是为什么当你训练你的模型时它总是显示那些层。那怎么只剪到75层呢?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-14
      • 2019-02-15
      • 2020-12-06
      • 2020-10-18
      • 2017-06-27
      相关资源
      最近更新 更多