【问题标题】:What does "size" mean in the kaggle Diabetic Retinopathy Detection 2nd place solution neural networks?kaggle 糖尿病视网膜病变检测第二名解决方案神经网络中的“大小”是什么意思?
【发布时间】:2019-01-27 10:53:01
【问题描述】:

链接: 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.如果是batch size,为什么会选择448?和

3.为什么他们会让batch size从第1层到第19层减少(基本上是/2)到224 111 56 27 13 6 2?

【问题讨论】:

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


    【解决方案1】:

    linked tablesize 列是指层中激活的垂直和水平尺寸。

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

    这两个都有输入宽度和高度 448,即。输入层的size是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 分辨率的细节以及它们如何应用填充。这是计算机视觉社区的惯例,人们总是可以依靠上面的公式来验证这些细节。

    【讨论】:

    • 感谢您的解释!顺便说一句,我不知何故弄明白了为什么他们选择 448 而不是其他数字。这是因为在他们的增强设置中,缩放范围是1/1.15到1.15,实际上512/1.15=445.2~448。448是445.2的整数,可以多次除以2(448 = 2 ^6*7).
    猜你喜欢
    • 2017-06-14
    • 1970-01-01
    • 2013-11-03
    • 2015-12-02
    • 2015-07-26
    • 2011-06-20
    • 2012-12-08
    • 2018-06-04
    • 2010-12-09
    相关资源
    最近更新 更多