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

Posted

技术标签:

【中文标题】如何调整图像分割蒙版的大小?【英文标题】:How to resize image segmentation mask? 【发布时间】:2020-09-23 12:52:28 【问题描述】:

我对每个图像都有一个二进制掩码,每个掩码像素的值为 0 或 255。现在因为我的图像分割需要固定大小的图像,我将不得不调整图像和掩码的大小。但是,当我调整图像大小时,掩码中会出现值大于 0 但小于 255 的位置。我如何知道要保留哪一个?因为图书馆要求只有0或255。请帮帮我,非常感谢。

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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

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

Amitay Nachmani 提出的“快速而肮脏”的方法是使用最近邻插值法。

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

【讨论】:

以上是关于如何调整图像分割蒙版的大小?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过平移、旋转和/或缩放调整来匹配两个分割蒙版

基于图像轮廓细化分割掩码

带有彩色蒙版的语义图像分割

如何将图像列表中的图像调整为相同的大小

PyTorch 和Albumentations 在图像分割的应用

Keras `ImageDataGenerator` 图像和蒙版的增强方式不同