【问题标题】:Add second and third channel to a tensor - Pytorch将第二个和第三个通道添加到张量 - Pytorch
【发布时间】:2021-11-24 10:13:39
【问题描述】:

我正在尝试将蒙版应用于图像。我有我的图像形状 [360, 480, 3] 和形状为 [360, 480, 1] 的蒙版。如何在 Pytorch 中创建与我的图像相同形状的蒙版?此外,在这种情况下,绿色和蓝色通道是否会将零作为元素或与红色通道中的值相同?谢谢

【问题讨论】:

    标签: python image-processing pytorch conv-neural-network image-segmentation


    【解决方案1】:

    从逻辑上讲,您应该为绿色和蓝色通道复制红色蒙版。 PyTorch 提供了简单的方法

    # repeat the last dimension thrice
    mask_three_channel = mask.repeat(1, 1, 3)
    

    然后将X(形状为 [360, 480, 3])的图像蒙版为

    X_masked = X * mask_three_channel
    

    【讨论】:

    • 我有这本字典:colors = {"red": torch.Tensor([255,0,0])}。在我应用我的面具之前,如何使用字典中的红色列表对“面具”执行广播乘法?我认为生成的“彩色蒙版”在红色通道中的值应该不是 0。
    【解决方案2】:

    广播掩码时应使用torch.expand,而不是torch.repeat,以避免复制不必要的数据。事实上torch.expand 会返回一个视图,而不是一个副本。

    但是在这种情况下不需要扩展掩码,因为广播是由操作员完成的:

    >>> rgb = torch.rand(360, 480, 3)
    >>> mask = torch.randint(0, 2, (360, 480, 1))
    
    >>> rgb_masked = rgb*mask
    >>> rgb_masked.shape
    (360, 480, 3)
    

    生成的张量包含[0,0,0] 的像素位置等于mask 中的0

    【讨论】:

      猜你喜欢
      • 2013-08-29
      • 2011-12-15
      • 1970-01-01
      • 1970-01-01
      • 2021-10-19
      • 2022-10-07
      • 2023-01-11
      • 1970-01-01
      • 2019-03-16
      相关资源
      最近更新 更多