使用SYNTHIA数据集进行实例分割



我已经使用SYNTHIA数据集(RAND-CITYSCAPES子集(进行语义分割,使用标签图像的第一个通道,如前一篇文章中所建议的:

如何从Synthia数据集中读取标签(注释(文件?。

在数据集的自述文件中,它表示第二个通道专门用于实例分割:

"GT/LABELS:包含png文件的文件夹(每张图像一个(。注释分为两个通道。第一个通道包含该像素的类别(见下表(。第二个通道包含那些动态对象(汽车、行人等(的实例的唯一ID。">

然后,我尝试使用我编写的以下代码读取实例和语义分割图:

def read_synthia_label(path):
raw_label = np.asarray(imageio.imread(path, format='PNG-FI'))
seg_label = Image.fromarray(np.uint8(raw_label[:,:,0]))
inst_label = Image.fromarray(np.uint16(raw_label[:,:,1])) 
return seg_label, inst_label

然而,当我检查标签的一致性时,我观察到同一图像中同一实例标签的分割标签不相同。即以下断言抛出错误:

with PathManager.open(instance_id_file, "rb") as f:
inst_image = np.asarray(Image.open(f), order="F")
with PathManager.open(segmentation_file, "rb") as f:
segm_image = np.asarray(Image.open(f), order="F")
flattened_inst_ids = np.unique(inst_image)
for instance_id in flattened_inst_ids:
inds_for_same_inst = np.where(instance_id == inst_image.ravel())[0]
assert(segm_image.ravel()[inds_for_same_inst[0]] == segm_image.ravel()[inds_for_same_inst[-1]]) # throws error   

我是否以错误的方式阅读了实例分段?有人使用过SYNTHIA进行分割吗?我在网上找不到任何关于这方面的文件,所以任何帮助都将不胜感激。

我经历了与您在SYNTHIA视频序列中描述的相同行为。

然而,这只是一些类的问题。对于动态对象,如README中所述(见下文(,同一图像中同一实例标签的分割标签是相同的,即一致的。

自述:

  • GT/LABELS:包含png文件的文件夹(每个图像一个(。注释分为两个通道。第一个通道包含该像素的类(请参见下表(。第二个通道包含那些动态对象(汽车、行人等(的实例的唯一ID

最新更新