Neural network 如何在PASCAL VOC 12中创建标记图像作为基本事实?

Neural network 如何在PASCAL VOC 12中创建标记图像作为基本事实?,neural-network,deep-learning,keras,image-segmentation,Neural Network,Deep Learning,Keras,Image Segmentation,我想实现一个语义分割网络,并用PASCAL VOC 12对其进行训练。基本真相被编码成颜色而不是标签,我正在寻找将其转换成标签的方法。此外,我还阅读了以下链接: 还有其他用户朋友代码或算法可以解决我的问题吗?在PASCAL VOC 12中有21个类-20个对象和1个背景。这些类被编码为像素值。例如,属于背景的像素具有值0。其余的类按字母顺序从1到20编码。例如,类飞机的像素值等于1。在每个图像中,您可能有多个类。因此,如果您想获得类标签,只需使用OpenCV或PIL读取相应的groundtru

我想实现一个语义分割网络,并用PASCAL VOC 12对其进行训练。基本真相被编码成颜色而不是标签,我正在寻找将其转换成标签的方法。此外,我还阅读了以下链接:


还有其他用户朋友代码或算法可以解决我的问题吗?

在PASCAL VOC 12中有21个类-20个对象和1个背景。这些类被编码为像素值。例如,属于背景的像素具有值
0
。其余的类按字母顺序从
1
20
编码。例如,类
飞机
的像素值等于
1
。在每个图像中,您可能有多个类。因此,如果您想获得类标签,只需使用OpenCV或PIL读取相应的groundtruth图像,并找到图像中存在的不同像素值。像素值将为您提供图像中存在的对象类。在任何图像中,将不会有超过3或4个不同的类。但是,同一类可以有多个实例。

我刚刚在PASCAL VOC dataset中遇到了相同的问题。然后,我检查了Deeplab中TensorFlow代码中的函数,以加载和转换分段标签

从PIL导入图像
导入tensorflow作为tf
进口cv2
def_remove_colormap_deeplab(文件名):
“”“从批注中删除颜色映射。
Args:
filename:groundtruth注释文件名。
返回:
不带颜色贴图的注释。
"""
返回np.array(Image.open(文件名))
def_save_annotation_deeplab(批注,文件名):
“”“将批注另存为png文件。
Args:
注释:分段注释。
文件名:输出文件名。
"""
pil_image=image.fromarray(annotation.astype(dtype=np.uint8))
将tf.gfile.Open(文件名,mode='w')作为f:
pil_image.save(f,'PNG')
据我所知(但不是100%确定),
np.array(Image.open(filename))
将根据加载的枕头图像对象的属性将枕头图像对象转换为numpy数组。这里我检查了加载的Pascal VOC标签/类图像,例如,
数据集/Pascal\u VOC\u seg/VOCdevkit/VOC2012/SegmentationClass/2011\u 003078.png
,具有模式P:palette(表示8位像素,使用调色板映射到任何其他模式)。因此,由于
'P'模式
,将此PIL图像对象转换为numpy数组,将每个像素值映射为索引(即,对应于PASCAL VOC中定义的
类或标签
),映射为256个RGB值的调色板数组


您也可以查看我的详细信息。

它是@Harsh和@ccj5351的组合。VOC2012标签嵌入到图像中,这意味着您只需读入标签并识别像素值。它可以像使用
np.unique(img)
一样简单,它将返回数组中的唯一值。比如说,如果它返回4个唯一值,那么就有4个类(包括后台)。您还必须先删除colormap。看看,可能会有帮助。

您可以结帐。它只是在colormap和索引之间创建一个映射器。它从background(第一行)开始,然后遍历所有20个类(其他行)


这是为您准备的。

非常感谢,但仍然没有说明如何通过提供的代码将调色板更改为类的索引。您好,png图像有3个通道,因此在您的情况下飞机像素(x,y,0)-(x,y,1)-(x,y,2)都等于1?但事实上,每个图像都有非常不同的颜色。你能解释一下吗?thanx提前标签图像是单通道8位调色板图像。在8位调色板图像中,每个像素值都是256个RGB值数组的索引。选择PASCAL VOC中的调色板时,相邻值映射到非常不同的颜色,以便在目视检查时更容易区分类别。我认为官方的Matlab代码(可在中找到)可以帮助我们将RGB颜色转换为标签。我还发现了一个Python版本。我将colormap可视化功能更改为通过二维数组格式显示colormap。请检查一下电话号码和电话号码。