如何可视化分割输出-多类特征映射到RGB图像?

时间:2018-10-10 18:25:46

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

对于语义分割输出,我们如何可视化输出特征图,给定与每个类对应的颜色图调色板,形状为<B x Number_of_Classes x H x W><B X 3 X H X W>的张量:

```

labels = ['unlabeled',  'ego vehicle',  'rectification border', 'out of roi',   'static',   'dynamic',  'ground',   'road', 'sidewalk', 'parking',  'rail track',   'building', 'wall', 'fence',    'guard rail',   'bridge',   'tunnel',   'pole', 'polegroup',    'traffic light',    'traffic sign', 'vegetation',   'terrain',  'sky',  'person',   'rider',    'car',  'truck',    'bus',  'caravan',  'trailer',  'train',    'motorcycle',   'bicycle',  'license plate']
cityscapes_map = 
np.array([[0.        , 0.        , 0.        ],
           [0.        , 0.        , 0.        ],
           [0.        , 0.        , 0.        ],
           [0.        , 0.        , 0.        ],
           [0.07843137, 0.07843137, 0.07843137],
           [0.43529412, 0.29019608, 0.        ],
           [0.31764706, 0.        , 0.31764706],
           [0.50196078, 0.25098039, 0.50196078],
           [0.95686275, 0.1372549 , 0.90980392],
           [0.98039216, 0.66666667, 0.62745098],
           [0.90196078, 0.58823529, 0.54901961],
           [0.2745098 , 0.2745098 , 0.2745098 ],
           [0.4       , 0.4       , 0.61176471],
           [0.74509804, 0.6       , 0.6       ],
           [0.70588235, 0.64705882, 0.70588235],
           [0.58823529, 0.39215686, 0.39215686],
           [0.58823529, 0.47058824, 0.35294118],
           [0.6       , 0.6       , 0.6       ],
           [0.6       , 0.6       , 0.6       ],
           [0.98039216, 0.66666667, 0.11764706],
           [0.8627451 , 0.8627451 , 0.        ],
           [0.41960784, 0.55686275, 0.1372549 ],
           [0.59607843, 0.98431373, 0.59607843],
           [0.2745098 , 0.50980392, 0.70588235],
           [0.8627451 , 0.07843137, 0.23529412],
           [1.        , 0.        , 0.        ],
           [0.        , 0.        , 0.55686275],
           [0.        , 0.        , 0.2745098 ],
           [0.        , 0.23529412, 0.39215686],
           [0.        , 0.        , 0.35294118],
           [0.        , 0.        , 0.43137255],
           [0.        , 0.31372549, 0.39215686],
           [0.        , 0.        , 0.90196078],
           [0.46666667, 0.04313725, 0.1254902 ],
           [0.        , 0.        , 0.55686275]])
```

在这种情况下,输出类别= 35,我有35个类别名称的列表和一个35X3值的矩阵,我假设这些矩阵是每个类别的像素的r,g,b值。 我最后的分类层的输出是<B x 35 x H x W>

这是一个常规的图像分割模型,具有(多个* conv2d)->(多个* convTranspose2d)-> 1x1卷积(具有滤镜=类数)

因此,我天真地可以编写一个函数来遍历35个滤镜,并为每个2d矩阵将与输出特征图中的像素相对应的那些值与调色板中的相应r,g,b值保存到单个张量中。 但是,如何知道原始类列表中匹配的过滤器索引?

是否有更好的方法可以做到这一点。

通常如何显示这些输出?

0 个答案:

没有答案