"size" 在 kaggle 糖尿病视网膜病变检测第二名解决方案神经网络中意味着什么?

What does "size" mean in the kaggle Diabetic Retinopathy Detection 2nd place solution neural networks?

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

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

你好,我是CNN新手,最近在研究这个方案。作者绘制了他小组设计的网络的 table。单位、过滤器和步幅对我来说都很有意义,但我只是不知道 "size" 是什么意思。它更可能是指批量大小还是图像大小?

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

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

  2. 阅读他们的代码(来自Github link)后,我发现他们对 InputLayer 的设置是:

    (InputLayer, {'shape': (None, 3, cnf['w'], cnf['h'])}),
    

    这证实了他们竞争报告中的描述。

因此,我认为输入尺寸应该是3x128x128,而不是448。

这是我的问题:

1.If输入图片大小不是448,448是什么意思?

2.If就是batch size的意思,为什么要选448呢?和

3.why他们会让批量大小从第 1 层到第 19 层减少(基本上是 /2)到 224 111 56 27 13 6 2 吗?

linked table大小列是指层中激活的垂直和水平维度。

这些是 repo 中 table 网络的完整配置:

这两个输入的宽度和高度都是 448,即。输入层的size为448.

我们可以使用以下公式来计算卷积层激活的垂直和水平维度:

ACTIVATION_SIZE = (INPUT_SIZE − FILTER_SIZE + PADDING_PREV + PADDING_AFTER) / STRIDE + 1

我们可以从上面链接的网络配置中获取输入大小、过滤器大小和步幅参数。由于他们使用的是烤宽面条的早期开发版本,因此很难准确判断他们使用的是哪种填充,因此我们必须在那里做出一些假设。

对于网络 A:

INPUT_SIZE = 448
FILTER_SIZE = 5
STRIDE = 2

如果 PADDING_PREV = 2PADDING_AFTER = 1(或相反),使用上面的公式将解析为 224 的激活大小。由于第一个卷积层的大小根据 table 是 224,我们可以非常确定我们正确地解释了参数。

对于网络 B:

INPUT_SIZE = 448
FILTER_SIZE = 4
STRIDE = 2

这将导致激活大小为 224,如 table 如果两个填充均为 1。

总而言之,作者报告了他们的图像 512x512 的网络架构,并省略了将这些图像调整为 448x448 分辨率的细节以及他们如何应用填充。这是计算机视觉界的惯例,人们总是可以依靠上面的公式来验证这些细节。