【问题标题】:How to convert tensor output of image segmentation model to image? [duplicate]如何将图像分割模型的张量输出转换为图像? [复制]
【发布时间】:2021-08-08 15:02:50
【问题描述】:

我正在尝试使用 Berkley 深度驱动数据集对自动驾驶汽车进行图像分割的代码,我训练了模型,并在其上测试了图像,得到了张量格式的输出(分割图像),但我需要它图片格式,我试过Image.fromarray函数,得到如下输出:

而实际图片如下所示:

我使用的模型来自这个git repo

【问题讨论】:

    标签: python machine-learning image-segmentation fast-ai image-preprocessing


    【解决方案1】:

    对于我使用的张量流模型:

    from PIL import Image
    
    prediction = np.squeeze(prediction)
    r = prediction * 255
    im = Image.fromarray(r.astype('uint8'), 'L')
    im = im.resize(original.size)
    

    【讨论】:

    • 只有当张量代表像素值时才会起作用。然而,OP 似乎已经从模型预测中获得了张量,在大多数情况下,它并不代表图像像素,而是取决于模型输出。
    • 你是对的。我看错了。编辑
    • @MichalCicatka 感谢您分享您的解决方案,但在我的情况下它不起作用,我得到的输出仍然是一个完整的黑色图像条。
    • 原始输出的维度是多少?
    【解决方案2】:

    如果我理解正确,您的张量是模型预测的结果,下划线模型是 U-net。如果是这种情况,这些张量应该代表分割掩码。如果用于预测的图像大小为512x512(取决于模型架构),则U-net 预测的张量大小将为k x 512 x 512,即每个图像有 k 个分割掩码。您必须用较浅的颜色将这些遮罩覆盖在图像上,以查看模型如何分割预测图像。因此,您需要访问用于预测的图像才能执行此操作。

    由于您使用的是 fast.ai api,我建议检查 learner 对象的 show_results 方法的代码,以查看它们如何呈现输出。这应该是一个很好的起点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-14
      • 2018-04-27
      • 2017-05-24
      • 2020-08-28
      • 2021-05-25
      • 2020-10-09
      • 2019-11-30
      • 2016-05-31
      相关资源
      最近更新 更多