欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据标注:语义分割数据标注工具labelme安装、使用方法

程序员文章站 2024-03-19 23:01:40
...

0 引言

笔者近期在利用基于深度学习的语义分割相关技术完成公司交代的任务,由于硕士阶段研究方向并非图像语义分割,因此对该领域并不熟悉,几经周折,总算找到了对应的解决办法。这里分享笔者最近正在使用的用于语义分割训练数据的标注工具,labelme的安装及使用方法,后期会继续分享相关的算法。

1 安装 

打开Anconda Prompt,分别采用以下命令进行安装。(笔者python版本为python3.6,)

conda create --name=labelme python=3.6
source activate labelme
conda install pyqt
pip install labelme

 

2 使用

(1)安装成功后,打开labelme工具

数据标注:语义分割数据标注工具labelme安装、使用方法

 (2)点击Create Polygons即可进行标注。标注线可以鼠标右键选择直线、圆形、长方形

数据标注:语义分割数据标注工具labelme安装、使用方法

(3) 解析json文件生成ground truth。python提供的命令只能解析单个文件,笔者代码能够批量解析

import os
import cv2

def json_to_image(path):
    # path = 'H:\\0\\train\\json'  # path为json文件存放的路径
    json_file = os.listdir(path)
    for file in json_file:
        print(file)
        os.system("python D:/software/Anaconda3/Scripts/labelme_json_to_dataset.exe %s"%(path + '\\' + file))

(4)解析效果展示

 数据标注:语义分割数据标注工具labelme安装、使用方法

 

(5)整理img和label图到对于文件夹

import os
import cv2

def order_img_and_label(source_path,save_image_path,save_gt_path):
    if not os.path.exists(save_image_path):
        os.makedirs(save_image_path)
    if not os.path.exists(save_gt_path):
        os.makedirs(save_gt_path)
    label_dirs = os.listdir(source_path)
    for dir in label_dirs:
        if os.path.isdir(os.path.join(source_path,dir)):
            print(dir)
            for file in os.listdir(os.path.join(source_path,dir)):
                # print(file)
                if file == 'img.png':
                    print(file)
                    os.rename(os.path.join(os.path.join(source_path,dir),file),os.path.join(save_image_path,dir+'.png'))
                if file == 'label.png':
                    print(file)
                    os.rename(os.path.join(os.path.join(source_path, dir), file), os.path.join(save_gt_path, dir + '.png'))

 

3 完整代码

import os
import cv2

def json_to_image(path):
    # path = 'H:\\0\\train\\json'  # path为json文件存放的路径
    json_file = os.listdir(path)
    for file in json_file:
        print(file)
        os.system("python D:/software/Anaconda3/Scripts/labelme_json_to_dataset.exe %s"%(path + '\\' + file))

def order_img_and_label(source_path,save_image_path,save_gt_path):
    if not os.path.exists(save_image_path):
        os.makedirs(save_image_path)
    if not os.path.exists(save_gt_path):
        os.makedirs(save_gt_path)
    label_dirs = os.listdir(source_path)
    for dir in label_dirs:
        if os.path.isdir(os.path.join(source_path,dir)):
            print(dir)
            for file in os.listdir(os.path.join(source_path,dir)):
                # print(file)
                if file == 'img.png':
                    print(file)
                    os.rename(os.path.join(os.path.join(source_path,dir),file),os.path.join(save_image_path,dir+'.png'))
                if file == 'label.png':
                    print(file)
                    os.rename(os.path.join(os.path.join(source_path, dir), file), os.path.join(save_gt_path, dir + '.png'))



if __name__ == '__main__':
    # json_to_image('H:\\0\\train\\json')
    order_img_and_label('H:\\0\\train\\json','H:\\0\\train\\img','H:\\0\\train\\gt')