如何确保 Caffe 分割网络输出大小与输入大小相同?
How to ensure Caffe segmentation network output size is the same as input?
我正在使用 U-net 架构训练分割模型。输入图片大小为250x250.
目前,我手动调整了一些卷积层的填充以确保模型输出具有相同的大小,即 250x250。
但是当我输入不同尺寸的图像时,例如 500x500 的图像,输出尺寸为 506x506。
如何确保所有尺寸的输出尺寸都与输入尺寸相同?
您可以使用 "Crop"
层强制输出形状相同。
对于 U-net,我建议在每次上采样之后使用裁剪层,而不仅仅是在最后,以避免累积填充错误。
关于"padding errors":
假设你有一个形状为 100x100 的输入,如果是 2,你将它向下采样 3 次,你最终会得到 13x13 的特征图。
现在,如果你每次上采样 x2 三次
13x13 --> 26x26 --> 52x52 --> 104x104
您有 "additional" 4 个像素是由于 padding/rounding 而添加的(在您的问题中有 6 个)。
但是,如果您 "Crop"
在每次上采样后
13x13 --> 26x26 \crop 25x25 --> 50x50 --> 100x100
您会看到只有在第一次上采样后才会出现不平凡的裁剪,并且在该级别只有 1 个像素错误,而不是 4 个。
我正在使用 U-net 架构训练分割模型。输入图片大小为250x250.
目前,我手动调整了一些卷积层的填充以确保模型输出具有相同的大小,即 250x250。
但是当我输入不同尺寸的图像时,例如 500x500 的图像,输出尺寸为 506x506。
如何确保所有尺寸的输出尺寸都与输入尺寸相同?
您可以使用 "Crop"
层强制输出形状相同。
对于 U-net,我建议在每次上采样之后使用裁剪层,而不仅仅是在最后,以避免累积填充错误。
关于"padding errors":
假设你有一个形状为 100x100 的输入,如果是 2,你将它向下采样 3 次,你最终会得到 13x13 的特征图。
现在,如果你每次上采样 x2 三次
13x13 --> 26x26 --> 52x52 --> 104x104
您有 "additional" 4 个像素是由于 padding/rounding 而添加的(在您的问题中有 6 个)。
但是,如果您 "Crop"
在每次上采样后
13x13 --> 26x26 \crop 25x25 --> 50x50 --> 100x100
您会看到只有在第一次上采样后才会出现不平凡的裁剪,并且在该级别只有 1 个像素错误,而不是 4 个。