[英]Input labels for semantic segmentation with U-Net as single layer
例如,当使用U-Net进行语义分割时,将标签数据提供为一热编码的张量似乎是常见的做法。 在另一个SO问题中 ,用户指出这是由于标签通常表示分类值。 仅在一层内将它们作为类标签提供给网络(灰度强度值)会带来困难。
但是,在另一篇博客文章中,作者解释说标签
“有时将[...]包装为灰度图像,其中像素强度表示类ID [...]。此方法可能是最容易使用的方法。它允许分发的文件较小,并且[ ...]一种Hot Vector表示比[灰度编码格式] [占用]更多的内存。”
我的硬件非常有限,我希望将标签编码为1层灰度张量,而不是n层(n是要分割的类的数量),将导致内存使用率降低。 但是,博客的作者随后还指出:
“即使您使用的深度学习框架将标签数据作为类ID接受(如[灰度格式],它也会将数据转换为幕后的一键编码)。”
这是否意味着根本就没有节省内存的方法?
如果值得的话,我将如何继续在数据集读取器中实现呢? 我也没有遇到过任何实施过的实施方式,其中实际上已经实施了灰度标记。 因此,我还要感谢任何使用灰度标签进行语义分割的实现的链接!
我正在使用PyTorch,我的代码基于此实现 ,区别在于我有3个要分割的类。
任何建议/链接,不胜感激!
这可以帮助您节省磁盘内存,因为您可以将标签和地面实况存储为灰度图像(宽度,高度,1),而不是更大的3D张量形状(宽度,高度,n)。 但是,在训练过程中,您将必须将灰度地面真值图像转换为3D张量才能训练网络。 因此,它不会帮助您减少进程的RAM成本。
如果确实需要减少RAM使用量,则可以减小训练批处理大小或图像大小。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.