在kaggle糖尿病视网膜病变检测第二名解决方案神经网络中,“大小”是什么意思?

时间:2018-08-21 09:21:40

标签: machine-learning conv-neural-network theano lasagne

链接: https://www.kaggle.com/c/diabetic-retinopathy-detection/discussion/15617

Github: https://github.com/sveitser/kaggle_diabetic

您好,我是CNN的新手,最近我正在研究此解决方案。作者绘制了他的小组设计的网络表。单位,过滤器和步幅对我来说都是有意义的,但我只是不知道“大小”是什么意思。是更可能表示批处理大小还是图像大小?

我认为一开始应该是图像大小,但是有两个原因不应该:

  1. 正如他们在报告中所描述的,他们只是将原始图像裁剪为128x128、256x256、512x512像素,并且没有进行任何其他图像预处理。

  2. (从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?

1 个答案:

答案 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 = 2PADDING_AFTER = 1(或相反),则使用上方的公式将解析为224的激活大小。由于根据它们的表,第一卷积层的大小为224,因此可以确定我们正确解释了这些参数。

对于网络B:

INPUT_SIZE = 448
FILTER_SIZE = 4
STRIDE = 2

如果两个填充均为1,则激活大小为224,如表中所示。

最后,作者报告了其512x512图像网络的体系结构,并省略了将这些图像调整为448x448分辨率的细节以及它们如何应用填充的细节。这是计算机视觉社区的惯例,人们可以始终依靠上述公式来验证这些细节。