如何调整图像分割蒙版的大小?

How to resize image segmentation mask?

我为每个图像设置了一个二进制掩码,每个掩码像素的值为 0 或 255。现在因为我的图像分割需要固定大小的图像,所以我将不得不调整图像和掩码的大小。但是,当我调整图像大小时,蒙版中会有一些地方的值大于 0 但小于 255。我怎么知道要保留哪一个?因为图书馆要求只有0或255,请帮帮我,非常感谢。

如果您想调整图像大小并希望结果图像仅包含原始范围内的值,您可以使用最近邻插值法。

如果您使用最近邻以外的插值调整大小,您确实会得到 [0, 255] 范围内的值。这不一定是坏事。如果您的损失函数是交叉熵,您可以将这些值视为“软标签”。也就是说,该像素没有对任何目标的“硬”分配,而是对两者的“软”概率分配。

将其推广到多标签分割蒙版,以及更复杂的几何增强(例如,旋转、仿射……)。问题是
如何正确地将增强应用于离散目标图像?

例如,您有一个包含 81 个 class 的语义分割掩码(也就是说,每个像素的值在 {0, 1, ..., 80} 中,表示该像素的 class。 这些目标掩码存储为 indexed RGB images。 您想要对输入图像和目标蒙版应用一些几何增强。

“快速而肮脏”的方法是使用最近邻点插值,正如 所建议的那样。

更“准确”和“正确”的方法是将目标掩码从 HxW 离散(整数)掩码转换为 CxHxW 概率图 :即每个通道会对应每个像素属于81个class中的每一个的概率。
请注意,这是不是预测的分割(网络的输出),而是网络应该预测的目标。这样您就可以将每个目标像素表示为 1-hot 81-dim 向量。
使用此表示,您可以使用与输入图像本身(通常是双三次)相同的插值方法将增强分别应用于每个通道。
现在,对于每个目标像素,它属于 81 个 classes 中的每一个的概率,这些向量不再是 1-hot(由于插值和变换)。您可以使用 argmax 将此地图转换回每像素 classes 的硬分配, 修改损失函数以使用这些软标签以更好地捕获图像中不同区域之间的边界。