【问题标题】:How to ensure Caffe segmentation network output size is the same as input?如何确保 Caffe 分割网络输出大小与输入相同?
【发布时间】:2018-02-12 14:31:11
【问题描述】:

我正在使用 U-net 架构训练分割模型。输入图像尺寸为 250x250。

目前,我手动调整了一些卷积层的填充,以确保模型输出的大小相同,即 250x250。

但当我输入不同尺寸的图像时,例如 500x500 的图像,输出尺寸为 506x506。

如何确保所有尺寸的输出尺寸与输入尺寸相同?

【问题讨论】:

    标签: machine-learning deep-learning computer-vision caffe image-segmentation


    【解决方案1】:

    您可以使用"Crop" 层来强制输出形状相同。
    对于 U-net,我建议在每次上采样后使用裁剪层,而不仅仅是在最后,以避免累积填充错误。

    关于“填充错误”:
    假设您有一个形状为 100x100 的输入,您将其采样 3 倍,如果为 2,您将得到 13x13 的特征图。
    现在,如果你每次上采样 3 次 x2

    13x13 --> 26x26 --> 52x52 --> 104x104
    

    由于填充/舍入,您有“额外的”4 个像素(在您的问题中,您有 6 个)。
    但是,如果您在每次上采样后"Crop"

    13x13 --> 26x26 \crop 25x25 --> 50x50 --> 100x100
    

    您会看到,只有在第一次上采样之后,才会出现非平凡的裁剪,并且在该级别只有 1 个像素错误,而不是 4 个。

    【讨论】:

    • 填充错误到底是什么意思?我只是在最后一个上采样层之后添加了一个裁剪层以匹配大小,它似乎工作正常。有什么问题吗?
    • 感谢您的编辑,但我怎么知道在中间层中需要裁剪多大尺寸? (假设我的输入大小不固定)
    • @shubhamgoel27 "Crop" 层获得第二个输入 ("bottom") 用作“参考”形状。您需要提供下采样特征的 blob 名称。例如,如果"pool_x2" 是下采样的输出 blob,它可以用作 x2 上采样层的参考。
    • 知道了。非常感谢您提供如此准确和快速的回​​复。 :)
    猜你喜欢
    • 2018-08-18
    • 2021-07-26
    • 2021-04-05
    • 2016-10-21
    • 2020-05-11
    • 2017-03-28
    • 2015-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多