YOLO卷积层输出尺寸计算疑问:公式结果为何非整数?
解答YOLO卷积层输出尺寸计算疑惑
Great question! Let's break this down step by step because it's easy to miss a key detail when calculating convolution output sizes for YOLO.
核心问题:你遗漏了Padding参数
YOLOv1的第一个卷积层并不是无Padding的,它实际使用了padding=3的设置(也就是在输入图像的四周各填充3个像素),这是你计算时漏掉的关键参数。
正确的计算过程
使用标准的卷积输出尺寸公式(结合深度学习框架的取整规则):
W2 = floor((W1 - F + 2*P)/S) + 1
代入参数:
- 输入尺寸
W1=448 - 滤波器大小
F=7 - Padding值
P=3 - 步长
S=2
计算过程:
floor((448 -7 + 2*3)/2) +1 = floor(447/2) +1 = 223 +1 =224
这样就得到了论文中描述的224x224输出尺寸,完全符合预期。
为什么会出现非整数中间结果?
在YOLO最初的实现框架Darknet中,当(W1-F+2P)/S的结果为非整数时,会对其进行**向下取整(floor)**操作,再执行加1。这是因为卷积核从输入左上角开始滑动,若剩余像素不足以容纳一个完整的核,框架会忽略这部分边缘区域,最终输出整数尺寸的特征图。
额外提醒
YOLOv1之后的版本(如YOLOv2及后续)改用了416x416这类输入尺寸,因为416是32的倍数(YOLO的总下采样倍率为32),经过多次步长为2的卷积/池化后,所有层的输出尺寸都会是整数,避免了取整带来的困惑。
内容的提问来源于stack exchange,提问作者Thanh Le Hai Hoang
相关产品推荐
相关产品推荐

