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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/u013419318/article/details/102604731

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工具

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

(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)解析效果展示

 

(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')

猜你喜欢

转载自blog.csdn.net/u013419318/article/details/102604731
今日推荐