链接: https://www.kaggle.com/c/diabetic-retinopathy-detection/discussion/15617
Github: https://github.com/sveitser/kaggle_diabetic
您好,我是CNN的新手,最近我正在研究此解决方案。作者绘制了他的小组设计的网络表。单位,过滤器和步幅对我来说都是有意义的,但我只是不知道“大小”是什么意思。是更可能表示批处理大小还是图像大小?
我认为一开始应该是图像大小,但是有两个原因不应该:
正如他们在报告中所描述的,他们只是将原始图像裁剪为128x128、256x256、512x512像素,并且没有进行任何其他图像预处理。
(从Github链接)阅读了他们的代码后,我发现他们对InputLayer的设置是:
(InputLayer, {'shape': (None, 3, cnf['w'], cnf['h'])}),
确认其比赛报告中的描述。
因此,我认为输入大小应为3x128x128,而不是448。
这是我的问题:
1。如果输入的图像尺寸不是448,那么448是什么意思?
2。如果这表示批次大小,为什么他们会选择448?和
3。为什么他们要让批处理大小从第一层减小到19层(基本上为/ 2)到224 111 56 27 13 6 2?
答案 0 :(得分:2)
linked table的 size 列是指层中激活的垂直和水平尺寸。
这些是仓库中表中网络的完整配置:
这两个都具有输入宽度和高度448,即。输入层的大小是448。
我们可以使用以下公式计算卷积层激活的垂直和水平尺寸:
ACTIVATION_SIZE = (INPUT_SIZE − FILTER_SIZE + PADDING_PREV + PADDING_AFTER) / STRIDE + 1
我们可以从上面链接的网络配置中获取输入大小,过滤器大小和步幅参数。由于他们使用的是Lasagne的早期开发版本,因此很难确切知道他们正在使用哪种填充,因此我们将不得不在其中进行一些假设。
对于网络A:
INPUT_SIZE = 448
FILTER_SIZE = 5
STRIDE = 2
如果PADDING_PREV = 2
和PADDING_AFTER = 1
(或相反),则使用上方的公式将解析为224的激活大小。由于根据它们的表,第一卷积层的大小为224,因此可以确定我们正确解释了这些参数。
对于网络B:
INPUT_SIZE = 448
FILTER_SIZE = 4
STRIDE = 2
如果两个填充均为1,则激活大小为224,如表中所示。
最后,作者报告了其512x512图像网络的体系结构,并省略了将这些图像调整为448x448分辨率的细节以及它们如何应用填充的细节。这是计算机视觉社区的惯例,人们可以始终依靠上述公式来验证这些细节。