带标签的图像应如何进行语义分割?

时间:2019-03-02 07:10:30

标签: rgb file-extension grayscale labeling semantic-segmentation

从下面的解释中可以理解,用于语义分割的图像有两种类型,即输入和掩码。遮罩图像是包含'label'像素值的图像,该值可以是一些整数(ROAD为0,TREE为1或ROAD为(100,100,100),TREE为(0,255,0)的整数)。< / p>

  

语义分割描述了将图像的每个像素与类别标签(例如花朵,人物,道路,天空,海洋或汽车)相关联的过程。   https://se.mathworks.com/help/vision/ug/semantic-segmentation-basics.html

根据我的研究,用于语义分割的标记图像类型很多。连同不同的扩展名(.png .jpg .gif .bmp ...),其中一些是 RGB标记(3通道)图像,有些是 GRAY(1通道) 图片。下面有两个示例可以更好地解释这种情况。

  1. 带有扩展名'.png'的RGB

      

    https://github.com/divamgupta/image-segmentation-keras#user-content-preparing-the-data-for-training

  2. GRAY标度,带有扩展名“ .gif”

      

    https://www.kaggle.com/kmader/vgg16-u-net-on-carvana/#data

如果我的图像已标记为GREY标度,则基本上可以通过将此GREY通道的每个值复制到3个RGB通道来使其变为RGB。相反,通过平均RGB通道,我可以使标记的图像成为GREY比例。有什么区别?哪个更适合哪个任务(二进制分段或其他)?

以我为例,我有 4个类,并尝试进行多类语义分割。 I've already labelled about 600 images on DataTurks。这就是说,我只有对象的多边形,而且我必须自己制作标记的图像。现在,输入图像的扩展名和遮罩图像的扩展名分别为'.jpg'和'.png'。我应如何标记图像以及扩展名?

1 个答案:

答案 0 :(得分:0)

您可以将蒙版另存为灰度png图像,其值在与像素值的类(树,灌木等)相对应的每个位置为0、1、2、3(因为有4个类)之一在输入图像中。

执行此操作可以验证是否正确生成了遮罩图像。

import cv2
import numpy as np
lbl_img = '<path_to_mask_image>'
mask = cv2.imread(lbl_img, 0)
print(np.unique(mask))
  

[0 1 2 3]#这将根据蒙版图像中存在的类的数量而变化