在 Pytorch 中,如何对这样的灰度图像进行 one-hot 编码以进行语义分割?

社会演员多 pytorch 182

原文标题In Pytorch, how to one-hot encode a grayscale image like this for semantic segmentation?

我使用预训练的 DeeplabV3 模型进行图像分割,它给了我一个形状为 BxCxWxH 的输出,其中 B=batch size,C=number of classes,W=Width 和 H=Height。如果我采用 depth-wise argmax这个输出图像,我得到一个 WxH 结果,其中每个像素代表一个类。对于这个输出图像,我有一个灰度图像作为标签,具有 WxH 形状。但是,灰度标签图像中的像素值不在范围内0 到类数,但是在 0.0xx 到 0.2,所以我不能用它来计算损失。要做到这一点,我必须对标签图像进行 one-hot 编码,但我不知道该怎么做它。

例如,标签图像具有以下值:

tensor([[[0.0824, 0.0824, 0.0824,  ..., 0.0431, 0.0431, 0.0317],
         [0.0824, 0.0824, 0.0824,  ..., 0.0431, 0.0431, 0.0317],
         [0.0824, 0.0824, 0.0824,  ..., 0.0431, 0.0431, 0.0317],
         ...,
         [0.0275, 0.0275, 0.0275,  ..., 0.0275, 0.0275, 0.0317],
         [0.0275, 0.0275, 0.0275,  ..., 0.0275, 0.0275, 0.0317],
         [0.0275, 0.0275, 0.0275,  ..., 0.0275, 0.0275, 0.0317]]])

具有 14152 个唯一像素值。图像大小为 1024×1024。我怎样才能对这个图像进行一次热编码?

数据集是 KITTI 语义像素级别。

原文链接:https://stackoverflow.com//questions/71975507/in-pytorch-how-to-one-hot-encode-a-grayscale-image-like-this-for-semantic-segme

回复

我来回复
  • NeverSayEver的头像
    NeverSayEver 评论

    好的,所以我终于遇到了问题:不小心,我通过将输入的真实图像传递给 torchivison.transforms 实例来调整其大小,使其成为具有大量像素值的重塑张量。没有这个操作,我得到了正常的像素值为地面实况图像。

    2年前 0条评论