【问题标题】:How to calculate the output size of a convoluitonal layer in YOLO?YOLO中如何计算卷积层的输出大小?
【发布时间】:2018-04-12 10:59:39
【问题描述】:

这是 YOLO 的架构。我正在尝试自己计算每一层的输出大小,但我无法获得论文中描述的大小。

例如,在第一个 Conv 层中,输入大小为 448x448,但它使用步长为 2 的 7x7 滤波器,但根据这个方程 W2=(W1−F+2P)/S+1 = ( 448 - 7 + 0)/2 + 1,我无法得到整数结果,所以过滤器大小似乎不适合输入大小。

那么任何人都可以解释这个问题吗?我是否遗漏了什么或误解了 YOLO 架构?

【问题讨论】:

  • 你在说什么纸?至少提供一个链接。你对 YOLO 架构有误解吗?你是怎么理解的?
  • @Piglet 论文是arxiv.org/abs/1506.02640
  • 我会使用一个框架来为你做这个计算,例如 Keras。

标签: machine-learning computer-vision computer-science yolo convolutional-neural-network


【解决方案1】:

正如 Hawx Won 所说,输入图像添加了额外的 3 个填充,这是从源代码中的工作原理。


对于卷积层,如果启用了pad,每层的padding值将通过以下方式计算:

# In parser.c
if(pad) padding = size/2;

# In convolutional_layer.c
l.pad = padding;

其中size 是过滤器的形状。


因此,对于第一层:padding = size/2 = 7/2=3

那么第一个卷积层的输出应该是:

output_w = (input_w+2*pad-size)/stride+1 = (448+6-7)/2+1 = 224

output_h = (input_h+2*pad-size)/stride+1 = (448+6-7)/2+1 = 224

【讨论】:

    【解决方案2】:

    好吧,我花了一些时间学习源码,了解到输入图像在图像的顶部、底部、左侧和右侧添加了额外的3个填充,因此图像大小变为(448+ 2x3)=454,有效填充的输出大小应该这样计算: Output_size=ceil((W-F+1)/S)=(454-7+1)/2=224,因此输出尺寸应为224x224x64 p>

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2019-05-03
      • 1970-01-01
      • 1970-01-01
      • 2017-03-13
      • 1970-01-01
      • 2017-10-26
      • 1970-01-01
      • 2015-07-23
      • 2021-05-12
      相关资源
      最近更新 更多