例如,在使用 U-Net 进行语义分割时,将标签数据提供为 one-hot-encoded 张量似乎是一种常见的做法。在另一个 SO question中,一位用户指出这是由于标签通常代表分类值。将它们作为仅一层内的类标签(作为灰度强度值)馈送到网络会带来困难。
然而,在另一篇博文中,作者解释说标签
“[...] 有时 [get] 打包为灰度图像,其中像素强度表示类 id [...]。这种方法可能是最容易使用的。它允许分发较小的文件,并且 [ ...] 一种热向量表示 [使用] 比 [灰度编码格式] 更多的内存。”
我的硬件非常有限,我希望将标签编码为 1 层灰度张量,而不是 n 层(n 是要分段的类数),从而降低内存使用率。但是,该博客的作者随后还指出:
“即使您使用的深度学习框架接受标签数据作为类 id,如 [灰度格式],它也会在后台将该数据转换为 one-hot 编码。”
这是否意味着,毕竟在内存方面不会有任何节省?
如果值得,我将如何继续在数据集阅读器中实现它?我也没有遇到任何实现,实际上已经实践了灰度标签。因此,我还要感谢任何指向使用灰度标签进行语义分割的实现的链接!
我正在使用 PyTorch,我的代码基于此实现,不同之处在于我有 3 个类要分段。
非常感谢任何建议/链接!