【问题标题】:Using SYNTHIA dataset for instance segmentation使用 SYNTHIA 数据集进行实例分割
【发布时间】:2020-07-03 10:00:13
【问题描述】:

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

How to read the label(annotation) file from Synthia Dataset?.

在数据集的 README 文件中,它说第二个通道专用于实例分割:

“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

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

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 进行实例分割?我在网上找不到任何关于此的文档,因此我们将不胜感激。

【问题讨论】:

    标签: dataset instance synthetic


    【解决方案1】:

    我遇到了您在 SYNTHIA VIDEO SEQUENCES 中描述的相同行为。

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

    自述文件:

    • GT/LABELS:包含 png 文件的文件夹(每个图像一个)。注释在两个通道中给出。第一个通道包含该像素的类别(见下表)。第二个通道包含动态对象(汽车、行人等)的实例的唯一 ID。

    【讨论】:

      猜你喜欢
      • 2018-06-30
      • 2019-04-18
      • 1970-01-01
      • 1970-01-01
      • 2022-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-19
      相关资源
      最近更新 更多