当前位置:   article > 正文

语义分割数据标注、格式转换_语义分割前奏之数据标签转换

语义分割前奏之数据标签转换

1. 数据准备

1.1 labelme标注数据

labelme标注完之后会生成json格式标注文件,与图像在同一文件夹下面,如图

1.2 labelme标注格式转换(json转voc格式)

labelme官方提供了标注格式转换脚本,https://github.com/wkentaro/labelme/tree/main/examples,其中包含了检测、分类、分割等标注任务的格式转换脚本,其中,语义分割的转换脚本位于https://github.com/wkentaro/labelme/tree/main/examples/semantic_segmentation,运行如下命令即可实现json格式转换为voc标准数据集格式,

python ./labelme2voc.py data_annotated data_dataset_voc --labels labels.txt

之后将生成如下文件,

 其中,SegmentationClassPNG为mask掩码标签,直接为png的8位伪彩色图。

注:

        1. voc的分割标注直接为png的8位伪彩色图,通过调用调色板来显示色彩。

        2. PIL中有九种不同模式。分别为1,L,P,RGB,RGBA,CMYK,YCbCr,I,F。其中,模式“P”为8位彩色图像,它的每个像素用8个bit表示,其对应的彩色值是按照调色板查询出来的。

python --- 之pil图像转换的一些方式_zxyhhjs2017的博客-CSDN博客_pil_image.fromarray

1.3 CVAT标注格式转换

image-20211116193255236

 

CVAT导出的标注mask并不是voc标准格式,是真彩色RGB图像,需要进行简单转换,转换代码如下:

  1. import mmcv
  2. import os.path as osp
  3. from PIL import Image
  4. import cv2
  5. import numpy as np
  6. import os
  7. root = '/home/liuzhicai/project/mmsegmentation-0.17.0/data/bare_soil_voc'
  8. masks = 'SegmentationClass_bak'
  9. palette = [[0, 0, 0], [128, 0, 0], [0, 128, 0]]
  10. save_masks = 'SegmentationClass'
  11. if not osp.exists(osp.join(root, save_masks)):
  12. os.makedirs(osp.join(root, save_masks))
  13. for file in mmcv.scandir(osp.join(root, masks), suffix='.png'):
  14. seg_map = cv2.imread(osp.join(root, masks, file), cv2.IMREAD_GRAYSCALE)
  15. seg_img = Image.fromarray(seg_map).convert('P')
  16. seg_img.putpalette(np.array(palette, dtype=np.uint8))
  17. seg_img.save(osp.join(root, save_masks, file))

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/665796
推荐阅读
相关标签
  

闽ICP备14008679号