关于Unet绘制结果的一些问题
Some questions about the plotted results of a Unet
我正在学习this example about Unet。
是关于二进制分割的,我对代码有一些疑问:
这样做的意义是什么:
#preprocess the mask
mask[mask >= 2] = 0
mask[mask != 0 ] = 1
数据集包含"mask"张由三种颜色组成的图片(实际上它们被称为"trimaps")。作为测试,我尝试在这段代码前后绘制 mask
,似乎这些代码行的作用是将 mask
图片从三色转换为双色(background: purple
和 foregorund: yellow
), 但我不知道如何。
在“Generators”部分的底部,有一张由三个子图片组成的图片。中间的子图像是 "black and white" 掩码。
将"mask"张图片的颜色从purple/yellow
转换为black/white
的代码行有哪些?
最后,我尝试通过代码行 plt.imshow(msk)
绘制 msk
,而不是通过 plt.imshow( np.concatenate([img, msk], axis = 1))
绘制它(如代码中所做的那样)。
但是通过plt.imshow(msk)
绘制msk
的结果是黑图,为什么?
UNet,至少在其原始形式中,使用二进制掩码。您有包含三个区域、背景、对象和某种边缘的蒙版。该段代码使背景(标签 2)等于 0,对象及其边缘(标签 0 和 1)等于 1。这样你就有了一个二进制掩码用作基本事实。你看到它们是紫色和黄色的,因为 matplotlib 默认颜色映射是 viridis,它恰好在 0 时是紫色,在 1 时是黄色。并不是说这实际上是从那些掩码中丢弃了有用的信息,这些信息可能以某种方式用于训练更好的模型。但这可以稍微简化事情并更好地理解正在发生的事情。
蒙版预处理代码的最后一步将单色蒙版转换为 rgb。因此,当您使用彩色图像绘制它们时,您的蒙版可以是黑色的 (0, 0, 0)
或白色的 (1, 1, 1)
。
不确定,它应该可以工作,可能与 plt.imshow
中的默认规范化有关
我正在学习this example about Unet。 是关于二进制分割的,我对代码有一些疑问:
这样做的意义是什么:
#preprocess the mask mask[mask >= 2] = 0 mask[mask != 0 ] = 1
数据集包含"mask"张由三种颜色组成的图片(实际上它们被称为"trimaps")。作为测试,我尝试在这段代码前后绘制
mask
,似乎这些代码行的作用是将mask
图片从三色转换为双色(background: purple
和foregorund: yellow
), 但我不知道如何。在“Generators”部分的底部,有一张由三个子图片组成的图片。中间的子图像是 "black and white" 掩码。 将"mask"张图片的颜色从
purple/yellow
转换为black/white
的代码行有哪些?最后,我尝试通过代码行
plt.imshow(msk)
绘制msk
,而不是通过plt.imshow( np.concatenate([img, msk], axis = 1))
绘制它(如代码中所做的那样)。 但是通过plt.imshow(msk)
绘制msk
的结果是黑图,为什么?
UNet,至少在其原始形式中,使用二进制掩码。您有包含三个区域、背景、对象和某种边缘的蒙版。该段代码使背景(标签 2)等于 0,对象及其边缘(标签 0 和 1)等于 1。这样你就有了一个二进制掩码用作基本事实。你看到它们是紫色和黄色的,因为 matplotlib 默认颜色映射是 viridis,它恰好在 0 时是紫色,在 1 时是黄色。并不是说这实际上是从那些掩码中丢弃了有用的信息,这些信息可能以某种方式用于训练更好的模型。但这可以稍微简化事情并更好地理解正在发生的事情。
蒙版预处理代码的最后一步将单色蒙版转换为 rgb。因此,当您使用彩色图像绘制它们时,您的蒙版可以是黑色的
(0, 0, 0)
或白色的(1, 1, 1)
。不确定,它应该可以工作,可能与
plt.imshow
中的默认规范化有关