将一种热编码转换为用于图像分割的标签编码

时间:2020-08-08 03:28:35

标签: one-hot-encoding label-encoding

我的图像注释为RGB颜色。尝试转换为标签编码图像时出现问题 这是标签注释的示例: https://drive.google.com/file/d/1h1Ezc1QobHVlttF3P53yH2V8e5bMq8yL/view?usp=sharing

这是代码:

 `CLASSES = ['pipeline','person','road','house','car','cargo truck','oil truck','motorcycle'] #all 
  clasess
  label_values = [[255, 0, 0],[0, 0, 255],[255, 255, 0],[0, 255, 255],[255, 0, 255],[128, 0, 128], 
                 [128, 128, 0],[0, 0, 128]]
  classes = ['pipeline','person','road','house','car'] #select only certain classes
  class_values = [CLASSES.index(cls.lower()) for cls in classes]
  mask = cv2.cvtColor(cv2.imread('.../example_annot.png'), cv2.COLOR_BGR2RGB)
  semantic_map = []
  for colour in [label_values[index] for index in class_values ]:
      equality = np.equal(mask, colour)
      class_map = np.all(equality, axis = -1)
      semantic_map.append(class_map)
  mask2 = np.float32(np.stack(semantic_map, axis=-1))
  mask3 = np.argmax(mask2, axis = -1)
  masks = [(mask3 == v) for v in class_values]
  mask4 = np.stack(masks, axis=-1).astype('float')`
通过查看class mask2 [:,:,0],

专注于管道(原始图像中的红色)。它仍然存在,但是在mask3中,流水线对象也消失了,如mask4 [:,:,0]

所示。

任何人都可以解释吗?在这种情况下,我不了解np.argmax的行为,该行为会返回错误的结果(管道对象消失了)

谢谢

0 个答案:

没有答案